欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

图像增强的GUI设计

程序员文章站 2022-04-12 16:27:59
...

图像增强的GUI设计

读入图像

global im
[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif'},'choose a picture','C:\Users\洋仔\Desktop\pic')   %指定打开的文件夹位置
str=[pathname,filename];

im=imread(str);
axes(handles.axes1);
imshow(im);

加入噪声–椒盐

global im im_noise
im_noise=imnoise(im,'salt & pepper',0.05);%加入椒盐噪声
axes(handles.axes2);
imshow(im_noise)

中值滤波

global im im_noise im_filter
n=size(size(im_noise));
if n(1,2)==2    %灰度图像
    im_filter=medfilt2(im_noise,[3 2]); 
else            %RGB图像的处理
    im_filter1=medfilt2(im_noise(:,:,1),[3 2]);
    im_filter2=medfilt2(im_noise(:,:,2),[3 2]);
    im_filter3=medfilt2(im_noise(:,:,3),[3 2]);
    im_filter=cat(3,im_filter1,im_filter2,im_filter3);
end
axes(handles.axes2);
imshow(im_filter)

说明:medfilt2语法
在matlab中,medfilt2函数用于执行二维中值滤波,使用方法如下:
B = medfilt2(A, [m n])
B = medfilt2(A)
B = medfilt2(A, ’indexed’, ...)
其中B是中值滤波后的图象矩阵,A是原图矩阵,[m n]表示邻域块的大小,默认值为[3 3]。

中值滤波是图像处理中的一个常用步骤,它对于斑点噪声(en:speckle noise)和椒盐噪声(en:salt-and-pepper noise)来说尤其有用。保存边缘的特性使它在不希望出现边缘模糊的场合也很有用。当要求在降低噪声的同时要求保持边缘,中值滤波较卷积有更好的效果。

保存图像

利用uigetdir返回图像的位置,imwrite可以将图片写入图形文件中

global im im_noise im_filter
[Path] = uigetdir('','保存增强后的图像'); % 修正后的图像路劲
imwrite(uint8(im_filter),strcat(Path,'\','pic_correct.bmp'),'bmp');

或者也可以使用uiputfile和imwrite

[FileName,PathName] = uiputfile({'*.jpg','JPEG(*.jpg)';...
                             '*.bmp','Bitmap(*.bmp)';...
                             '*.gif','GIF(*.gif)';...
                             '*.*',  'All Files (*.*)'},...
                             'Save Picture','Untitled');
h=getframe(handles.axes2);
imwrite(h.cdata,[PathName,FileName]);
相关标签: MATLAB GUI