版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第11章基于MATLABAppDesigner的圖像處理系統(tǒng)本章要點(diǎn)MATLAB集成了功能強(qiáng)大的圖像處理工具箱,大部分圖像處理的基本算法都可以通過該工具箱實(shí)現(xiàn)。本章將介紹如何利用MATLABAppDesigner設(shè)計(jì)實(shí)現(xiàn)圖像處理系統(tǒng),包括圖像幾何運(yùn)算界面、圖像形態(tài)學(xué)運(yùn)算界面、圖像增強(qiáng)界面和圖像邊緣檢測界面,實(shí)現(xiàn)交互控制。
本章要點(diǎn):⑴圖像處理總界面設(shè)計(jì)。⑵圖像幾何運(yùn)算。⑶圖像形態(tài)學(xué)運(yùn)算。⑷數(shù)字圖像增強(qiáng)。⑸圖像邊緣檢測。
學(xué)習(xí)目標(biāo):⑴了解圖形幾何運(yùn)算、形態(tài)學(xué)運(yùn)算、圖像增強(qiáng)和圖像邊緣檢測基本知識。⑵掌握圖像縮放、旋轉(zhuǎn)和剪裁函數(shù)。⑶掌握圖像腐蝕、膨脹、開運(yùn)算和閉運(yùn)算函數(shù)。⑷掌握圖像增強(qiáng)和圖像邊緣檢測常見算法的函數(shù)調(diào)用格式。11.1圖像處理總界面設(shè)計(jì)
圖像處理系統(tǒng)共分為4個模塊,包括圖像幾何運(yùn)算、圖像形態(tài)學(xué)運(yùn)算、圖像增強(qiáng)和圖像邊緣檢測。圖像處理總界面的主要功能是能夠跳轉(zhuǎn)到任意一個模塊中,故采用4個圖像組件實(shí)現(xiàn)模塊的跳轉(zhuǎn),同時菜單欄也可實(shí)現(xiàn)相同功能,界面布局設(shè)計(jì)如圖11-1所示,菜單欄設(shè)置如圖11-2所示。圖11-1
主界面布局
圖11-2
主界面菜單項(xiàng)設(shè)置11.1圖像處理總界面設(shè)計(jì)
通過對菜單項(xiàng)和圖像組件添加回調(diào)函數(shù)的方式,實(shí)現(xiàn)界面的跳轉(zhuǎn)。打開新的MATLABAppDesigner界面以及關(guān)閉當(dāng)前界面的程序命令如下:rune11_3;%打開命名為e11_3的界面close(app.UIFigure);%關(guān)閉當(dāng)前界面依次對4個圖像組件添加回調(diào)函數(shù),即打開圖像所對應(yīng)的模塊,同時關(guān)閉當(dāng)前界面,也就是關(guān)閉主界面。并在各個子界面設(shè)置菜單項(xiàng),實(shí)現(xiàn)從子界面跳轉(zhuǎn)到主界面的功能。11.2圖像幾何運(yùn)算11.2.1菜單選項(xiàng)設(shè)計(jì)
幾何運(yùn)算是指改變圖像中物體對象之間的空間關(guān)系,從變換性質(zhì)來分,幾何變換可以分為圖像位置變換、形狀變換和復(fù)合變換。圖像形狀變換包括圖像的放大和縮小,圖像的位置變換包括圖像的旋轉(zhuǎn)和平移等。本節(jié)將介紹如何利用MATLABAppDesigner設(shè)計(jì)實(shí)現(xiàn)圖像縮放、圖像旋轉(zhuǎn)和圖像剪裁。菜單項(xiàng)包括:讀取圖像、保存和退出。1.讀取圖像右擊【讀取圖像】菜單,選擇【回調(diào)】,選擇【添加Menu_3Selected回調(diào)】,在光標(biāo)定位處添加如下程序命令:globalimg[file,path]=uigetfile('*.jpg');ifisequal(file,0)disp('UserselectedCancel');elsedisp(['Userselected',fullfile(path,file)]);img=imread(fullfile(path,file));
%讀取圖像imshow(img,'Parent',app.UIAxes)
%將圖像顯示在指定坐標(biāo)軸end11.2圖像幾何運(yùn)算11.2.1菜單選項(xiàng)設(shè)計(jì)單擊【讀取圖像】菜單,運(yùn)行結(jié)果如圖11-3所示。圖11-3
讀取圖像運(yùn)行界面11.2圖像幾何運(yùn)算11.2.1菜單選項(xiàng)設(shè)計(jì)2.保存右擊【保存】菜單,選擇【回調(diào)】,選擇【添加Menu_4Selected回調(diào)】,在光標(biāo)定位處添加如下程序命令:[FileName,PathName]=uiputfile({'*.jpg','JPEG(*.jpg)';...'*.bmp','Bitmap(*.bmp)';...'*.gif','GIF(*.gif)';...'*.*','AllFiles(*.*)'},...'SavePicture','Untitled');ifFileName==0return;elseexportgraphics(app.UIAxes_2,[PathNameFileName],'resolution',300)end11.2圖像幾何運(yùn)算11.2.1菜單選項(xiàng)設(shè)計(jì)單擊【保存】菜單,運(yùn)行結(jié)果如圖11-4所示。圖11-4
保存圖像運(yùn)行界面11.2圖像幾何運(yùn)算11.2.1菜單選項(xiàng)設(shè)計(jì)3.退出右擊【退出】菜單,選擇【回調(diào)】,選擇【添加Menu_2Selected回調(diào)】,在光標(biāo)定位處添加如下程序命令:close(app.UIFigure);單擊【退出】菜單,將退出MATLABAppDesigner設(shè)計(jì)系統(tǒng)。4.子界面的返回主界面菜單右擊【返回主界面】菜單,選擇【回調(diào)】,選擇【添加Menu_5Selected回調(diào)】,在光標(biāo)定位處添加如下程序命令:runzhujiemian;close(app.UIFigure);單擊【返回主界面】菜單,如圖11-5所示,將退出子界面,同時打開主界面。圖11-5
返回主界面菜單11.2圖像幾何運(yùn)算11.2.2圖像縮放對圖像進(jìn)行幾何變換時,像素坐標(biāo)將發(fā)生改變,故需要進(jìn)行插值操作,即利用已知位置的像素值生成未知位置的像素點(diǎn)的像素值,常見的插值方法有最近鄰點(diǎn)法、雙線性插值法和三次內(nèi)插法。在MATLAB中,函數(shù)imresize主要用于對圖像做縮放變換,其調(diào)用格式為:B=imresize(A,m)返回的圖像B的長寬是圖像A的長寬的m倍。m大于1,則放大圖像;m小于1,則縮小圖像。B=imresize(A,m,method)其中method參數(shù)用于指定在改變圖像尺寸時所使用的算法,包括:'nearest'為最近鄰插值算法、'bilinear'為雙線性插值算法、'bicubic'為雙三次插值算法。11.2圖像幾何運(yùn)算11.2.2圖像縮放【例11-1】通過輸入縮放比例和選擇插值算法,對圖像進(jìn)行縮放變換。第一步:設(shè)置布局及屬性。添加2個坐標(biāo)區(qū)、1個單選按鈕組、1個編輯字段(數(shù)值)和1個按鈕。如圖11-6所示。圖11-6
圖像縮放頁面布局11.2圖像幾何運(yùn)算11.2.2圖像縮放第二步:右擊按鈕組件,選擇【回調(diào)】,選擇【轉(zhuǎn)至ButtonPushed回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:globalimgselectedButton=app.ButtonGroup.SelectedObject;switchselectedButton.Text%通過單選按鈕組選擇插值方法case'最近鄰點(diǎn)法'method='nearest';case'雙線性插值法'method='bilinear';case'三次內(nèi)插法'method='bicubic';endper=app.EditField.Value;%獲取編輯字段輸入的縮放參數(shù)im_per=imresize(img,per,method);%縮放圖像imshow(im_per,'parent',app.UIAxes_2);%顯示縮放后的圖片到坐標(biāo)軸title(app.UIAxes_2,{strcat('縮放比為',num2str(per),'的圖像')},'FontSize',13);11.2圖像幾何運(yùn)算11.2.2圖像縮放運(yùn)行程序,單擊【文件】菜單下的【獲取圖像】選項(xiàng),運(yùn)行結(jié)果如圖11-7所示。選擇雙線性插值法,并輸入縮放比例為0.1,單擊【確定】按鈕,運(yùn)行結(jié)果如圖11-8所示。圖11-7
獲取圖像運(yùn)行界面
圖11-8
縮放圖像后效果界面11.2圖像幾何運(yùn)算11.2.3圖像旋轉(zhuǎn)在MATLAB中,函數(shù)imrotate主要用于對圖像做旋轉(zhuǎn)變換,其調(diào)用格式為:
J=imrotate(I,angle)將圖像I圍繞其中心點(diǎn)逆時針方向旋轉(zhuǎn)angle度,當(dāng)順時針旋轉(zhuǎn)圖像時,angle應(yīng)指定為負(fù)值。
J=imrotate(I,angle,method)其中method參數(shù)用于指定的插值方法,包括:'nearest'為最近鄰插值算法、'bilinear'為雙線性插值算法、'bicubic'為雙三次插值算法。11.2圖像幾何運(yùn)算11.2.3圖像旋轉(zhuǎn)【例11-2】通過輸入旋轉(zhuǎn)角度和選擇插值方法,對圖像進(jìn)行旋轉(zhuǎn)變換。第一步:設(shè)置布局及屬性。添加2個坐標(biāo)區(qū)、1個編輯字段(數(shù)值)、1個下拉框和1個按鈕。第二步:右擊按鈕組件,選擇【回調(diào)】,選擇【轉(zhuǎn)至ButtonPushed回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:globalimgswitchapp.DropDown.Value;%通過下拉框選擇插值方法case'最近鄰點(diǎn)插值'method='nearest';case'雙線性插值'method='bilinear';case'雙三次插值'method='bicubic';endang=app.EditField.Value;B=imrotate(img,ang,method);%旋轉(zhuǎn)圖像imshow(B,'parent',app.UIAxes_2);title(app.UIAxes_2,{strcat('旋轉(zhuǎn)',num2str(ang),'度的圖像')},'FontSize',13);11.2圖像幾何運(yùn)算11.2.3圖像旋轉(zhuǎn)運(yùn)行程序,單擊【文件】菜單下的【獲取圖像】選項(xiàng),運(yùn)行結(jié)果如圖11-9所示。選擇雙三次插值法,并輸入旋轉(zhuǎn)角度為30度,單擊【確定】按鈕,運(yùn)行結(jié)果如圖11-10所示。圖11-9
獲取原圖像
圖11-10
旋轉(zhuǎn)圖像變換效果11.2圖像幾何運(yùn)算11.2.4圖像剪裁在MATLAB中,對圖像進(jìn)行剪裁操作,采用imcrop函數(shù)。【例11-3】實(shí)現(xiàn)對圖像任意位置進(jìn)行剪裁并顯示。第一步:設(shè)置布局及屬性。添加2個坐標(biāo)區(qū)和1個按鈕。第二步:右擊按鈕組件,選擇【回調(diào)】,選擇【轉(zhuǎn)至ButtonPushed回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:im_jc=imcrop(app.UIAxes);imshow(im_jc,'parent',app.UIAxes_2);%顯示圖片到坐標(biāo)軸title(app.UIAxes_2,'剪裁后圖像','FontSize',13);11.2圖像幾何運(yùn)算11.2.4圖像剪裁運(yùn)行程序,單擊【文件】菜單下的【獲取圖像】選項(xiàng),獲取原圖像。單擊【剪裁】按鈕,光標(biāo)形狀變?yōu)槭?,在原圖像任意位置拖動,然后右擊選擇【剪裁圖像】,如圖11-11所示,運(yùn)行結(jié)果如圖11-12所示。圖11-11
剪裁圖像選項(xiàng)
圖11-12
剪裁圖像效果11.3圖像形態(tài)學(xué)運(yùn)算形態(tài)學(xué)是基于形狀處理圖像的,圖像中的每個像素都基于其鄰域中其他像素的值進(jìn)行調(diào)整,通過選擇鄰域的大小和形狀,可以構(gòu)造對輸入圖像中的特定形狀敏感的形態(tài)學(xué)運(yùn)算,基本的形態(tài)學(xué)操作,包括腐蝕、膨脹、開運(yùn)算和閉運(yùn)算。在MATLAB中,函數(shù)imdilate主要用于膨脹圖像,其調(diào)用格式為:J=imdilate(I,SE)函數(shù)imerode主要用于膨脹圖像,其調(diào)用格式為:J=imerode(I,SE)其中SE為結(jié)構(gòu)元素,用于膨脹或腐蝕灰度、二值或壓縮二值圖像I。先腐蝕后膨脹稱為開運(yùn)算,先膨脹后腐蝕稱為閉運(yùn)算,用結(jié)構(gòu)元素SE實(shí)現(xiàn)灰度圖像或二值圖像I的形態(tài)開運(yùn)算或閉運(yùn)算,其調(diào)用格式為:IM1=imopen(I,SE)%開運(yùn)算IM2=imclose(I,SE)%閉運(yùn)算11.3圖像形態(tài)學(xué)運(yùn)算【例11-4】設(shè)計(jì)兩欄式App,實(shí)現(xiàn)圖像的腐蝕、膨脹、開運(yùn)算和閉運(yùn)算。第一步:設(shè)置布局及屬性,單擊【新建】,選擇兩欄式App,如圖0-248所示。再添加5個坐標(biāo)區(qū)和1個按鈕組件。第二步:右擊按鈕,選擇【回調(diào)】,選擇【轉(zhuǎn)至ButtonPushed回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:globalimg[file,path]=uigetfile('*.jpg');ifisequal(file,0)disp('UserselectedCancel');elsedisp(['Userselected',fullfile(path,file)]);img=imread(fullfile(path,file));%讀取圖像img_hui=rgb2gray(img);imshow(img_hui,'Parent',app.UIAxes);endB=[010111010];11.3圖像形態(tài)學(xué)運(yùn)算A1=imdilate(img_hui,B);%圖像被結(jié)構(gòu)元素B膨脹imshow(A1,'parent',app.UIAxes_3);se1=strel('disk',5);%創(chuàng)建半徑為5的平坦型圓盤結(jié)構(gòu)元素A2=imerode(img_hui,se1);%腐蝕imshow(A2,'parent',app.UIAxes_2);A3=imopen(img_hui,se1);%開運(yùn)算imshow(A3,'parent',app.UIAxes_4);A4=imclose(img_hui,se1);%閉運(yùn)算imshow(A4,'parent',app.UIAxes_5);11.3圖像形態(tài)學(xué)運(yùn)算運(yùn)行程序,單擊【選擇圖像】按鈕,選擇原始圖像,運(yùn)行效果如圖11-14所示。圖11-13
新建兩欄式App圖11-14
形態(tài)學(xué)運(yùn)算運(yùn)行效果11.4數(shù)字圖像增強(qiáng)
圖像增強(qiáng)方法根據(jù)增強(qiáng)處理過程所在的空間不同,可分為基于空域和頻域的方法?;诳沼虻姆椒ㄖ苯訉D像進(jìn)行處理,基于頻域的方法是在圖像的某種變換域內(nèi)對圖像的變換系數(shù)進(jìn)行修正,然后再反變換到原來的空域,得到增強(qiáng)的圖像。本小節(jié)主要介紹的數(shù)字圖像增強(qiáng)方法包括圖像直接灰度變換、圖像直方圖均衡、圖像平滑和圖像銳化。11.4.1圖像直接灰度變換
在MATLAB中,通過函數(shù)imadjust()進(jìn)行圖像的灰度變換,即調(diào)節(jié)灰度圖像的亮度或彩色圖像的顏色矩陣,該函數(shù)調(diào)用格式如下:J=imadjust(I)J=imadjust(I,[low_in;high_in],[low_out;high_out])g=imadjust(f,[low_in;high_in],[low_out;high_out],gamma)
即對圖像I進(jìn)行灰度調(diào)整,其中[low_in;high_in]為原圖像中要變換的灰度范圍,[low_out;high_out]為變換后的灰度范圍。
gamma指定描述值f和值g關(guān)系的曲線形狀。如果gamma小于1,此映射偏重更高數(shù)值(明亮)輸出;如果gamma大于1,此映射偏重更低數(shù)值(灰暗)輸出;默認(rèn)gamma為1(線性映射)。11.4數(shù)字圖像增強(qiáng)11.4.1圖像直接灰度變換
【例11-5】實(shí)現(xiàn)調(diào)整灰度圖像的亮度并顯示圖像。輸入程序命令如下:img=imread('sunflower.jpg');img_g=imadjust(img,[0.1;0.7],[0;1]);figure(1);subplot(1,2,1);imshow(img);title('原始圖像');subplot(1,2,2);imshow(img_g);title('調(diào)節(jié)后圖像')
運(yùn)行結(jié)果如圖11-15所示。圖11-15
灰度圖像變換效果11.4數(shù)字圖像增強(qiáng)11.4.1圖像直接灰度變換在MATLAB中,可通過函數(shù)stretchlim()計(jì)算灰度圖像的最佳輸入?yún)^(qū)間,結(jié)合stretchlim()和imadjust()函數(shù)共同對調(diào)整灰度圖像的灰度范圍。img=imread('sunflower.jpg');s=stretchlim(img);%計(jì)算灰度圖像的最佳輸入?yún)^(qū)間g=imadjust(img,s,[0,1]);figure(1);subplot(1,2,1);imshow(img);title('原始圖像');subplot(1,2,2);imshow(g);title('最佳輸入?yún)^(qū)間的圖像變換');運(yùn)行結(jié)果如圖11-16所示。圖11-16計(jì)算灰度圖像的最佳輸入?yún)^(qū)間后變換圖像11.4數(shù)字圖像增強(qiáng)11.4.1圖像直接灰度變換【例11-6】對比gamma數(shù)值小于1、大于1和等于1,三種情況下的圖像變換效果輸入程序命令如下:f=imread('sunflower.jpg');s=stretchlim(f);g=imadjust(f,s,[0,1],0.5);k=imadjust(f,s,[0,1],1);h=imadjust(f,s,[0,1],6);figure(1);subplot(2,2,1);imshow(f);title('原圖');subplot(2,2,2);imshow(g);title('gamma=0.5');subplot(2,2,3);imshow(g);title('gamma=1');subplot(2,2,4);imshow(h);title('gamma=6');11.4數(shù)字圖像增強(qiáng)11.4.1圖像直接灰度變換
運(yùn)行結(jié)果如圖11-17所示。Img_RGB=imadjust(RGB1,…)
對RGB圖像Img_RGB的紅、綠、藍(lán)調(diào)色板分別進(jìn)行調(diào)整,隨著顏色矩陣的調(diào)整,每一個調(diào)色板都有唯一的映射值。圖11-17
不同gamma數(shù)值下的圖像變換圖11.4數(shù)字圖像增強(qiáng)11.4.1圖像直接灰度變換【例11-7】實(shí)現(xiàn)對RGB圖像的imadjust()函數(shù)調(diào)整。輸入程序命令如下:f=imread('荷花.jpg');g=imadjust(f,[0.10.20.2;0.70.80.9],[],0.5);%imadjust對RGB圖像進(jìn)行處理figure(1);subplot(1,2,1);imshow(f);title('RGB原始圖像');subplot(1,2,2);imshow(g);title('處理后的圖像')運(yùn)行結(jié)果如圖0-253所示。
圖11-18
RGB的imadjust()調(diào)整11.4數(shù)字圖像增強(qiáng)11.4.2圖像直方圖均衡
均衡化處理的目的是得到比原圖具有更高對比度的擴(kuò)展了動態(tài)范圍的圖像。在MATLAB中,可通過函數(shù)histeq()實(shí)現(xiàn)直方圖的均衡化。J=histeq(I)J=histeq(I,n)
其中n指定直方圖均衡后的灰度級數(shù),默認(rèn)值為64。11.4數(shù)字圖像增強(qiáng)11.4.2圖像直方圖均衡
【例11-8】使用直方圖均衡增強(qiáng)強(qiáng)度圖像的對比度,并顯示原始圖像和處理后圖像的直方圖。輸入程序命令如下:i=imread('荷花.jpg');i=rgb2gray(i);j=histeq(i);figure(1);subplot(1,2,1);imshow(i);title('原始圖像');subplot(1,2,2);imshow(j);title('直方圖均衡增強(qiáng)后圖像');figure(2);imhist(i,64);title('原始圖像直方圖');figure(3);imhist(j,64);title('處理后的圖像的直方圖');11.4數(shù)字圖像增強(qiáng)11.4.2圖像直方圖均衡
運(yùn)行程序,原始圖像和直方圖均衡增強(qiáng)后圖像,如圖11-19所示。原始圖像直方圖和處理后的圖像的直方圖,如圖11-20所示。圖11-19原始圖像和直方圖均衡增強(qiáng)后圖像圖11-20原始圖像直方圖和處理后圖像的直方圖11.4數(shù)字圖像增強(qiáng)11.4.3圖像平滑
圖像平滑的基本原理是,將噪聲所在像素點(diǎn)的像素值處理為其周圍鄰近像素點(diǎn)的值的近似值,從而達(dá)到模糊圖像中的噪聲或消除圖像干擾的目的。圖像平滑處理的方法有很多,比如鄰域平均濾波、中值濾波、方框?yàn)V波和雙邊濾波等。
1.鄰域平均濾波
鄰域平均濾波法,通常情況下都是以當(dāng)前像素點(diǎn)為中心,讀行數(shù)和列數(shù)相等的一塊區(qū)域內(nèi)的所有像素點(diǎn)求平均,將計(jì)算得到的結(jié)果作為該點(diǎn)的像素。根據(jù)讀取像素點(diǎn)的行列數(shù),確定核的大小。11.4數(shù)字圖像增強(qiáng)11.4.3圖像平滑
【例11-9】對原圖像加入椒鹽噪聲,并分別采用3×3、5×5、7×7的模板進(jìn)行鄰域平均濾波。輸入程序命令如下:img=imread('草原.jpg');img_g=rgb2gray(img);im_noise=imnoise(img_g,'salt&pepper',0.25);figure(1);subplot(1,2,1);imshow(img_g);title('原始灰度圖像');subplot(1,2,2);imshow(im_noise);title('椒鹽噪聲圖像');h=fspecial('average',[33]);g=fspecial('average',[55]);k=fspecial('average',[77]);im_fit1=imfilter(im_noise,h);im_fit2=imfilter(im_noise,g);im_fit3=imfilter(im_noise,k);11.4數(shù)字圖像增強(qiáng)11.4.3圖像平滑figure(2);subplot(1,3,1);imshow(im_fit1);title('鄰域平均濾波(3*3模板)');subplot(1,3,2);imshow(im_fit2);title('鄰域平均濾波(5*5模板)');subplot(1,3,3);imshow(im_fit3);title('鄰域平均濾波(7*7模板)');運(yùn)行結(jié)果如圖11-21所示。圖11-21
鄰域平均濾波法11.4數(shù)字圖像增強(qiáng)11.4.3圖像平滑
2.中值濾波
中值濾波是基于排序統(tǒng)計(jì)理論的一種能有效抑制噪聲的非線性信號處理技術(shù),中值濾波的基本原理是把數(shù)字圖像或數(shù)字序列中一點(diǎn)的值,用該點(diǎn)的一個鄰域中各點(diǎn)值的中值代替,讓其周圍的像素值接近的真實(shí)值,從而消除孤立的噪聲點(diǎn)。
【例11-10】對原圖像加入椒鹽噪聲,并分別采用3×3、5×5、7×7的模板進(jìn)行中值濾波。
輸入程序命令如下:img=imread('草原.jpg');img_g=rgb2gray(img);im_noise=imnoise(img_g,'salt&pepper',0.5);figure(1);subplot(1,2,1);imshow(img_g);title('原始灰度圖像');subplot(1,2,2);imshow(im_noise);title('椒鹽噪聲圖像');im_fit1=medfilt2(im_noise,[33]);im_fit2=medfilt2(im_noise,[55]);im_fit3=medfilt2(im_noise,[77]);11.4數(shù)字圖像增強(qiáng)11.4.3圖像平滑figure(2);subplot(1,3,1);imshow(im_fit1);title('中值濾波(3*3模板)');subplot(1,3,2);imshow(im_fit2);title('中值濾波(5*5模板)');subplot(1,3,3);imshow(im_fit3);title('中值濾波(7*7模板)');運(yùn)行結(jié)果如圖11-22所示。圖11-22
中值濾波效果11.4數(shù)字圖像增強(qiáng)11.4.4圖像銳化
圖像銳化的目的是加強(qiáng)圖像中景物的邊緣和輪廓,突出圖像中的細(xì)節(jié)或增強(qiáng)被模糊了的細(xì)節(jié)。經(jīng)過平滑的圖像變得模糊的根本原因是因?yàn)閳D像受到了平均或積分運(yùn)算,因此可以對其進(jìn)行逆運(yùn)算就可以使圖像變得清晰,本小節(jié)主要介紹Sobel算子濾波和拉式算子濾波。
【例11-11】對圖像分別進(jìn)行Sobel算子濾波和拉式算子濾波。
輸入程序命令如下:img=imread('girl.png');img_hui=rgb2gray(img);h=fspecial('sobel');im_sobel=filter2(h,img_hui);%Sobel算子對圖像進(jìn)行銳化figure(1);imshow(im_sobel);title('Sobel算子圖像銳化');h1=fspecial('laplacian');im_la=filter2(h1,img_hui);%拉式算子對圖像進(jìn)行銳化figure(2);imshow(im_la);title('拉式算子圖像銳化');11.4數(shù)字圖像增強(qiáng)11.4.4圖像銳化運(yùn)行結(jié)果如圖11-23所示。圖11-23
圖像銳化效果11.4數(shù)字圖像增強(qiáng)11.4.5數(shù)字圖像增強(qiáng)子界面
【例11-12】實(shí)現(xiàn)數(shù)字圖像增強(qiáng)界面設(shè)計(jì),主要功能包括圖像直接灰度變換、圖像直方圖均衡、圖像平滑和圖像銳化處理。圖像平滑變換可選擇所添加的噪聲類型,及窗口的大小。
第一步:設(shè)置布局及屬性。添加1個按鈕、1個樹、2個單選按鈕組和4個坐標(biāo)區(qū)組件,如圖11-24所示。圖11-24數(shù)字圖像增強(qiáng)界面布局11.4數(shù)字圖像增強(qiáng)11.4.5數(shù)字圖像增強(qiáng)子界面第二步:右擊按鈕,選擇【回調(diào)】,選擇【轉(zhuǎn)至ButtonPushed回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:globalimg;globalch;globalim_noise;img_hui=rgb2gray(img);selectedNodes=app.Tree.SelectedNodes;switchselectedNodes.Textcase'數(shù)字圖像增強(qiáng)'msgbox('請選擇具體的數(shù)字圖像增強(qiáng)方法','提示');case'圖像空域增強(qiáng)'msgbox('請選擇具體的圖像空域增強(qiáng)方法','提示');case'圖像銳化'msgbox('請選擇具體的圖像銳化方法','提示');case'圖像平滑'msgbox('請選擇具體的圖像平滑方法','提示');11.4數(shù)字圖像增強(qiáng)11.4.5數(shù)字圖像增強(qiáng)子界面case'圖像直接灰度變換'imshow(img,'Parent',app.UIAxes_1);title(app.UIAxes_1,'原圖像','FontSize',13);imshow(img_hui,'parent',app.UIAxes_2);title(app.UIAxes_2,'rgb2gray()函數(shù)變換','FontSize',13);im_zhi=imadjust(img_hui,[0.30.5],[00.8]);imshow(im_zhi,'parent',app.UIAxes_3);title(app.UIAxes_3,'圖像直接灰度變換','FontSize',13);case'圖像直方圖均衡'imshow(img,'Parent',app.UIAxes_1);title(app.UIAxes_1,'原圖像','FontSize',13);imshow(img_hui,'parent',app.UIAxes_2);title(app.UIAxes_2,'rgb2gray()函數(shù)變換','FontSize',13);im_zf=histeq(img_hui);%直方圖均衡化后的灰度圖像imshow(im_zf,'parent',app.UIAxes_3);title(app.UIAxes_3,'直方圖均衡化后的圖像','FontSize',13);
11.4數(shù)字圖像增強(qiáng)11.4.5數(shù)字圖像增強(qiáng)子界面case'中值濾波'imshow(img_hui,'parent',app.UIAxes_1);title(app.UIAxes_1,'rgb2gray()函數(shù)變換','FontSize',13);im_fit=medfilt2(im_noise,ch);%medfilt2函數(shù)中值濾波imshow(im_fit,'parent',app.UIAxes_3);title(app.UIAxes_3,'中值濾波','FontSize',13);case'鄰域平均濾波'imshow(img_hui,'parent',app.UIAxes_1);title(app.UIAxes_1,'rgb2gray()函數(shù)變換','FontSize',13);h=fspecial('average',ch);im_fit=imfilter(im_noise,h);%imfilter函數(shù)鄰域平均濾波imshow(im_fit,'parent',app.UIAxes_3);title(app.UIAxes_3,'鄰域平均濾波','FontSize',13);case'Sobel算子濾波'imshow(img,'Parent',app.UIAxes_1);title(app.UIAxes_1,'原圖像','FontSize',13);11.4數(shù)字圖像增強(qiáng)11.4.5數(shù)字圖像增強(qiáng)子界面imshow(img_hui,'parent',app.UIAxes_2);title(app.UIAxes_2,'rgb2gray()函數(shù)變換','FontSize',13);h=fspecial('sobel');im_sobel=filter2(h,img_hui);%Sobel算子對圖像進(jìn)行銳化imshow(im_sobel,'parent',app.UIAxes_3);title(app.UIAxes_3,'Sobel算子對圖像銳化結(jié)果','FontSize',13);case'拉式算子濾波'imshow(img,'Parent',app.UIAxes_1);title(app.UIAxes_1,'原圖像','FontSize',13);imshow(img_hui,'parent',app.UIAxes_2);title(app.UIAxes_2,'rgb2gray()函數(shù)變換','FontSize',13);h=fspecial('laplacian');im_la=filter2(h,img_hui);imshow(im_la,'parent',app.UIAxes_3);title(app.UIAxes_3,'拉式算子對圖像銳化結(jié)果','FontSize',13);end11.4數(shù)字圖像增強(qiáng)11.4.5數(shù)字圖像增強(qiáng)子界面右擊窗口尺寸單選按鈕組,選擇【回調(diào)】,選擇【轉(zhuǎn)至ButtonGroup_2SelectionChanged回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:globalim_noise;globalimg;selectedButton=app.ButtonGroup.SelectedObject;img_g=rgb2gray(img);%rgb2gray函數(shù)生成灰度圖imshow(img_g,'parent',app.UIAxes_3);title(app.UIAxes_3,'灰度圖','FontSize',13);ifselectedButton.Text=='椒鹽噪聲'%用戶選擇噪聲類型noise='salt&pepper';A_text='加入椒鹽噪聲';elsenoise='gaussian';A_text='加入高斯噪聲';endim_noise=imnoise(img_g,noise,0.25);%imnoise函數(shù)加入所選噪聲imshow(im_noise,'parent',app.UIAxes_2);title(app.UIAxes_2,A_text,'FontSize',13);11.4數(shù)字圖像增強(qiáng)11.4.5數(shù)字圖像增強(qiáng)子界面右擊噪聲類型單選按鈕組,選擇【回調(diào)】,選擇【轉(zhuǎn)至ButtonGroupSelectionChanged回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:selectedButton_2=app.ButtonGroup_2.SelectedObject;globalch;switchselectedButton_2.Text%濾波器窗口尺寸選擇case'3X3'ch=[33];case'5X5'ch=[55];case'7X7'ch=[77];case'11X11'ch=[1111];end11.4數(shù)字圖像增強(qiáng)11.4.5數(shù)字圖像增強(qiáng)子界面右擊樹組件,選擇【回調(diào)】,選擇【轉(zhuǎn)至TreeSelectionChanged回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:selectedNodes=app.Tree_2.SelectedNodes;switchselectedNodes.Textcase'圖像直接灰度變換'app.ButtonGroup.Enable='off';app.ButtonGroup_2.Enable='off';case'圖像直方圖均衡'app.ButtonGroup.Enable='off';app.ButtonGroup_2.Enable='off';case'中值濾波'app.ButtonGroup.Enable='on';app.ButtonGroup_2.Enable='on';case'鄰域平均濾波'app.ButtonGroup.Enable='on';app.ButtonGroup_2.Enable='on';otherwiseapp.ButtonGroup.Enable='off';app.ButtonGroup_2.Enable='off';end11.4數(shù)字圖像增強(qiáng)11.4.5數(shù)字圖像增強(qiáng)子界面運(yùn)行程序,單擊【文件】,選擇【獲取圖像】,選擇“圖像直接灰度變換”,單擊【確定】按鈕,運(yùn)行結(jié)果如圖11-25所示。選擇“圖像直方圖均衡”,單擊【確定】按鈕,運(yùn)行結(jié)果如圖11-26所示。圖11-25
圖像直接灰度變換運(yùn)行結(jié)果圖11-26
圖像直方圖均衡運(yùn)行結(jié)果11.4數(shù)字圖像增強(qiáng)11.4.5數(shù)字圖像增強(qiáng)子界面
選擇【中值濾波】,選擇椒鹽噪聲類型,選擇5×5窗口大小,單擊【確定】按鈕,運(yùn)行結(jié)果如圖11-27所示。
選擇【鄰域平均濾波】,選擇高斯噪聲類型,選擇7×7窗口大小,單擊【確定】按鈕,運(yùn)行結(jié)果如圖11-28所示。圖11-27
中值濾波運(yùn)行結(jié)果圖11-28
鄰域平均濾波運(yùn)行結(jié)果11.4數(shù)字圖像增強(qiáng)11.4.5數(shù)字圖像增強(qiáng)子界面
選擇【Sobel算子濾波】,單擊【確定】按鈕,運(yùn)行結(jié)果如圖11-29所示。
選擇【拉式算子濾波】,單擊【確定】按鈕,運(yùn)行結(jié)果如圖11-30所示。圖11-29
Sobel算子濾波運(yùn)行結(jié)果圖11-30
拉式算子濾波運(yùn)行結(jié)果11.5圖像邊緣檢測
圖像的邊緣是圖像的基本特征,邊緣檢測是數(shù)字圖像處理領(lǐng)域的常用技術(shù)之一,被廣泛應(yīng)用于圖像特征提取、目標(biāo)識別、計(jì)算機(jī)視覺等領(lǐng)域。邊緣點(diǎn)是灰度階躍變化的像素點(diǎn),即灰度值的導(dǎo)數(shù)較大或極大的地方,而邊緣檢測就是要找到這樣的地方。常用的邊緣檢測算子包括'sobel'、'prewitt'、'canny'和'log'等11.5.1圖像邊緣檢測函數(shù)
在MATLAB中,函數(shù)edge()進(jìn)行圖像邊緣檢測,該函數(shù)調(diào)用格式如下:BW=edge(I)BW=edge(I,method)BW=edge(I,method,threshold)BW=edge(I,method,threshold,direction)其中,method取值包括'sobel'、'prewitt'、'canny'和'log'等。direction指定要檢測的邊緣的方向,Sobel和Prewitt方法可以檢測垂直方向和水平方向的邊緣,Roberts方法可以檢測與水平方向呈45度角或135度角的邊緣,即當(dāng)method取值為'Sobel'、'Prewitt'或'Roberts'時,此語法才有效。11.5圖像邊緣檢測11.5.1圖像邊緣檢測函數(shù)【例11-13】利用Sobel邊緣檢測方法,實(shí)現(xiàn)不同閾值不同檢測方向的邊緣檢測。輸入程序命令如下:clearallclcI=imread('jing.jpg');I=rgb2gray(I);figure(1)subplot(1,2,1)imshow(I);title('原始圖像');BW=edge(I,'sobel');subplot(1,2,2)imshow(BW);title('邊緣檢測')[BW,thresh]=edge(I,'sobel');11.5圖像邊緣檢測11.5.1圖像邊緣檢測函數(shù)disp('Sobel算法自動選擇的閾值為:')disp(thresh);figure(2)BW1=edge(I,'sobel',0.03,'horizontal');subplot(2,2,1)imshow(BW1);title('水平方向閾值為0.03')BW2=edge(I,'sobel',0.03,'vertical');subplot(2,2,2)imshow(BW2)title('垂直方向閾值為0.03')BW3=edge(I,'sobel',0.05,'horizontal');subplot(2,2,3)imshow(BW3)title('水平方向閾值為0.05')11.5圖像邊緣檢測11.5.1圖像邊緣檢測函數(shù)BW4=edge(I,'sobel',0.05,'vertical');subplot(2,2,4)imshow(BW4)title('垂直方向閾值為0.05')運(yùn)行程序,命令行窗口輸出結(jié)果:Sobel算法自動選擇的閾值為:0.043211.5圖像邊緣檢測11.5.1圖像邊緣檢測函數(shù)程序運(yùn)行效果如圖11-31和圖11-32所示。圖11-31
'Sobel'邊緣檢測效果圖11-32
'Sobel'水平和垂直方向不同閾值邊緣檢測效果11.5圖像邊緣檢測11.5.2圖像邊緣檢測界面【例11-14】圖像邊緣檢測界面,包括Sobel檢測、Prewitt檢測、Canny檢測和Log檢測。第一步:設(shè)置布局及屬性。添加2個按鈕、1個下拉框和2個坐標(biāo)區(qū)組件,如圖0-268所示。圖11-33
圖像邊緣檢測界面布局11.5圖像邊緣檢測11.5.2圖像邊緣檢測界面第二步:右擊【選擇圖像】按鈕,選擇【回調(diào)】,選擇【轉(zhuǎn)至ButtonPushed回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:globalimg[file,path]=uigetfile('*.jpg')ifisequal(file,0)disp('UserselectedCancel');elsedisp(['Userselected',fullfile(path,file)]);img=imread(fullfile(path,file));
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022年河南省信陽市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年河北省滄州市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2023年山東省濟(jì)寧市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年湖北省襄樊市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2023年山西省陽泉市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 湖北省隨州市(2024年-2025年小學(xué)六年級語文)部編版隨堂測試(上學(xué)期)試卷及答案
- 2024版大型設(shè)備搬運(yùn)工程車租賃協(xié)議3篇
- 2024版婚宴花卉租賃合同
- 2024版冷水機(jī)組安裝合同
- 2024年餐具批量采購供應(yīng)協(xié)議一
- 2023年非標(biāo)自動化工程師年度總結(jié)及來年計(jì)劃
- 水利機(jī)械施工方案
- 廣東省佛山市南海區(qū)大瀝鎮(zhèn)2023-2024學(xué)年九年級上學(xué)期期中物理試卷
- ESD內(nèi)部審核日程計(jì)劃表+內(nèi)審檢查表+內(nèi)審報(bào)告全套資料
- HSK標(biāo)準(zhǔn)教程5下-課件-L
- 電腦基礎(chǔ)知識
- 工程竣工預(yù)驗(yàn)收簽到表
- 靜鉆根植樁施工組織設(shè)計(jì)
- 工程精細(xì)化管理
- 小學(xué)音樂-(演唱)小拜年教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 醫(yī)院患者知情同意與告知制度
評論
0/150
提交評論