MATLAB圖形圖像處理.ppt
《MATLAB圖形圖像處理.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《MATLAB圖形圖像處理.ppt(54頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第三章 MATLAB圖形圖像處理,,3.5圖像的灰度變換與直方圖,在計(jì)算機(jī)中一幅二維數(shù)字圖像表示為一個(gè)矩陣,該矩陣中的元素是位于相應(yīng)坐標(biāo)位置的圖像灰度值。對(duì)圖像處理包括對(duì)彩色圖像的處理,往往都是對(duì)像素灰度的操作,所以對(duì)圖像進(jìn)行灰度變換是圖像處理過(guò)程中最簡(jiǎn)單、最基礎(chǔ)內(nèi)容。 在圖像處理中,直接對(duì)像素進(jìn)行的操作稱為空間域(或簡(jiǎn)稱空域)處理。,3.5.1圖像的灰度變換,在MATLAB中,用函數(shù)imadjust可完成灰度圖像的灰度變換。其基本語(yǔ)法格式為: g=imadjust(p,[low_in high_in],[low_out high_out], gamma) 其中p為讀入到MATLAB中的待變換圖像矩陣; [low_in high_in]指定了p圖像中被執(zhí)行變換操作的灰度范圍,[low_out high_out]是p圖像中的像素變換后被映射到low_out~high_out的灰度級(jí)上。 默認(rèn)狀態(tài)下,[low_out high_out]及[low_in high_in]為空,此時(shí)等價(jià)于[0 1],表明輸入與輸出灰度級(jí)為0~255(uint8)或0~65535(uint16)。,,參數(shù)gamma是指變換映射的方式,默認(rèn)方式時(shí)gamma取作1,完成線性映射,這時(shí)變換前后的灰度級(jí)沒(méi)有被加權(quán); 當(dāng)gamma小于1,則映射被加權(quán)至更高的灰度級(jí); 相反當(dāng)gamma大于1,輸出則被加權(quán)映射至較低的灰度級(jí)。,幾種灰度變換過(guò)程:,【例3.5.1】將football.jpg灰度級(jí)0.1~0.6范圍的像素線性變換到0~1上,效果如圖3.29中圖(b)所示: p = imread(football.jpg); g1 = imadjust(p,[0.1 0.6],[]); subplot(1,2,1); imshow(p); xlabel((a)); subplot(1,2,2); imshow(g1); xlabel((b));,,【例3.5.2】將圖像p向高灰度級(jí)變換,gamma取0.6,效果如圖3.29中圖(c)所示。 g2 = imadjust(p,[],[],0.6); subplot(2,2,3); imshow(g2); xlabel((c));,,【例3.5.3】將圖像p做灰度倒相變換,即輸出源圖的負(fù)片,gamma取1,效果如圖3.29中圖(d)所示。 g3 = imadjust(p,[0 1],[1 0]); subplot(2,2,4); imshow(g3); xlabel((d));,3.5.2灰度直方圖,圖像灰度直方圖描述了一幅圖像的灰度級(jí)內(nèi)容,即各個(gè)灰度級(jí)像素?cái)?shù)目的統(tǒng)計(jì)。 在MATLAB圖像處理中,通過(guò)命令imhist來(lái)給出圖像的直方圖。其基本語(yǔ)法格式為: h = imhist(p,b) 其中p為讀入到MATLAB環(huán)境中的圖像矩陣, 參數(shù)b指明直方圖統(tǒng)計(jì)時(shí)顯示的整個(gè)灰度級(jí)分段數(shù)目,若圖像為uint8數(shù)據(jù)格式,當(dāng)b=2時(shí),灰度分為0~127及128~256兩個(gè)區(qū)段。省略b時(shí),表明灰度級(jí)不分段,這也是imhist的默認(rèn)調(diào)用方式。,,【例3.5.4】顯示圖像p的灰度直方圖時(shí),先要把RGB彩色圖像p變換為灰度圖像I。運(yùn)行下列程序,得到如圖3.30所示直方圖。 p = imread(football.jpg); I = rgb2gray(p); imhist(I);,3.5.3直方圖均衡化,通過(guò)直方圖均衡化做適當(dāng)?shù)恼{(diào)整,即把一幅已知灰度概率分布圖像中的像素灰度做某種映射變換,使它變成一幅具有均勻概率分布的新圖像,使圖像視覺(jué)效果更加清晰。 直方圖均衡的MATLAB函數(shù)為histeq,其基本語(yǔ)法格式為: g = histeq(p, outlev) 其中p為讀入的圖像矩陣, outlev為輸出圖像的灰度級(jí)數(shù)。outlev的默認(rèn)值為64,即64個(gè)灰度級(jí),這樣對(duì)圖像的細(xì)節(jié)有一定改變。通常將其賦值為256,即全灰度級(jí)(uint8)。,【例3.5.4】對(duì)tire.tif進(jìn)行直方圖均衡,其效果如圖所示: p = imread(tire.tif); subplot(2,2,1); imshow(p); xlabel((a) ); subplot(2,2,2); imhist(p); xlabel((b) ); g = histeq(p); subplot(2,2,3); imshow(g); xlabel((c) ); subplot(2,2,4); imhist(g); xlabel((d) );,3.6 圖像的增強(qiáng)濾波,上節(jié)介紹過(guò)的直方圖均衡化是圖像增強(qiáng)中常用的一種方法,圖像增強(qiáng)技術(shù)還包括圖像平滑濾波、圖像銳化等。本節(jié)將從線性與非線性、平滑與銳化等不同角度介紹一些實(shí)用的空域圖像增強(qiáng)技術(shù)。,3.6.1 空域?yàn)V波概述,圖像增強(qiáng)技術(shù)從總體上可分為空域增強(qiáng)和頻域增強(qiáng)兩大類(lèi)??沼蛟鰪?qiáng)也稱為空間增強(qiáng),是直接對(duì)圖像中的像素進(jìn)行操作的一種增強(qiáng)過(guò)程。 空域增強(qiáng)方法大致可分為對(duì)比度拉伸、平滑濾波和銳化濾波?;叶壤熘饕抢命c(diǎn)運(yùn)算來(lái)修改圖像像素灰度值;而平滑和銳化均是利用模板來(lái)修改(卷積運(yùn)算)像素灰度值,從實(shí)現(xiàn)方法上講是基于圖像濾波的操作過(guò)程。 空域?yàn)V波是在圖像空間中借助模板對(duì)圖像進(jìn)行領(lǐng)域操作的,輸出圖像每一個(gè)像素的取值都是根據(jù)模板對(duì)輸入像素相應(yīng)領(lǐng)域內(nèi)的像素值進(jìn)行計(jì)算得到的。,3.6.2 空域?yàn)V波分類(lèi),根據(jù)模板特點(diǎn)不同可以將空域?yàn)V波分為線性和非線性兩大類(lèi)。 按照空域?yàn)V波器的功能不同,又可將其分為平滑濾波器和銳化濾波器。平滑濾波器可以用低通濾波實(shí)現(xiàn),目的在于模糊圖像或消除圖像噪聲;銳化濾波器是用高通濾波實(shí)現(xiàn)的,目的在于增強(qiáng)被模糊圖像的細(xì)節(jié)部分,具體可分為以下3類(lèi)。 1.均值濾波 均值濾波也稱線性平滑濾波,其輸出的像素值是由領(lǐng)域像素的平均值決定。,,2.中值濾波 中值濾波也稱為非線性平滑濾波,其基本原理與均值濾波不同之處在于:中值濾波的輸出像素值是由領(lǐng)域像素的中間值而不是平均值決定,中值濾波的名字也因此而得。與均值濾波相比,中值濾波對(duì)灰度發(fā)生聚變的像素不如均值濾波那么敏感,因此中值濾波能盡量保存圖像的細(xì)節(jié),模糊效應(yīng)較少,適于消除圖像中孤立噪聲。 3.銳化濾波 銳化濾波就是可以使用微分對(duì)圖像進(jìn)行處理,以此來(lái)銳化由于領(lǐng)域平均導(dǎo)致的圖像模糊。圖像處理中最常用的微分是利用圖像沿某方向上的灰度變化率,即梯度進(jìn)行的。,3.6.3 基于MATLAB的空域增強(qiáng)濾波,基于MATLAB圖像處理的空域?yàn)V波,首先要定義濾波器,然后才能調(diào)用定義好的濾波器進(jìn)行濾波。 imnoise是MATLAB提供的圖像噪聲模擬函數(shù),其基本語(yǔ)法格式為: pn = imnoise(p, ’type’, para) 其中pn為添加噪聲的輸出圖像,p為原圖像,type指定噪聲的類(lèi)型,para為每種類(lèi)型噪聲的參數(shù)。 常用的噪聲有:gaussian(高斯噪聲)、salt&pepper(椒鹽噪聲)、speckle(均值為0均勻分布的隨機(jī)噪聲)等。,,fspecial函數(shù)用來(lái)預(yù)定義濾波器,其基本語(yǔ)法格式為: h = fspecial(’type’, para) 其中h為預(yù)定義的濾波器,參數(shù)type指定濾波器的種類(lèi),para為與濾波器相關(guān)的參數(shù)。 濾波器的種類(lèi)type可以為:gaussian(高斯低通濾波器)、laplacian(拉普拉斯算子)、log(拉普拉斯高斯算子)、prewitt(Prewitt算子)、sobel(Sobel算子)、average(均值濾波器)及unsharp(對(duì)比度增強(qiáng)濾波器)等。,imfilter是用來(lái)實(shí)現(xiàn)線性空間濾波的函數(shù),其基本語(yǔ)法格式為: hp = imfilter(p, w, filter_mode, boundary_options, size_options) 其中hp為經(jīng)過(guò)濾波后輸出的圖像,p為原圖像,參數(shù)w為濾波模板,filter_mode指定濾波過(guò)程中使用相關(guān)核(corr)還是卷積核(conv)。boundary_options控制邊界填充方式為邊界復(fù)制(replicate)、邊界循環(huán)(circular)還是邊界對(duì)稱(symmetric)。size_options可以為same或者full兩者之一。如 hp = imfilter(p, w, ’replicate’) medfilt2是一個(gè)二維中值濾波函數(shù),其基本語(yǔ)法格式為: hp = medfilt2(p, [m n], padopt) 其中hp為經(jīng)過(guò)濾波后輸出的圖像,p為原圖像,m及n規(guī)定了領(lǐng)域的大小,padopt指定了邊界填充方式,默認(rèn)方式為zeros。,,【例3.6.1】對(duì)添加了椒鹽噪聲的圖像分別進(jìn)行均值濾波和中值濾波,濾波前后效果如圖3.32所示。 p = imread(coins.png); p0 = imnoise(p, salt ,,圖3.32 均值濾波和中值濾波((a)原圖像;(b)添加椒鹽噪聲后圖像;(c)均值濾波后圖像;(d)中值濾波后圖像),【例3.6.2】 對(duì)含有噪聲的原圖像進(jìn)行銳化,得到如圖所示圖像。 p0 = imread(moon.tif); p = im2double(p0); %將圖像數(shù)據(jù)類(lèi)型轉(zhuǎn)換為double H1 = fspecial(laplacian,0); %設(shè)計(jì)拉普拉斯濾波器H1 H2 = fspecial(log,[5 5],0.5); %設(shè)計(jì)高斯-拉普拉斯濾波器H2 hp1 = imfilter(p,H1,replicate); %用濾波器H1對(duì)圖像p進(jìn)行濾波 hp2 = imfilter(p,H2,replicate); %用濾波器H2對(duì)圖像p進(jìn)行濾波 p1 = p - hp1; %還原灰度色調(diào) p2 = p - hp2; %還原灰度色調(diào) subplot(1,3,1),imshow(p0); subplot(1,3,2),imshow(p1); subplot(1,3,3);imshow(p2);,,圖3.33 拉普拉斯波和高斯-拉普拉斯濾波((a)原圖像;(b)拉普拉斯濾波后圖像;(c)高斯-拉普拉斯濾波后圖像),3.7 圖像的空間變換,圖像的空間變換也稱為圖像的幾何變換,是指將用戶獲得或設(shè)計(jì)的原始圖像,按照需要產(chǎn)生大小、形狀和位置的變化。圖像幾何變換是圖像顯示技術(shù)中的一個(gè)重要組成部分,常用的圖像幾何變換主要包括圖像的縮放、圖像的剪切及圖像的旋轉(zhuǎn)等內(nèi)容。,3.7.1 圖像比例縮放,圖像比例縮放是指將給定的圖像在x軸方向按比例縮放fx倍,在y軸方向按比例縮放fy倍,從而獲得一幅新的圖像。有fx=fy和 fx≠fy兩種情況。 比例縮放所產(chǎn)生的圖像中的像素可能在原圖像中找不到相應(yīng)的像素點(diǎn),這樣就必須進(jìn)行插值處理。 圖像插值處理常用的方法有兩種,一種是最鄰近插值法,另一種是通過(guò)一些插值算法來(lái)計(jì)算相應(yīng)的像素值。 MATLAB中提供了三種圖像插值方法,即最近鄰插值、雙線性插值和雙三次插值。,通過(guò)函數(shù)imresize對(duì)圖像進(jìn)行插值縮放,其基本語(yǔ)法格式為: ps = imresize(p, m, method ) 其中ps為變換后的圖像,p為輸入圖像,m放大倍數(shù)(當(dāng)m1時(shí)縮?。?,method為插值方法的選擇項(xiàng),可選最近鄰插值法(nearest)、雙線性插值法(bilinear)及雙三次插值法(bicubic),默認(rèn)使用最近鄰插值法。 另外一種經(jīng)常用到的語(yǔ)法格式為: ps = imresize(p, [m n], method ) 其中m和n分別為變換后圖像的長(zhǎng)寬,其它參數(shù)含義與上述相同。,,【例3.7.1】對(duì)liftingbody.png圖像進(jìn)行縮小,其效果如圖3.34所示。 p = imread(liftingbody.png); w = input(please input a number:); %交互輸入縮小為0.2倍 ps = imresize(p,w); %縮小變換 imshow(p); figure; imshow(ps);,,圖3.34 對(duì)liftingbody.png圖像進(jìn)行縮小前后的效果((a)原圖像;(b)縮小后拉伸顯示后圖像),3.7.2 圖像剪切,圖像處理工具箱中通過(guò)函數(shù)imcrop交互實(shí)現(xiàn)圖像區(qū)域選取功能,用于剪切圖像中的一個(gè)矩形子圖,可用鼠標(biāo)選取這個(gè)矩形,也可以通過(guò)參數(shù)指定這個(gè)矩形頂點(diǎn)的坐標(biāo)。函數(shù)imcrop基本語(yǔ)法格式為: pc = imcrop(p) 或 pc = imcrop(p, rectangle) 其中pc為剪切后的圖像,p為輸入圖像,rectangle為四個(gè)變量指定的一個(gè)矩形區(qū)域,即[left bottom width height],數(shù)組中的四個(gè)變量分別表示矩形左下角的橫坐標(biāo)、縱坐標(biāo)、矩形長(zhǎng)度及寬度。,,【例3.7.2】 對(duì)liftingbody.png圖像進(jìn)行剪切,其效果如圖3.35所示。 p = imread(liftingbody.png); pc = imcrop(p,[80 180 260 220]); %輸入矩形尺度進(jìn)行選取 subplot(1,2,1); imshow(p); subplot(1,2,2); imshow(pc);,3.7.3 圖像旋轉(zhuǎn),圖像的旋轉(zhuǎn)是以圖像的中心為原點(diǎn),將圖像上的所有像素都旋轉(zhuǎn)一個(gè)相同的角度。 在圖像進(jìn)行旋轉(zhuǎn)的時(shí)候,各像素的坐標(biāo)必然發(fā)生變化,使得旋轉(zhuǎn)之后不能正好落在整數(shù)坐標(biāo)處,因此同縮放一樣,也需要進(jìn)行插值,插值方法也與縮放的插值方法一樣,完全相同,即可用3種方法對(duì)圖像進(jìn)行插值旋轉(zhuǎn),默認(rèn)的插值方法是最近鄰插值法。 在MATBLA工具箱中的,通過(guò)函數(shù)imrotate實(shí)現(xiàn)對(duì)圖像的旋轉(zhuǎn),imrotate函數(shù)的語(yǔ)法格式為: pr = imrotate(p, angle, method) 或 pr = imrotate(p, angle, method, crop) 其中pr為旋轉(zhuǎn)后得到的圖像,p為輸入圖像,angle為指定的旋轉(zhuǎn)度數(shù),參數(shù)method用于指定插值的方法,可選值為nearest(最近鄰法),bilinear(雙線性插值)及bicubic(雙三次插值),默認(rèn)值為nearest。參數(shù)crop允許用戶對(duì)旋轉(zhuǎn)后的圖像進(jìn)行自動(dòng)剪切,使返回的圖像與原圖大小相同。,,【例3.7.3】 對(duì)liftingbody.png圖像進(jìn)行旋轉(zhuǎn),其效果如圖3.36所示。 p = imread(liftingbody.png); angle = input(please input angle:); %輸入旋轉(zhuǎn)角度為45度 pr = imrotate(p,angle,bilinear); %使用雙線性插值方法實(shí)現(xiàn)旋轉(zhuǎn)變換 subplot(1,2,1); imshow(p); subplot(1,2,2); imshow(pr);,3.8 圖像邊緣檢測(cè)與分割,圖像分割是將數(shù)字圖像分割成互不相交(不重疊)的有意義的子區(qū)域的過(guò)程。其目的是使各個(gè)區(qū)域與景物中以某種方式描述的物體相對(duì)應(yīng),以便進(jìn)行高層次的圖像解釋、圖像識(shí)別等處理。,3.8.1 邊緣檢測(cè)概述,圖像分割一般是基于圖像像素灰度值的基本特性——不連續(xù)性與相似性中的一個(gè)或兩個(gè)來(lái)進(jìn)行的。區(qū)域內(nèi)部的像素一般具有灰度相似性,而在區(qū)域之間的邊界上一般具有灰度不連續(xù)性。 根據(jù)圖像灰度級(jí)的突變進(jìn)行圖像分割的方法中,邊緣檢測(cè)方法通過(guò)檢測(cè)包含不同區(qū)域的邊緣來(lái)解決圖像分割問(wèn)題。邊緣檢測(cè)最通用的方法是檢測(cè)灰度值的不連續(xù)性,灰度值的不連續(xù)是指在不同區(qū)域之間的邊緣上像素灰度值的變化往往比較劇烈,一般利用圖像一階導(dǎo)數(shù)的極大值或者二階導(dǎo)數(shù)的過(guò)零點(diǎn)信息提供判斷邊緣點(diǎn)的依據(jù)。,3.8.2 梯度算子,對(duì)于圖像中任一像素點(diǎn),可以用二維函數(shù)f(x,y)來(lái)表示,而梯度定義為向量?f: 該向量的幅值為: 為簡(jiǎn)化計(jì)算,通常省略開(kāi)方或通過(guò)取絕對(duì)值來(lái)近似計(jì)算,即 或,,,,,梯度向量的含義在于,它總是指向f(x,y)在點(diǎn)(x,y)處的最大變化率方向。最大變化率是用方向α角來(lái)衡量的,即 為了能估計(jì)出Gx及Gy值,通常使用一些經(jīng)典的模板來(lái)做數(shù)字化近似。這些模板有Soble模板、Prewitt模板、Roberts模板等。 MATLAB圖像處理工具箱中提供了邊緣函數(shù)(edge)實(shí)現(xiàn)對(duì)圖像邊緣的檢測(cè),其基本語(yǔ)法格式為: [e , s] = edge(p, method, para) 其中p為輸入圖像,method是邊緣檢測(cè)的類(lèi)型,para為與edge對(duì)應(yīng)的參數(shù),e為與p同樣大小的邏輯矩陣,在檢測(cè)到邊緣的位置時(shí)值為1,其它位置則為0,s為一可選參數(shù)。,,1.Roberts模板(算子),Roberts算子又稱為Roberts交叉算子,它是由Roberts提出的一種利用局部差分算子尋找邊緣的模板,它在22鄰域上計(jì)算對(duì)角導(dǎo)數(shù)。在實(shí)際應(yīng)用中,為了簡(jiǎn)化計(jì)算,常用梯度函數(shù)的Roberts絕對(duì)值來(lái)近似。另外還可以用Roberts最大值算子來(lái)計(jì)算。Roberts邊緣檢測(cè)算子如圖所示: (a)Roberts-x (b)Roberts-y,,Roberts邊緣檢測(cè)器的語(yǔ)法格式如下: [e , s] = edge(p, roberts, thresh, direct) 其中p為輸入圖像,thresh為指定的閾值T,若T值未指定,則函數(shù)edge會(huì)自動(dòng)選擇一個(gè)值。direct為檢測(cè)邊緣的首選方向,通??蛇x作horizontal(水平)、vertical(垂直)或both(默認(rèn)值)。,2.Sobel模板(算子),Roberts算子的一個(gè)主要問(wèn)題是計(jì)算方向差分時(shí)對(duì)噪聲敏感。Sobel提出一種將方向差分運(yùn)算與局部平均相結(jié)合的方法,即Sobel算子。該算子是在以f(x,y)為中心的33鄰域上計(jì)算x和y方向的偏導(dǎo)數(shù),其模板如圖所示: (c) Sobel-x (d) Sobel-y,,Sobel邊緣檢測(cè)器語(yǔ)法格式: [e , s] = edge(p, sobel, thresh, direct) 其中p為輸入圖像,thresh為指定的閾值,direct為檢測(cè)邊緣的首選方向,通??蛇x作horizontal (水平)、vertical(垂直)或both(默認(rèn)值)。,3.Prewitt模板(算子),Prewit提出了與Sobel算子類(lèi)似的計(jì)算偏微分估計(jì)值的方法,Prewit模板如圖: (e) Prewit-x (f) Prewit-y,,Prewit邊緣檢測(cè)器調(diào)用語(yǔ)法如下: [e , s] = edge(p, prewitt, thresh, direct) 其中p為輸入圖像,thresh為指定的閾值,direct為檢測(cè)邊緣的首選方向,通常可選作horizontal (水平)、vertical(垂直)或both(默認(rèn)值)。,3.8.2 二階微分算子,上節(jié)討論了計(jì)算一階導(dǎo)數(shù)的邊緣檢測(cè)器,如果所求的一階導(dǎo)數(shù)高于某一閾值,則可確定該點(diǎn)為邊緣點(diǎn),這樣做會(huì)導(dǎo)致檢測(cè)的邊緣點(diǎn)太多。一種更好的方法就是求梯度局部最大值對(duì)應(yīng)的點(diǎn),并認(rèn)定它們是邊緣點(diǎn)。一階導(dǎo)數(shù)的局部最大值對(duì)應(yīng)著二階導(dǎo)數(shù)的零交叉點(diǎn)(zero crossing)。這樣,通過(guò)找圖像強(qiáng)度的二階導(dǎo)數(shù)的零交叉點(diǎn)就能找到精確邊緣點(diǎn)。 在數(shù)字圖像處理中,二階導(dǎo)數(shù)常用于拉普拉斯算子的計(jì)算,即二維函數(shù)f(x,y)的拉普拉斯的表達(dá)式為:,,,二階微分算子邊緣檢測(cè)器主要包括LoG算子和Canny算子。 常用的兩種拉普拉斯模板如圖所示:,1. LoG(Laplacian of a Gaussian)算子 LoG算子對(duì)含有噪聲的圖像是效果較好的邊緣檢測(cè)器。它把高斯平滑濾波器和拉普拉斯銳化濾波器結(jié)合了起來(lái),先使用高斯平滑濾波器平滑掉噪聲,再通過(guò)拉普拉斯銳化濾波器進(jìn)行邊緣檢測(cè),所以效果更好。當(dāng)拉普拉斯算子輸出出現(xiàn)過(guò)零點(diǎn)時(shí)就表明有邊緣存在。 LoG邊緣檢測(cè)器的語(yǔ)法格式如下: [e , s] = edge(p, log, thresh, sigmma) 其中p為輸入圖像,thresh為指定的閾值T,sigmma為高斯濾波器的標(biāo)準(zhǔn)方差,默認(rèn)值為2。若T值未指定,則函數(shù)edge會(huì)自動(dòng)選擇一個(gè)閾值。,2.Canny算子,Canny算子對(duì)最急劇變化方向上的邊緣特別敏感,但在沿邊緣方向上是不敏感的,其作用就像一個(gè)平滑算子。Canny邊緣檢測(cè)器是高斯函數(shù)的一階導(dǎo)數(shù),是對(duì)信噪比和定位之乘積的最優(yōu)化逼近算子。 算法有以下四個(gè)步驟:先用高斯濾波器平滑圖像,然后用一階偏導(dǎo)的有限差分來(lái)計(jì)算梯度的幅值和方向,再對(duì)梯度幅值進(jìn)行非極大值抑制,最后用雙閾值算法檢測(cè)和連接邊緣。 canny邊緣檢測(cè)器的語(yǔ)法格式如下: [e , s] = edge(p, canny, thresh, sigmma) 其中p為輸入圖像,thresh為指定的閾值T,若T值未指定,則函數(shù)edge會(huì)自動(dòng)選擇一個(gè)值,sigmma為平滑濾波器的標(biāo)準(zhǔn)方差,默認(rèn)值為1。,,【例3.8.1】對(duì)lena.bmp圖像使用不同的算子進(jìn)行邊緣檢測(cè)。檢測(cè)結(jié)果如圖3.39所示。 p=imread(lena.bmp); p=im2double(p); %轉(zhuǎn)換為double [e1,s1] = edge(p,sobel,0.03,both); % sobel檢測(cè)器 [e2,s2] = edge(p,roberts,0.03,both); % roberts檢測(cè)器 [e3,s3] = edge(p,prewitt,0.04,both); % prewitt檢測(cè)器 [e4,s4] = edge(p,log,0.003,2.10); % LoG檢測(cè)器 [e5,s5] = edge(p,canny,[0.05 0.12],1.6); % canny檢測(cè)器 subplot(2,3,1),imshow(p); subplot(2,3,2),imshow(e1); subplot(2,3,3),imshow(e2); subplot(2,3,4);imshow(e3); subplot(2,3,5),imshow(e4); subplot(2,3,6),imshow(e5);,圖3.39 邊緣檢測(cè)結(jié)果((a)Lena源圖;(b)使用Sobel算子;(c)使用Robert算子; (d)使用Prewitt算子;(e)使用LoG算子;(f)使用Canny算子),,,(a) (b) (c),,,幾種邊緣檢測(cè)算子性能比較:,Roberts算子是卷積模板為22的算子,對(duì)具有陡峭的低噪聲圖像響應(yīng)最好,但它存在一些功能上的缺陷,如不能檢測(cè)45倍數(shù)的邊緣,因此一般使用較少。 Sobel邊緣檢測(cè)器卷積模板為33的算子,對(duì)灰度漸變和噪聲較多的圖像處理效果較好。 Prewitt邊緣檢測(cè)器比Sobel檢測(cè)器在計(jì)算上簡(jiǎn)單,但易于產(chǎn)生噪聲。 LoG算子邊緣檢測(cè)器是先對(duì)圖像作最佳平滑,然后再利用平滑圖像的二階微分零交叉確定邊緣位置,它被認(rèn)為是微分法中利用平滑二階微分檢測(cè)圖像邊緣較成功的一種算法。 Canny邊緣檢測(cè)器是在抗噪聲干擾和精確定位之間選擇一個(gè)最佳折衷方案,在理論上是迄今為至所發(fā)現(xiàn)的性能最優(yōu)的一種邊緣檢測(cè)理論。,3.8.3 閾值分割,閾值化算法利用圖像中要提取的目標(biāo)物與其背景在灰度特性上的差異,把圖像視為具有不同灰度級(jí)的兩類(lèi)區(qū)域(目標(biāo)和背景)的組合,選取一個(gè)合適的閾值,以確定圖像中每一個(gè)像素點(diǎn)應(yīng)該屬于目標(biāo)還是背景區(qū)域,從而產(chǎn)生相應(yīng)的二值圖像。,如圖所示,最簡(jiǎn)單的利用閾值方法來(lái)分割灰度圖像的步驟如下:首先對(duì)一幅灰度取值在0和L-1之間的圖像確定一個(gè)灰度閾值T(0TL-1),然后將圖像中每個(gè)像素的灰度值與閾值T相比較,并將對(duì)應(yīng)的像素根據(jù)比較結(jié)果劃為兩類(lèi):,,閾值化算法通過(guò)設(shè)定不同的特征閾值,將像素點(diǎn)分為若干類(lèi),其關(guān)鍵在于閾值的選取。常見(jiàn)的閾值選取方法: 1.極小值點(diǎn)閾值 如果將直方圖的包絡(luò)看作一條曲線,則選取直方圖的谷可借助求曲線極小值的方法。 2.迭代閾值 先取圖像灰度范圍的中值作為初始閾值T0,然后按迭代公式進(jìn)行迭代。 3.最大方差閾值(又稱Otsu自動(dòng)閾值處理方法) 通過(guò)函數(shù)graythresh實(shí)現(xiàn)最大方差閾值的選取,其基本語(yǔ)法格式為: thresh = graythresh(p) 其中p為輸入圖像,thresh為最終返回的閾值,其范圍在0~1之間。,,【例3.8.2】 用迭代閾值選取法計(jì)算圖像的全局閾值并對(duì)圖像進(jìn)行分割。分割前后效果如圖3.41所示。 p= imread(bugs.bmp); p=rgb2gray(p); p=im2double(p); %轉(zhuǎn)換為double thresh = 0.5*(min(p(:)) + max(p(:))); %閾值初始化為最大值與最小值的中間值 flag = false; %迭代步長(zhǎng)控制 while ~flag g = p=thresh; %按當(dāng)前閾值劃分 thresh_1 = 0.5*(mean(p(g)) + mean(p(~g))); %求得新閾值 flag = abs(thresh - thresh_1)0.5; %更新迭代標(biāo)志 thresh = thresh_1; %更新閾值 end figure(1),imshow(p); figure(2), imshow(g);,,圖3.41 迭代閾值分割前后效果((a)原圖像;(b)迭代閾值分割后圖像),,【例3.8.3】 用最大方差閾值對(duì)圖像進(jìn)行分割。分割前后效果如圖3.42所示。 p=imread(bugs.bmp); p1=rgb2gray(p); thresh = graythresh(p1); %使用Ostu算法求得新閾值 g = im2bw(p1,thresh); %使用thresh對(duì)圖像進(jìn)行分割 figure(1), imshow(p); figure(2), imshow(g);,,圖3.42 Ostu閾值分割前后效果((a)原圖像; b.Ostu閾值分割后圖像),- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- MATLAB 圖形圖像 處理
鏈接地址:http://www.820124.com/p-2907319.html