基于MATLAB的数字图像处理仿真平台

本文档详细介绍了如何使用MATLAB设计和实现一个数字图像处理仿真平台,包括图像的打开、保存、直方图统计、图像增强、空间域平滑算法等操作。此外,还涉及到直方图均衡化、对比度展宽和多种滤波方法的应用,并给出了部分代码示例。
摘要由CSDN通过智能技术生成

基于MATLAB的数字图像处理仿真平台

一、课题实现功能

学习MATLAB GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop 。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。

整个系统要完成的基本功能大致如下:

  1. 能对图像文件(bmp、 jpg、 tiff、 gif等)进行打开、保存、另存、打印、退出等功能操作;
  2. 数字图像的统计信息功能:直方图的统计及绘制;
  3. 数字图像的增强处理功能:
  4. 直方图的均衡化
  5. 对比度展宽
  6. 动态范围调整
  7. 空间域平滑算法的各种算法(如均值滤波、中值滤波、边界保持的滤波方法等)

4、数字图像由RGB转换成HIS空间并分别显示其分量图。

5、数字图像分割功能:


v2-80d76f8ab825b7f20e43468a6a194f43_b.jpg

v2-703f06f7565d58ca02b9afb1a5358478_b.jpg

v2-0e25044134a372f8e9c353132be9c05b_b.jpg



六、具体设计

  1. 文件


6.1.1、打开

为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件,由于这个GUI程序的操作对象是图像文件。

Uigetfile函数的调用格式为[name,path]=yigetfile(…), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“ name”和“path”中。如果按下取消按钮或是发生错误,则返回值是0。 根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.image。

6.1.2、保存

同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。

6.1.4、退出

退出比较简单,程序如下所示:

clc;

close all;

close(gcf);

6.1.3、打印

打印功能没能实现,将它设置为不可使用,可用如下代码实现

set(handles.print, 'Enable','off' ); %放在open_callback函数末尾

set(handles.print, 'Enable','off' );%放在two_OpeningFcn中

  1. 直方图统计


6.2.1、R直方图

由于RGB图像是三维图像,所以图像数据是一个三维数组,为了显示R直方图像,把三维图像降为二维,且是当最后一个参数为1时是R直方图:

x=imhist(handles.image(:,:,1)); %当然也可以选择(:,:,2) 或(:,:,3)

imshow(y);


处理前后图片效果如下:



6.2.2、G直方图

G直方图与R直方图的程序差不多只需将数值为1的R直方图变成2即可成为G直方图

x=imhist(handles.image(:,:,2));

6.2.3、B直方图

同理可得B直方图

x=imhist(handles.image(:,:,3));


RGB三种直方图统计图如下:

v2-e739532dbb01cda9c63be8f79feaff41_b.jpg

v2-cc3d007094acaad8c097b48edc1360b0_b.jpg

原图 R直方图


v2-8462be13c2d0d6dca883f0ecee19990f_b.jpg


v2-c0d9468dc965fca09f4ed227458897cd_b.jpg











G直方图 B直方图




  1. 图像增强处理


6.3.1、直方图均衡化

在balance_Callback回退函数中实现直方图均衡化

每个回退函数中都要获取图片,上面的RGB直方图也一样需获取打开的图片。打开图片的为以下程序代码:

set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

直方图均衡化是判断是否为灰度图。用函数isrgb了来判断,不是灰度则将其转化,否则就直接用函数:

histeq(handles.image)% handles.image是获取的图片

来直方图均衡化处理图片


图片前后效果如下:




v2-e739532dbb01cda9c63be8f79feaff41_b.jpg

v2-cdda98843af85fa8953b123fe8f0cd0f_b.jpg


6.3.2、 对比度展宽

对图像的对比度展宽刻可自己编写算法来处理,同样的,,处理结果如图:

v2-4e781b149da51cc8f9d60a03432c19f5_b.jpg


6.3.3、动态范围调整

共图像处理功能未能实现,程序中已给出处理其图像的代码,但有错误,不能找出其错位,将其正确的处理,

原因是:nw=1./(b-a).*(h-a.*ones(sx,sy));

Error:Matrix dimensions must agree

也查过资料修改该语句,有的资料说是乘除和幂方要改成点乘点除,点幂方,这个是合理,但是改正后仍然有错ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值