1、界面正中部分为图片显示部分,界面中下方为系列功能切换选择组。设计完成后运行的软件界面如下: 图二 与图一先比,运行后的界面更为简洁。利用“编辑”菜单可调出相应的功能键。例如:4、具体设计现介绍各个功能模块的功能与实现。4.1菜单栏的设计。通过Menu Editor创建如下菜单,通过以下菜单来控制显示或隐藏功能按键以“编辑”菜单中“图像变形”中的“图像翻转”为例说明实现用户界面功能键“图像翻转”的显示与隐藏。实现该功能的程序段如下:function tuxiangfanzhuan_Callback(hObject, eventdata, handles)% hObject handle to t
2、uxiangfanzhuan (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)set(handles.uipanel7,Visible,on);if strcmp(get(gcbo, Checked),) set(handles.uipanel7, set(gcbo, , offelse end该段程序通过设置“图像翻转”功能键对应的句柄uipanel7中的“Visible
3、”属性的开关来实现该功能键的显示隐藏。其他同理。4.2图像的读取和保存。 (1)利用“文件”菜单中的“打开”、“保存为”分别实现图片的读取与保存。 利用matlab中 “ uigetfile”、“imread” “imshow”实现图像文件的读取与显示:function open(hObject, eventdata, handles)% hObject handle to openfile (see GCBO)=uigetfile(*.jpg;*.bmp*.tif*.*,载入图像if isequal()|isequal(pathname,0) errordlg(没有选中文件出错 return
4、; file=pathname,; global S %设置一个全局变量S,保存初始图像路径,以便之后的还原操作 S=file; x=imread(file); set(handles.axes1,HandleVisibilityON axes(handles.axes1); imshow(x);OFF axes(handles.axes2); handles.img=x; guidata(hObject,handles);程序关键部分:通过=uigetfile()选择相应路径打开的图像;通过file=pathname,; x=imread(file); 读取选中的图像;最后,通过imshow
5、(x)在显示区域上显示图像。(2)图像保存。利用“uiputfile”、“imwrite”函数实现图像文件的保存。function save_Callback(hObject, eventdata, handles)% hObject handle to save (see GCBO) s ,s=uiputfile(保存图像文件untitled.jpg if isequal(s,0,0) ss ,s; imwrite(handles.img,s); else msgbox(你按了取消键保存失败 end通s ,s=uiputfile()选择图像文件保存的路径与格式;然后,通过ss ,s;imwr
6、ite(handles.img,s); 实现对图像的保存。(3)程序的退出。 function exit_Callback(hObject, eventdata, handles)% hObject handle to exit (see GCBO)clc;close all;close(gcf);clear;4.3对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。 运行程序后,通过“编辑”菜单中的“常用处理”选中“亮度调节”在显示出相应的功能键后,通过载入读取图像,比并进行处理,效果如下:亮度处理前: 亮度处理后:实现程序段如下:% - Executes on button p
7、ress in radiobutton12.function radiobutton12_Callback(hObject, eventdata, handles)% hObject handle to radiobutton12 (see GCBO)% Hint: get(hObject,Value) returns toggle state of radiobutton12global Taxes(handles.axes2);T=getimage; prompt=调整倍数; defans=1 p=inputdlg(prompt,input,1,defans); p1=str2num(p1
8、); y=imadjust(handles.img, , ,p1); %亮度调节 imshow(y); handles.img=y;对比度处理前:对比度处理后(增强3倍):对比度减弱1.5倍后:function uipanel10_SelectionChangeFcn(hObject, eventdata, handles)% hObject handle to uipanel10 (see GCBO)str=get(hObject,stringswitch str case增强 T=getimage;输入参数: f=immultiply(handles.img,p1); imshow(f);
9、 handles.img=f;减弱 f=imdivide(handles.img,p1); 该程序段主要通过 f=immultiply(handles.img,p1);分别实现图像对比度的增强与减弱。 44 用鼠标选取图像感兴趣区域,显示和保存该选择区域。 通过imcrop(x)函数来实现对图片某一区域的截取,截取的图片在右框中显示。结合“保存为”,可把截图处理后的图片保存在指定路径。% - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hO
10、bject handle to pushbutton1 (see GCBO)x=imcrop(handles.img); %截图imshow(x);handles.img=x;guidata(hObject,handles);4.5 图像转化为灰度图像。由于在matlab中较多的图像处理函数支持对灰度图像进行处理,故对图像进行灰度转化十分必要。可利用rgb2gray(X)函数对其他图像进行灰度图像的转化。转化实例如下:% - Executes on button press in radiobutton16.function radiobutton16_Callback(hObject, ev
11、entdata, handles)% hObject handle to radiobutton16 (see GCBO) returns toggle state of radiobutton16 global Tx=rgb2gray(handles.img); %RGB4.6对图像进行放大和缩小整数倍的操作。通过imresize(X,n,mode)函数对图像X进行放大或者缩小。N放大缩小倍数,mode为采用的方式。通过处理后可发现保存的图片的比原图放大了(缩小了)。实现的程序段如下:function uipanel9_SelectionChangeFcn(hObject, eventdat
12、a, handles)% hObject handle to uipanel9 (see GCBO)最近邻插值2 f=imresize(handles.img,p1,nearest双线性插值bilinear4.7图像直方图统计和直方图均衡。 (1)通过histeq(X)函数实现直方图均衡。因为此函数只能对灰度图像进行直方图均衡。故应先将彩图转为灰度图像。在上一步的基础上对第二幅图进行直方图均衡:直方图均衡实现程序段如下:% - Executes on button press in pushbutton7.function pushbutton7_Callback(hObject, event
13、data, handles)% hObject handle to pushbutton7 (see GCBO)h=histeq(handles.img);imshow(h);handles.img=h;关键部分:通过 h=histeq(handles.img)进行直方图均衡 (2)直方图统计。通过利用imhist(X)函数来实现直方图统计。% - Executes on button press in pushbutton8.function pushbutton8_Callback(hObject, eventdata, handles)% hObject handle to pushbu
14、tton8 (see GCBO)x=imhist(handles.img); %直方图统计x1=x(1:10:256);horz=1:256;bar(horz,x1);axis(0 255 0 15000);set(handles.axes2,xtick,0:50:255);ytick2000:15000);注意:横纵坐标的范围应选取适当,否则,统计图表有可能超出范围。4.8加入各种噪声,并通过几种滤波算法实现去噪。(1)加入噪声。通过imnoise(I,type,parameters)来加入各种噪声。加入椒盐噪声加入高斯噪声:加入乘性噪声:function uipanel4_Selectio
15、nChangeFcn(hObject, eventdata, handles)% hObject handle to uipanel4 (see GCBO) case 椒盐噪声数日椒盐噪声参数1:0.02 f=imnoise(handles.img,salt & pepper,p1);高斯噪声输入高斯噪声1:输入高斯噪声20 p2=str2num(p2);gaussian,p1,p2);乘性噪声输入乘性噪声1:speckle(2)滤除噪声(椒盐噪声)。滤波前中值滤波后线性滤波后自适应滤波后function uipanel5_SelectionChangeFcn(hObject, eventdata, handles) %图像滤波% hObject handle to uipanel5 (see GCBO)中值滤波 k=medfilt2(handles.img); imshow(k); handles.img=k;线性滤波 h=1 1 1;1 1 1;1 1 1; H=h/9; i=double(handles.img); k=convn(i,h); imshow(k,);自适应滤波 k=wiener2(handles
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2