基于matlab的简单图像处理Word文件下载.docx
《基于matlab的简单图像处理Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于matlab的简单图像处理Word文件下载.docx(38页珍藏版)》请在冰点文库上搜索。
![基于matlab的简单图像处理Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/6/d8dac563-2389-4045-a5e9-edb3f0a04cef/d8dac563-2389-4045-a5e9-edb3f0a04cef1.gif)
10、骨架化
11、噪声消除
(1)算术均值滤波消除噪声
(2)几何均值滤波消除噪声
(3)谐波均值滤波消除噪声(4)中值滤波消除噪声(5)中点滤波消除噪声
(6)修正的阿尔法均值滤波消除噪声
三、总体设计如图1
图1
四、具体设计
4.1MenuEditor如图2
图2
4.2图像的读取与保存
(1)利用“文件”菜单中的“打开”、“保存”分别实现图像的读取与保存。
1)图像的读取如图3
图3
2)图像的保存如图4
图4
4.3直接灰度变换
(1)灰度线性变换
1)负相变换如图5
图5
1)指数变换如图6
图6
4.3噪声
(1)高斯噪声如图7
图7
4.4编辑
(1)灰度
(2)亮度如图8
图8
(3)放大
1)最近邻插值法如图9
图9
(4)缩小
2)双线性插值法如图10
图10
4.5位置变换
(1)平移如图11
图11
(2)裁剪如图12
图12
5)任意角度旋转如图13
图13
(4)错切变换如图14
图14
(5)镜像变换如图15
图15
4.6直方图统计
(1)直方图均衡化如图16
图16
4.7灰度图像处理
(1)二值化如图17
图17
(2)图像腐蚀如图18
图18
(3)创建索引图像如图19
图19
4.8频谱分析
(1)频谱图如图20
图20
(2)高斯高通滤波器如图21
如图21
(3)巴特沃斯低通滤波器如图22
图21
4.9提取边界如图22
图22
4.10骨架化如图23
图23
4.11图像复原
(1)
算术均值消除噪声如图24
如图24
图24
(2)几何均值滤波消除噪声如图25
图25
(3)谐波均值滤波消除噪声如图26
图26
(4)中值滤波消除噪声如图27
图27
(5)中点滤波消除噪声如图28
图28
(6)修正的阿尔法均值滤波消除噪声如图29
图29
总结:
在这个系统中,只是简单的实现一些数字图像处理的方法,一些功能还没实现比如:
图像的分割、霍夫变换等,还有界面也存在一些问题,是本来在设计的时候没有考虑清楚的,在经过老师的指点之后,也发现了一些问题,经过自己后来的修改也改正了一些错误。
在这个系统中,由于本人前期需求分析做得不是特别完整,导致有些功能只能实现灰度图像,有些功能只能实现彩色图像,这可能会给不熟悉的用户在使用本系统的时候会出现错误,但是今后会通过自己的学习,增加自己的知识,完善该系统。
参考文献:
[1].高成.Matlab图像处理与应用[M].北京:
国防工业出版社,2007.4(第2版).
[2].蒙以正.Matlab5.X应用与技术[M].北京:
科学出版社,1999.11(第2版).
[3].张学敏.Matlab基础及应用[M].北京:
中国电力出版社,2011.12(第2版).
[4].张德丰.Matlab数字图像处理[M].北京:
人民邮电出版社,2009.10.
[5].刘保柱.Matlab7.0从入门到精通[M].北京:
人民邮电出版社,2010.5(修订版).
附录:
functionvarargout=untitled3(varargin)
gui_Singleton=1;
gui_State=struct('
gui_Name'
mfilename,...
'
gui_Singleton'
gui_Singleton,...
gui_OpeningFcn'
@untitled3_OpeningFcn,...
gui_OutputFcn'
@untitled3_OutputFcn,...
gui_LayoutFcn'
[],...
gui_Callback'
[]);
ifnargin&
&
ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
functionuntitled3_OpeningFcn(hObject,eventdata,handles,varargin)
handles.output=hObject;
guidata(hObject,handles);
functionvarargout=untitled3_OutputFcn(hObject,eventdata,handles)
varargout{1}=handles.output;
functionm_file_Callback(hObject,eventdata,handles)
functionm_file_open_Callback(hObject,eventdata,handles)
[name,path]=uigetfile({'
*.bmp'
},'
载入图像'
);
ifisequal(name,0)|isequal(path,0)
errordlg('
没有选中文件'
'
出错'
return;
x=imread([path,name]);
axes(handles.axes1);
imshow(x);
handles.img=x;
handles.noise_img=x;
guidata(hObject,handles)
%-------------------------------------------------------------
functionm_file_save_Callback(hObject,eventdata,handles)
[filename,pathname]=uiputfile('
图片保存为'
ifisequal([filename,pathname],[0,0])
没有保存'
file=strcat(pathname,filename);
(handles.axes2);
i=getimage(gca);
imwrite(i,file);
functionm_file_exit_Callback(hObject,eventdata,handles)
clc;
closeall;
close(gcf);
functionUntitled_1_Callback(hObject,eventdata,handles)
functionUntitled_2_Callback(hObject,eventdata,handles)
functionUntitled_3_Callback(hObject,eventdata,handles)
functionUntitled_4_Callback(hObject,eventdata,handles)
functionUntitled_10_Callback(hObject,eventdata,handles)
functionUntitled_26_Callback(hObject,eventdata,handles)
functionpingyi_Callback(hObject,eventdata,handles)
axes(handles.axes2);
a=handles.img;
H=size(a);
a_x=50;
a_y=50;
a_move(a_y+1:
H
(1),a_x+1:
H
(2),1:
H(3))=a(1:
H
(1)-a_x,1:
H
(2)-a_x,1:
H(3));
imshow(a_move);
functioncaijian_Callback(hObject,eventdata,handles)
I=imcrop(handles.img,[80605050]);
imshow(I);
functionUntitled_32_Callback(hObject,eventdata,handles)
functionUntitled_33_Callback(hObject,eventdata,handles)
functioncuoqie_Callback(hObject,eventdata,handles)
A=handles.img;
A=double(A);
h=size(A);
I=zeros(h
(1)+round(h
(2)*tan(pi/6)),h
(2),h(3));
form=1:
h
(1)
forn=1:
h
(2)
I(m+round(n*tan(pi/6)),n,1:
h(3))=A(m,n,1:
h(3));
end
I1=uint8(I);
imshow(I1);
functionjingxiang_Callback(hObject,eventdata,handles)
A_fliplr(1:
h
(1),1:
h
(2),1:
h(3))=A(h
(1):
-1:
1,h
(2):
1,1:
imshow(A_fliplr);
functionhuidu_Callback(hObject,eventdata,handles)
ifisrgb(handles.img)
y=rgb2gray(handles.img);
%RGB
imshow(y);
msgbox('
这已经是灰度图像'
转换失败'
functionliangdu_Callback(hObject,eventdata,handles)
prompt={'
输入参数1'
输入参数2'
输入gamma'
};
defans={'
[00.7]'
[01]'
1'
p=inputdlg(prompt,'
输入参数'
1,defans);
p1=str2num(p{1});
p2=str2num(p{2});
p3=str2num(p{3});
gamma=p3;
x=(handles.img);
y=imadjust(x,p1,p2,gamma);
functionjietu_Callback(hObject,eventdata,handles)
set(handles.axes2,'
HandleVisibility'
ON'
y=imcrop(handles.img,[80605050]);
handles.Timage=y;
functionUntitled_22_Callback(hObject,eventdata,handles)
functionUntitled_27_Callback(hObject,eventdata,handles)
functiongaosi_Callback(hObject,eventdata,handles)
输入参数1:
'
0'
0.02'
p2=str2num(p{2});
y=imnoise(handles.img,'
gaussian'
p1,p2);
handles.noise_img=y;
guidata(hObject,handles);
functionjiaoyan_Callback(hObject,eventdata,handles)
defans={'
axes(handles.axes2);
y=imnoise(x,'
salt&
pepper'
p1);
functionjunyunfenbu_Callback(hObject,eventdata,handles)
%对话框的设置,用户输入的是字符串
%缺省值
%字符串转化为数值
speckle'
functionsuiji_Callback(hObject,eventdata,handles)
snoise=0.1*randn(size(x));
y=imadd(x,im2uint8(snoise));
functionbosong_Callback(hObject,eventdata,handles)
poisson'
functionduishu_Callback(hObject,eventdata,handles)
Image_in=(handles.img);
[m,n]=size(Image_in);
forc=38:
2:
50%c的值分别取:
[38404244464850]
fori=1:
m
forj=1:
nImage_out(i,j)=c*log(1+double(Image_in(i,j)));
%利用公式s=c*log(1+f(x,y))
endImage_out=uint8(Image_out);
%转换图像数据类型
imshow(Image_out);
functionzhishu_Callback(hObject,eventdata,handles)
functionfuxiang_Callback(hObject,eventdata,handles)
image_in=(handles.img);
[m,n]=size(image_in);
max_image=max(max(image_in));
min_image=min(min(image_in));
nimage_out(i,j)=max_image-double(image_in(i,j));
image_out=uint8(image_out);
imshow(image_out);
functionfenduan_Callback(hObject,eventdata,handles)
image_in=(handles.img);
[m,n]=size(image_in);
max_image=max(max(image_in));
min_image=min(min(image_in));
a=50;
b=60;
c=235;
d=245;
n
ifimage_in(i,j)>
=0&
image_in(i,j)<
=a;
image_out(i,j)=a/b*image_in(i,j);
else
=c&
=d;
image_out(i,j)=((d-b)/(c-a))*(image_in(i,j)-a)+c;
elseimage_out(i,j)=((c-a)/(d-b))*(double(image_in(i,j)-b))+a;
image_out=uint8(image_out);
functionquanyu_Callback(hObject,eventdata,handles)
I=(handles.img);
[m,n]=size(I);
max_I=max(max(I));
min_I=min(min(I));
fori=1:
if(I(i,j)<
10)
I1(i,j)=4;
elseif(I(i,j)>
210)
I1(i,j)=230;
elseI1(i,j)=(230-4)/(210-10)*(I(i,j)-min_I)+4;
functionquezhi_Callback(hObject,eventdata,handles)
d=double(I);
a=80.0;
a1=0.0;
b1=200.0;
n1=find(i>
a);
n2=find(i<
d2=d;
d2(n1)=b1;
d2(n2)=a1;
i2=uint8(d2);
imshow(i2);
functionsuoxiaozuijin_Callback(hObject,eventdata,handles)
输入放大倍数:
0.2'
输入放大倍数'
y=imresize(handles.img,p1,'
nearest'
%最近邻插值法缩小
functionsuoxiaoshuangxianing_Callback(hObject,eventdata,handles)
bilinear'
functionlincha_Callback(hObject,eventdata,handles)
%hObjecthandletolincha(see
2'
%最近邻插值法放大
%------------------------------
functionshuangchazhi_Callback(hObject,eventdata,handles)