在远方作文800字:图像处理函数及其用法

来源:百度文库 编辑:中财网 时间:2024/04/28 17:01:00

需要用到的图像处理函数及其用法
(1)fspecial函数
用于实现线形滤波,创建预定义过滤器,用法为h=fspecial(type,parameters)。
(2)medfilt2函数
用于实现二维中值滤波,用法为h = medfilt2(I)。
(3)edge函数
用于实现边缘检测,用法为BW=edge(I,'sobel'),用sobel算子实现边缘检测。
(4)imadjust函数
用于调整图像灰度值或颜色映像表,增加图像的对比度。用法为
J = imadjust(I,[low_in high_in],[low_out high_out],gamma)。
(5)imdilate函数
用于对图像实现形态学中的膨胀操作,用法为BW=imdilate(I,se)。
(6)imderode函数
用于对图像实现形态学中的腐蚀操作,用法为 BW=imderode(I,se)。
(7)imnoise函数
用于给图像增加指定类型的噪声,用法为 imnoise(I,'salt & pepper',0.02)。
(8)imrotate函数
用于对图像执行旋转,用法为imrotate(I,angle,method,'crop')。
(9)warp函数
用于实现图像的纹理映射,用法为warp(x,y,z,I)。
2.3 程序设计中遇到的问题及解决方法
在完成了对整个演示程序的构思及了解相关图像处理函数后,接下来就是设计程序了。在设计中遇到如下的问题,通过参阅资料及对比分析得到解决。
(1)需要将原始图像和处理后的图像同时在不同的位置显示,以便进行对比。
这时,需要在界面上设计两个二维坐标轴,在显示图形时,应提前对显示的区域进行义。
I=imread('lena.bmp'); % 读取默认的图像
axes(handles.axes1); % 在指定的坐标显示图像
imshow(I);
(2)为选择图像下拉菜单和选择方法下拉菜单设定相应的响应事件,并且每选择一种处理方法,需要将对应的说明同时在文本框中显示。
这时,在每个图像处理分支程序末尾修改文本框的String属性的值,具体程序为:
set(handles.instruct_edit,'string',’处理过程说明’)
(3)每次处理完毕后选择一个新的图形时,窗口仍然显示的是上次处理后的图像,需要将处理后的图像清除。
这时,可在处理结束后对相应区域初始化,使其不显示任何图像。实现方法为:
axes(handles.axes2);
imshow([]);
(4)用下拉菜单的方法选择图像虽然方便,但缺乏与用户的交互性,需要从文件夹中打开任意一幅灰度图像进行处理。
这时,可增加一个从文件打开图像的对话框,具体实现如下:
[filename, pathname] = uigetfile({'*.tif';'*.bmp'},'File Selector');
(5)在默认情况下, MATLAB中打开一个图形窗口时将在屏幕右上方显示,这显然不行,演示程序需要在任何分辨率下都在屏幕中间显示。
这时需要依据屏幕分辨率修改图形窗口的position属性,实现过程如下:
% 得到屏幕位置及其大小
screen_size=get(0,'ScreenSize');
% 得到图形窗口的位置及大小
figure_size=get(hObject,'position');
% 设置图形窗口的位置,使其在屏幕中间显示
figure_size(1)=(screen_size(3)-figure_size(3))/2;
figure_size(2)=(screen_size(4)-figure_size(4))/2;
% 设置图形窗口的位置为改变后的数值
set(hObject,'position',figure_size);

 

线性滤波的流程图

将真彩色图像读入,用imread函数,格式是i=imread(‘D:\image\image.jpg')。读入图像后要将图像进行灰度转换,用rgb2gray函数进行转换,格式是j=rgb2gray(i)。如果图像的质量比较好时,可以给灰度图像增加噪声,用imnoise函数,如加入高斯噪声,其格式为j=imnoise(i,‘gaussian',0,0.005)。然后对加噪声后的图像进行去噪,用均值滤波的格式h=fspecial(‘average',[5 5]);j1=filer2(h,j),其显示结果如图3-2所示;用高斯滤波去噪的格式h=fspecial(‘gaussian’,[5 5]);j1=filter2(h,j),其显示结果如图3-3所示。部分程序为:h=fspecial('average',[5 5]);j1=filter2(h,j);subplot(223);imshow(j1);tilte(‘average’,[5 5])。高斯滤波时把“average”改成“gaussian”就行了

 

中值滤波的流程图

流程图说明:将真彩色图像读入,用imread函数;因为中值滤波处理的类型有uint8型的,所以要将图像转换成灰度值图像,用rgb2gray函数进行转换;为使图像去掉噪声后的效果比较明显,可以给灰度值图像加入噪声,用imnoise函数;然后运用medfilt函数进行图像的去噪,其格式为k=medfilt2(j,[5 5]),其显示结果,如图3-5所示。部分程序如下:

k=medfilt2(j,[5 5]); %也可以把[5 5]改成[7 7]等等

/subplot(223);/imshow(k);/title(‘medfilt 5*5 image’)。