數(shù)字圖像處理與深度學(xué)習(xí)技術(shù)應(yīng)用教材配套課件 第8章 圖像形態(tài)學(xué)處理_第1頁(yè)
數(shù)字圖像處理與深度學(xué)習(xí)技術(shù)應(yīng)用教材配套課件 第8章 圖像形態(tài)學(xué)處理_第2頁(yè)
數(shù)字圖像處理與深度學(xué)習(xí)技術(shù)應(yīng)用教材配套課件 第8章 圖像形態(tài)學(xué)處理_第3頁(yè)
數(shù)字圖像處理與深度學(xué)習(xí)技術(shù)應(yīng)用教材配套課件 第8章 圖像形態(tài)學(xué)處理_第4頁(yè)
數(shù)字圖像處理與深度學(xué)習(xí)技術(shù)應(yīng)用教材配套課件 第8章 圖像形態(tài)學(xué)處理_第5頁(yè)
已閱讀5頁(yè),還剩137頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第8章圖像形態(tài)學(xué)處理8.1概述基本思想:用一定形態(tài)的結(jié)構(gòu)元素去量度和提取圖像中的對(duì)應(yīng)形狀,達(dá)到分析和識(shí)別目的??捎糜趫D像處理的各個(gè)方面,包括圖像分割、特征抽取、邊界檢測(cè)等。對(duì)圖像處理的理論和技術(shù)產(chǎn)生了重大影響,已經(jīng)構(gòu)成一種新的圖像處理方法和理論,成為一個(gè)重要研究領(lǐng)域。8.1形態(tài)學(xué)基本概念這門學(xué)科在計(jì)算機(jī)文字識(shí)別,計(jì)算機(jī)顯微圖像分析,醫(yī)學(xué)圖像處理,工業(yè)檢測(cè)等方面都取得了非常成功的應(yīng)用。形態(tài)學(xué)方法已成為圖像應(yīng)用領(lǐng)域工程技術(shù)人員的必備工具。目前,有關(guān)數(shù)學(xué)形態(tài)學(xué)的技術(shù)和應(yīng)用正在不斷地研究和發(fā)展。形態(tài)學(xué)作用數(shù)學(xué)形態(tài)學(xué)的數(shù)學(xué)基礎(chǔ)和所用語(yǔ)言是集合論,具有完備的數(shù)學(xué)基礎(chǔ)。數(shù)學(xué)形態(tài)學(xué)的應(yīng)用可以簡(jiǎn)化圖像數(shù)據(jù),保持它們基本的形狀特性,并除去不相干的結(jié)構(gòu)。元素和集合:形態(tài)學(xué)數(shù)學(xué)基礎(chǔ)形態(tài)學(xué)數(shù)學(xué)基礎(chǔ)2)交集、并集和補(bǔ)集3)

包含、擊中與擊不中形態(tài)學(xué)作用結(jié)構(gòu)元素:形態(tài)學(xué)變換中的基本元素,是為了探測(cè)圖像的某種結(jié)構(gòu)信息而設(shè)計(jì)的特定形狀和尺寸的圖像,稱為收集圖像結(jié)構(gòu)信息的探針。結(jié)構(gòu)元素有多種類型:如圓形、方形、線型等,可攜帶知識(shí)(形態(tài)、大小、灰度和色度信息)來(lái)探測(cè)、研究圖像的結(jié)構(gòu)特點(diǎn)。形態(tài)學(xué)基本方法

二值形態(tài)學(xué)中的運(yùn)算對(duì)象是集合。設(shè)X為圖像集合,B為結(jié)構(gòu)元素,數(shù)學(xué)形態(tài)學(xué)運(yùn)算是用B對(duì)X進(jìn)行操作。需要指出,實(shí)際上結(jié)構(gòu)元素本身也是一個(gè)圖像集合。形態(tài)學(xué)基本方法形態(tài)學(xué)運(yùn)算包括:二值腐蝕和膨脹、二值開(kāi)閉運(yùn)算、骨架抽取、擊中擊不中變換等。

形態(tài)學(xué)4個(gè)基本算子:膨脹、腐蝕、開(kāi)啟和閉合組成。這些基本運(yùn)算還可推導(dǎo)和組合成各種數(shù)學(xué)形態(tài)學(xué)實(shí)用算法。形態(tài)學(xué)算子腐蝕:是將圖像X中每一與結(jié)構(gòu)元素B全等的子集B+x收縮為點(diǎn)x。腐蝕作用:消除物體邊界點(diǎn),使邊界向內(nèi)部收縮,可以把小于結(jié)構(gòu)元素的物體去除。選取不同的大小的結(jié)構(gòu)元素,去除不同大小的物體。如兩個(gè)物體間有細(xì)小的連通,通過(guò)腐蝕可將兩個(gè)物體分開(kāi)。腐蝕運(yùn)算S=

S--腐蝕后的二值圖像集合;B--腐蝕的結(jié)構(gòu)元素,每一個(gè)元素取值為0或1,它可以組成任何一種形狀的圖形,在B圖形中有一個(gè)中心點(diǎn);X--經(jīng)過(guò)二值化后的像素集合。用B來(lái)腐蝕X得到的集合S,S是由B完全包括在X中時(shí)B的當(dāng)前位置的集合。基本方法通常是拖動(dòng)結(jié)構(gòu)元素在X域移動(dòng),在每一個(gè)位置上,當(dāng)結(jié)構(gòu)元素B的中心點(diǎn)平移到X圖像上的某一點(diǎn)(x,y)。如果結(jié)構(gòu)元素內(nèi)的每一個(gè)像素都與以(x,y)為中心的相同鄰域中對(duì)應(yīng)像素完全相同,那么就保留(x,y)像素點(diǎn);對(duì)于不滿足條件的像素點(diǎn)則全部刪除,達(dá)到邊界向內(nèi)收縮效果?;痉椒˙+x的三種可能的狀態(tài):

M1說(shuō)明B+x與X相關(guān)最大,M3說(shuō)明B+x與X不相關(guān),而M2說(shuō)明B+x與X只是部分相關(guān)。腐蝕運(yùn)算滿足M1的點(diǎn)x的全體構(gòu)成結(jié)構(gòu)元素與圖像最大相關(guān)點(diǎn)集,這個(gè)點(diǎn)集稱為B對(duì)X的腐蝕,X用B腐蝕的結(jié)果:B完全包括在X中時(shí)B的原點(diǎn)位置的集合。腐蝕運(yùn)算(a)原圖

(b)結(jié)構(gòu)元素圖

(c)腐蝕示意圖腐蝕作用腐蝕作用腐蝕作用腐蝕:消除物體邊界點(diǎn)。結(jié)構(gòu)元素取3×3塊,使邊界減少一個(gè)像素。小于結(jié)構(gòu)元素的物體(毛刺、小凸起)去除。選取不同大小結(jié)構(gòu)元素,在原圖像中去掉不同大小的物體。如果兩個(gè)物體之間有細(xì)小的連通,當(dāng)結(jié)構(gòu)元素足夠大時(shí),可以將兩個(gè)物體分開(kāi)。

腐蝕作用作用:與腐蝕相反。對(duì)二值化物體邊界點(diǎn)擴(kuò)充,將與物體接觸的所有背景點(diǎn)合并到該物體中,使邊界向外部擴(kuò)張。如果兩個(gè)物體之間的距離比較近,會(huì)把兩個(gè)物體連通到一起。對(duì)填補(bǔ)圖像分割后物體中的空洞有用。膨脹如果結(jié)構(gòu)元素為一個(gè)圓盤:膨脹:填充圖像中的小孔(比結(jié)構(gòu)元素小的孔洞)及圖像邊緣處的小凹陷部分。腐蝕:消除圖像邊緣小的成分,并將圖像縮小,從而使其補(bǔ)集擴(kuò)大。膨脹和腐蝕:并不互為逆運(yùn)算,可以級(jí)連結(jié)合使用。膨脹作用

S=X

通常是拖動(dòng)結(jié)構(gòu)元素在X圖像域移動(dòng),在每一個(gè)位置上,當(dāng)結(jié)構(gòu)元素B的中心點(diǎn)平移到X圖像上的某一點(diǎn)(x,y),如果結(jié)構(gòu)元素的像素與目標(biāo)物體至少有一個(gè)像素相交,保留(x,y)像素點(diǎn),達(dá)到邊界向外擴(kuò)張。膨脹算子將X中的每一個(gè)點(diǎn)x擴(kuò)大為B+x:膨脹作用(a)原圖(b)結(jié)構(gòu)元素圖(c)膨脹示意圖膨脹作用膨脹作用8.2圖像腐蝕8.2.1水平腐蝕8.2.1水平腐蝕水平腐蝕的原理同上面介紹的相同,使用的結(jié)構(gòu)元素不同,水平腐蝕所用的結(jié)構(gòu)元素:1)得圖像的首地址及寬和高,并二值化。2)開(kāi)辟緩沖區(qū),初始化為255。3)由于使用1×3的結(jié)構(gòu)元素結(jié)構(gòu)[0,0,0],從第1行第2列開(kāi)始,將像素點(diǎn)賦為0,檢查這個(gè)像素點(diǎn),判斷該像素點(diǎn)的前一點(diǎn)和后一點(diǎn)中是否有背景點(diǎn),有則將檢查的像素點(diǎn)值賦為255,否則保持不變。4)循環(huán)步驟3,直到處理全部像素點(diǎn)。實(shí)現(xiàn)步驟函數(shù)說(shuō)明(1)retval=cv2.getStructuringElement(shape,ksize,anchor=None)retval:返回構(gòu)造的特定結(jié)構(gòu);shape:代表形狀類型,其中類型有以下三種:

cv2.MORPH_RECT,矩形結(jié)構(gòu)元素,所有元素值都是1;

cv2.MORPH_CROSS,十字形結(jié)構(gòu)元素,對(duì)角線元素值都是1;

cv2.MORPH_ELLIPSE,橢圓形結(jié)構(gòu)元素;ksize:代表形狀元素的大小,寫法為元組(width,height);anchor:坐標(biāo)(x,y),元素內(nèi)的錨定位置。默認(rèn)值為(-1,-1)即結(jié)構(gòu)化元素的中心。函數(shù)說(shuō)明(2)retval=cv2.erode(src,k[,anchor[,iterations[,boderType[,boderValue]]]])retval:表示返回的腐蝕處理結(jié)果;src:表示原始圖像,即需要被腐蝕的圖像;k:表示腐蝕操作時(shí)所要采取的結(jié)構(gòu)類型;anchor:表示錨點(diǎn)的位置,默認(rèn)為(-1,-1),表示在結(jié)構(gòu)元素的中心;iterations:表示腐蝕擦操作的迭代次數(shù);boderType:表示邊界樣式,一般默認(rèn)使用BORDER_CONSTANT;boderValue:表示邊界值,一般使用默認(rèn)值。效果圖效果展示8.2.2垂直腐蝕8.2.2垂直腐蝕垂直腐蝕所用的結(jié)構(gòu)元素:,

(1)得原圖像的首地址及寬和高。(2)開(kāi)辟緩沖區(qū),并初始化為255。(3)由于使用3×1的結(jié)構(gòu)元素結(jié)構(gòu),從第2行第1列開(kāi)始,將像素點(diǎn)賦為0,檢查這個(gè)像素點(diǎn),判斷該像素點(diǎn)的上一點(diǎn)和下一點(diǎn)中是否有背景點(diǎn),有則將檢查的像素點(diǎn)賦為255,否則保持不變。(4)循環(huán)步驟3,直到處理全部像素。實(shí)現(xiàn)步驟效果圖效果展示8.2.3全方向腐蝕8.2.3全方向腐蝕全方向腐蝕所用的結(jié)構(gòu)元素:(1)得原圖像的首地址及寬和高。(2)辟緩沖區(qū),并初始化為255。(3)為用到3×3的結(jié)構(gòu)元素,定義一個(gè)一維數(shù)組S[9];(4)從第2行第2列開(kāi)始,利用結(jié)構(gòu)元素?cái)?shù)組判斷除中心點(diǎn)外,四個(gè)為0的位置中是否有背景點(diǎn),有則將檢查的像素點(diǎn)賦為255,否則保持不變。(5)循環(huán)步驟4,直到處理完全部像素點(diǎn)。

實(shí)現(xiàn)步驟效果圖作用:圖像的邊界點(diǎn)消除,使圖像沿著邊界向內(nèi)收縮。操作過(guò)程:使用一個(gè)結(jié)構(gòu)元對(duì)像素進(jìn)行逐個(gè)遍歷,每一次判定的點(diǎn)都是與結(jié)構(gòu)元中心點(diǎn)所對(duì)應(yīng)的點(diǎn)。根據(jù)結(jié)構(gòu)元與被腐蝕圖像的關(guān)系來(lái)確定腐蝕的結(jié)果。

與結(jié)構(gòu)元完全相同時(shí),結(jié)構(gòu)元對(duì)應(yīng)的中心點(diǎn)為1,與結(jié)構(gòu)元不完全相同時(shí),結(jié)構(gòu)元對(duì)應(yīng)的中心點(diǎn)為0。常見(jiàn)的結(jié)構(gòu)元有:

矩形結(jié)構(gòu)、橢圓形結(jié)構(gòu)、十字交叉形結(jié)構(gòu)和線性結(jié)構(gòu)等。

腐蝕---小結(jié)

Python實(shí)現(xiàn)dst=cv2.erode(src,k[,anchor[,iterations[,boderType[,boderValue]]]])·dst表示返回的腐蝕處理結(jié)果?!rc表示原始圖像,即需要被腐蝕的圖像?!表示腐蝕操作時(shí)所要采取的結(jié)構(gòu)類型。兩種方式.1.通過(guò)自定義得到,2.通過(guò)cv2.getStructuringElement()函數(shù)得到·anchor表示錨點(diǎn)的位置,默認(rèn)為(-1,-1),表示在結(jié)構(gòu)元的中心?!terations表示腐蝕操作的迭代次數(shù)。·boderType表示邊界樣式,一般默認(rèn)使用BORDER_CONSTANT?!oderValue表示邊界值,一般使用默認(rèn)值。

【例1】使用cv2.erode()函數(shù)實(shí)現(xiàn)圖像的腐蝕操作。importcv2ascvimportnumpyasnpimage=cv.imread("F:/picture/aaa.jpg")#讀取一幅圖像cv.imshow("image",image)#顯示原始圖像k=np.ones((3,3),np.uint8)#構(gòu)建3×3的矩形結(jié)構(gòu)元img=cv.erode(image,k,iterations=3)

#腐蝕操作,迭代3次cv.imshow("erode",img)#顯示腐蝕后的圖像cv.waitKey()cv.destroyAllWindows()

a是原始圖像;b是迭代1次的腐蝕結(jié)果;c是迭代2次的腐蝕結(jié)果;d是迭代3次的結(jié)果。在iterations=3時(shí),腐蝕效果最好。

腐蝕程度隨迭代次數(shù)而加劇

效果展示8.3圖像膨脹8.3.1水平膨脹理論基礎(chǔ)水平膨脹所用的結(jié)構(gòu)元素如圖8-11所示

圖8-11水平膨脹結(jié)構(gòu)元素示意圖實(shí)現(xiàn)步驟(1)retval=cv2.dilate(src,k[,anchor[,iterations[,boderType[,boderValue]]]])retval:表示返回的膨脹處理結(jié)果;src:表示原始圖像,即需要被膨脹的圖像;k:表示膨脹操作時(shí)所要采取的結(jié)構(gòu)類型;anchor:表示錨點(diǎn)的位置,默認(rèn)為(-1,-1),表示在結(jié)構(gòu)元素的中心;iterations:表示膨脹操作的迭代次數(shù);boderType:表示邊界樣式,一般默認(rèn)使用BORDER_CONSTANT;boderValue:表示邊界值,一般使用默認(rèn)值。效果展示

圖8-12水平膨脹處理效果圖8.3.2垂直膨脹理論基礎(chǔ)垂直膨脹所用的結(jié)構(gòu)元素如圖8-13所示.圖8-13垂直膨脹結(jié)構(gòu)元素示意圖效果展示8.3.3全方向膨脹膨脹操作與腐蝕操作剛好相反,它是由圖像的邊界點(diǎn)處向外部擴(kuò)張。與腐蝕操作一樣,在圖像的膨脹操作過(guò)程中也是逐個(gè)像素地遍歷待膨脹圖像,并且根據(jù)結(jié)構(gòu)元與待膨脹圖像的關(guān)系來(lái)決定膨脹的效果。與結(jié)構(gòu)元完全相同時(shí),結(jié)構(gòu)元對(duì)應(yīng)的中心點(diǎn)為1,與結(jié)構(gòu)元有部分相同時(shí),結(jié)構(gòu)元對(duì)應(yīng)的中心點(diǎn)為1。膨脹

Python實(shí)現(xiàn)dst=cv2.dilate(src,k[,anchor[,iterations[,boderType[,boderValue]]]])?dst表示返回的膨脹處理結(jié)果。?src表示原始圖像,即需要被膨脹的圖像。?k表示膨脹操作時(shí)所要采取的結(jié)構(gòu)類型。它由兩種方式得到,第一種是通過(guò)自定義得到,第二種是通過(guò)cv2.getStructuringElement()函數(shù)得到?anchor表示錨點(diǎn)的位置,默認(rèn)為(-1,-1),表示在結(jié)構(gòu)元的中心。?iterations表示膨脹操作的迭代次數(shù)。?iterations表示膨脹操作的迭代次數(shù)。?boderType表示邊界樣式,一般默認(rèn)使用BORDER_CONSTANT。?boderValue表示邊界值,一般使用默認(rèn)值。

【例2】使用cv2.dilate()函數(shù)實(shí)現(xiàn)圖像的膨脹操作。importcv2ascvimportnumpyasnpimage=cv.imread("F:/picture/shortA.jpg")#讀取一幅圖像cv.imshow("image",image)#顯示原始圖像k=np.ones((3,3),np.uint8)#構(gòu)建3×3的矩形結(jié)構(gòu)元img1=cv.dilate(image,k,iterations=1)

#膨脹操作,迭代1次img2=cv.dilate(image,k,iterations=2)#膨脹操作,迭代2次img3=cv.dilate(image,k,iterations=3)#膨脹操作,迭代3次cv.imshow("dilate1",img1)#顯示膨脹后的圖像cv.imshow("dilate2",img2)#顯示膨脹后的圖像cv.imshow("dilate3",img3)#顯示膨脹后的圖像cv.waitKey()cv.destroyAllWindows()a是原始圖像;b是迭代1次;c是迭代2次;d是迭代3次。膨脹程度隨迭代次數(shù)而加劇。理論基礎(chǔ)全方向膨脹所用的結(jié)構(gòu)元素如圖8-15所示效果展示圖8-16全方位膨脹處理效果圖8.4圖像開(kāi)運(yùn)算與閉運(yùn)算由膨脹和腐蝕兩個(gè)運(yùn)算的復(fù)合與集合操作(并、交、補(bǔ)等)組合成的所有運(yùn)算構(gòu)成。開(kāi)運(yùn)算:先對(duì)圖像腐蝕后膨脹。閉運(yùn)算:先對(duì)圖像膨脹后腐蝕。使用同一個(gè)結(jié)構(gòu)元素。8.4圖像開(kāi)啟與閉合8.4.1圖像開(kāi)運(yùn)算開(kāi)運(yùn)算:能夠去除孤立的小點(diǎn),毛刺和小橋(即連通兩塊區(qū)域的小點(diǎn)),消除小物體、平滑較大物體的邊界,同時(shí)并不明顯改變其面積。不過(guò)這一恢復(fù)不是信息無(wú)損的,即它們通常不等于原始圖像。8.4.1圖像開(kāi)運(yùn)算開(kāi)運(yùn)算:先對(duì)圖像腐蝕后膨脹。腐蝕運(yùn)算:如果B上的所有點(diǎn)都在X的范圍內(nèi),則該點(diǎn)保留,否則將該點(diǎn)去掉。膨脹運(yùn)算:如果B上有一個(gè)點(diǎn)落在X的范圍內(nèi),則該點(diǎn)就為黑。開(kāi)運(yùn)算開(kāi)運(yùn)算和閉運(yùn)算依據(jù)腐蝕和膨脹的不可逆性,演變而來(lái)的。開(kāi)運(yùn)算:能夠去除孤立的小點(diǎn),毛刺和小橋(即連通兩塊區(qū)域的小點(diǎn)),消除小物體、平滑較大物體的邊界,同時(shí)并不明顯改變其面積。不過(guò)這一恢復(fù)不是信息無(wú)損的,即它們通常不等于原始圖像。開(kāi)運(yùn)算B的中心點(diǎn)和X上的點(diǎn)一個(gè)一個(gè)地對(duì)比。開(kāi)運(yùn)算經(jīng)過(guò)開(kāi)運(yùn)算后,能夠去除孤立的小點(diǎn),毛刺和小橋(即連通兩塊區(qū)域的小點(diǎn)),平滑較大物體的邊界,同時(shí)并不明顯改變面積。開(kāi)運(yùn)算作用(1)獲得原圖的首地址及圖像的高和寬。(2)調(diào)用腐蝕函數(shù)對(duì)圖像進(jìn)行腐蝕處理。(3)調(diào)用膨脹函數(shù)對(duì)腐蝕后的圖像進(jìn)行膨脹處理。實(shí)現(xiàn)步驟效果圖函數(shù)說(shuō)明retval=cv2.morphologyEx(src,op,k[,anchor[,iterations[,boderType[,boderValue]]]])retval:表示返回運(yùn)算的結(jié)果;src:表示原始圖像;op:表示操作類型,當(dāng)設(shè)置為cv2.MORPH_GRADIENT時(shí),表示對(duì)圖像進(jìn)行梯度運(yùn)算,當(dāng)設(shè)置為cv2.MORPH_OPEN和cv2.MORPH_CLOSE時(shí),可以對(duì)圖像實(shí)現(xiàn)開(kāi)運(yùn)算與閉運(yùn)算的操作;參數(shù)k、anchor、iterations、boderType和boderValue與cv2.dilate()函數(shù)的參數(shù)用法一致。效果展示圖8-18開(kāi)運(yùn)算處理效果圖8.4.2圖像閉運(yùn)算閉運(yùn)算是通過(guò)對(duì)腐蝕和膨脹的另一種不同次序的執(zhí)行而得到的。閉運(yùn)算:先膨脹后腐蝕,其功能是用來(lái)填充物體內(nèi)細(xì)小空洞、連接鄰近物體、平滑其邊界,同時(shí)不明顯改變其面積。

8.4.2圖像閉運(yùn)算膨脹運(yùn)算:如果B上有一個(gè)點(diǎn)落在X的范圍內(nèi),則該點(diǎn)就為黑。腐蝕運(yùn)算:如果B上的所有點(diǎn)都在X的范圍內(nèi),則該點(diǎn)保留,否則將該點(diǎn)去掉。閉運(yùn)算閉運(yùn)算是通過(guò)對(duì)腐蝕和膨脹的另一種不同次序的執(zhí)行而得到的,閉運(yùn)算是先膨脹后腐蝕的過(guò)程,其功能是用來(lái)填充物體內(nèi)細(xì)小空洞、連接鄰近物體、平滑其邊界,同時(shí)不明顯改變其面積。閉運(yùn)算作用B的中心點(diǎn)和X上的點(diǎn)一個(gè)一個(gè)地對(duì)比。閉運(yùn)算經(jīng)過(guò)閉運(yùn)算后,斷裂的地方被彌合了。閉運(yùn)算能夠填平小孔,彌合小裂縫,而總的位置和形狀不變。閉運(yùn)算作用閉運(yùn)算作用(1)獲得原圖像的首地址及圖像的高和寬。(2)調(diào)用膨脹函數(shù)對(duì)原圖像進(jìn)行膨脹處理。(3)調(diào)用腐蝕函數(shù)對(duì)膨脹后的圖像進(jìn)行腐蝕處理。實(shí)現(xiàn)步驟效果展示圖8-20閉運(yùn)算處理效果圖開(kāi)運(yùn)算和閉運(yùn)算是以腐蝕和膨脹為基礎(chǔ)操作的一種形態(tài)學(xué)處理方法。開(kāi)運(yùn)算與閉運(yùn)算都以腐蝕和膨脹操作為基礎(chǔ)。開(kāi)運(yùn)算是先將圖像腐蝕,再膨脹。閉運(yùn)算是先將圖像膨脹,再腐蝕。開(kāi)運(yùn)算與閉運(yùn)算---小結(jié)小結(jié)1.開(kāi)運(yùn)算:

先腐蝕后膨脹可以消除亮度較高的細(xì)小區(qū)域、在纖細(xì)點(diǎn)處分離物體。對(duì)于較大物體,在不明顯改變面積下平滑邊界。2.閉運(yùn)算:圖像先膨脹后腐蝕,與開(kāi)運(yùn)算相反可以填充白色物體內(nèi)細(xì)小黑色空洞的區(qū)域、連接臨近物體等。Python實(shí)現(xiàn)可以利用cv2.erode()函數(shù)和cv2.dilate()函數(shù)來(lái)實(shí)現(xiàn)開(kāi)運(yùn)算與閉運(yùn)算OpenCV提供cv2.morphologyEx()實(shí)現(xiàn)開(kāi)運(yùn)算與閉運(yùn)算。openimg=cv.morphologyEx(image,cv.MORPH_OPEN,k)closeimg=cv.morphologyEx(image,cv.MORPH_CLOSE,k)

op參數(shù)設(shè)置為cv2.MORPH_OPEN:開(kāi)運(yùn)算cv2.MORPH_CLOSE時(shí):閉運(yùn)算importcv2ascvimportnumpyasnpimage=cv.imread("F:/picture/aaa.jpg")#讀取一幅圖像k=np.ones((10,10),np.uint8)#構(gòu)建10×10的矩形結(jié)構(gòu)元openimg=cv.morphologyEx(image,cv.MORPH_OPEN,k)#設(shè)置參數(shù),實(shí)現(xiàn)圖像的開(kāi)運(yùn)算cv.imshow("image",image)#顯示原始圖像cv.imshow("openimg",openimg)#顯示開(kāi)運(yùn)算圖像cv.waitKey()cv.destroyAllWindows()a為原始圖像;b為對(duì)a進(jìn)行開(kāi)運(yùn)算的結(jié)果??梢钥闯?,圖像的毛邊被消除了?!纠?/p>

5】用cv2.erode()函數(shù)和cv2.dilate()函數(shù)來(lái)實(shí)現(xiàn)圖像的開(kāi)運(yùn)算importcv2ascvimportnumpyasnpimage=cv.imread("F:/picture/aaa.jpg")#讀取一幅圖像k=np.ones((10,10),np.uint8)#構(gòu)建10×10的結(jié)構(gòu)元erod_n=cv.erode(image,k)#實(shí)現(xiàn)圖像的腐蝕操作dilate_n=cv.dilate(erod_n,k)#實(shí)現(xiàn)圖像的膨脹操作cv.imshow("image",image)#顯示原始圖像cv.imshow("image",image)#顯示原始圖像cv.imshow("open",dilate_n)#顯示經(jīng)過(guò)先腐蝕后膨脹的圖像cv.waitKey()cv.destroyAllWindows()a為原始圖像,b為對(duì)a進(jìn)行先腐蝕后膨脹的結(jié)果。可以看出,先腐蝕后膨脹的結(jié)果與開(kāi)運(yùn)算的結(jié)果基本一樣。2.閉運(yùn)算演示【例

6】用cv2.morphologyEx()函數(shù)實(shí)現(xiàn)圖像的閉運(yùn)算importcv2ascvimportnumpyasnpimage=cv.imread("F:/picture/love.png")#讀取一幅圖像k=np.ones((10,10),np.uint8)#構(gòu)建10×10的矩形結(jié)構(gòu)元closeimg=cv.morphologyEx(image,cv.MORPH_CLOSE,k)#設(shè)置參數(shù),實(shí)現(xiàn)圖像的閉運(yùn)算cv.imshow("image",image)#顯示原始圖像cv.imshow("closeimg",closeimg)#顯示開(kāi)運(yùn)算圖像cv.waitKey()cv.destroyAllWindows()a原始圖像,b為對(duì)a進(jìn)行閉運(yùn)算的結(jié)果??梢钥闯觯熬皥D像的黑點(diǎn)被消除了?!纠?】用cv2.erode()函數(shù)和cv2.dilate()函數(shù)來(lái)實(shí)現(xiàn)圖像的閉運(yùn)算importcv2ascimportnumpyasnpimage=cv.imread("F:/picture/love.png")#讀取一幅圖像k=np.ones((10,10),np.uint8)#構(gòu)建10×10的結(jié)構(gòu)元dilate_n=cv.dilate(image,k)#實(shí)現(xiàn)圖像的膨脹操作erod_n=cv.erode(dilate_n,k)#實(shí)現(xiàn)圖像的腐蝕操作cv.imshow("image",image)#顯示原始圖像cv.imshow("close",erod_n)#顯示經(jīng)過(guò)先膨脹后腐蝕的圖像cv.waitKey()cv.destroyAllWindows()a為原始圖像,b為對(duì)a進(jìn)行先膨脹后腐蝕的結(jié)果??梢钥闯?,先膨脹后腐蝕的結(jié)果與閉運(yùn)算的結(jié)果基本上一樣8.5形態(tài)學(xué)梯度運(yùn)算理論基礎(chǔ)梯度運(yùn)算是利用圖像的膨脹圖像減去腐蝕圖像的一種形態(tài)學(xué)操作,這種操作可以獲得圖像的邊緣信息。形態(tài)學(xué)梯度的定義:函數(shù)說(shuō)明dst=cv2.morphologyEx(src,op,k[,anchor[,iterations[,boderType[,boderValue]]]])dst:表示返回梯度運(yùn)算的結(jié)果。src:表示原始圖像。op:表示操作類型,當(dāng)設(shè)置為cv2.MORPH_GRADIENT時(shí),表示對(duì)圖像進(jìn)行梯度運(yùn)算。參數(shù)k、anchor、iterations、boderType和boderValue與cv2.dilate()函數(shù)的參數(shù)用法一致。效果展示(a)是原始圖像;(b)是結(jié)構(gòu)元k=2×2的梯度運(yùn)算結(jié)果;(c)是結(jié)構(gòu)元k=5×5的梯度運(yùn)算結(jié)果,隨著結(jié)構(gòu)元k的增大,掃描到的邊緣會(huì)越來(lái)越粗,以至于無(wú)法分辨出邊緣。圖8-21形態(tài)學(xué)梯度運(yùn)算利用圖像的膨脹圖像減去腐蝕圖像的一種形態(tài)學(xué)操作,可以獲得圖像的邊緣信息。梯度運(yùn)算的過(guò)程就是膨脹結(jié)果減去腐蝕結(jié)果。梯度運(yùn)算---小結(jié)Python實(shí)現(xiàn)dst=cv2.morphologyEx(src,op,k[,anchor[,iterations[,boderType[,boderValue]]]])dst表示返回梯度運(yùn)算的結(jié)果。src表示原始圖像。op表示操作類型,當(dāng)設(shè)置為cv2.MORPH_GRADIENT時(shí),表示對(duì)圖像進(jìn)行梯度運(yùn)算。參數(shù)k、anchor、iterations、boderType和boderValue與cv2.dilate()函數(shù)的參數(shù)用法一致。importcv2ascvimportnumpyasnpimage=cv.imread("F:/picture/contours.png")#讀取一幅圖像k1=np.ones((2,2),np.uint8)

#構(gòu)建一個(gè)2×2的結(jié)構(gòu)元k2=np.ones((5,5),np.uint8)#構(gòu)建一個(gè)5×5的結(jié)構(gòu)元r1=cv.morphologyEx(image,cv.MORPH_GRADIENT,k1)#實(shí)現(xiàn)圖像的梯度運(yùn)算r2=cv.morphologyEx(image,cv.MORPH_GRADIENT,k2)#實(shí)現(xiàn)圖像的梯度運(yùn)算cv.imshow("image",image)#顯示原圖cv.imshow("r1",r1)#顯示梯度運(yùn)算后的結(jié)果圖cv.imshow("r2",r2)#顯示梯度運(yùn)算后的結(jié)果圖cv.waitKey()cv.destroyAllWindows()a是原始圖像;b是結(jié)構(gòu)元k=2*2的梯度運(yùn)算結(jié)果;c是結(jié)構(gòu)元k=5*5的梯度運(yùn)算結(jié)果。隨著結(jié)構(gòu)元k的增大,掃描到的邊緣會(huì)越來(lái)越粗,以至于無(wú)法分辨出邊緣。8.6黑帽與禮帽運(yùn)算理論基礎(chǔ)黑帽與禮帽運(yùn)算建立在開(kāi)運(yùn)算與閉運(yùn)算的基礎(chǔ)上。(1)黑帽運(yùn)算黑帽運(yùn)算是用原始圖像減去閉運(yùn)算的結(jié)果,即它可以獲得比原始圖像邊緣更加黑暗的邊緣部分,或者獲得圖像內(nèi)部的小孔。(2)禮帽運(yùn)算禮帽運(yùn)算是用原始圖像減去開(kāi)運(yùn)算的結(jié)果,即它可以獲得圖像的噪聲信息或者比原始圖像邊緣更亮的邊緣部分。函數(shù)說(shuō)明在OpenCV中提供了比較方便的函數(shù)cv2.morphologyEx()來(lái)直接實(shí)現(xiàn)圖像的黑帽運(yùn)算與禮帽運(yùn)算。當(dāng)將op參數(shù)設(shè)置為cv2.MORPH_BLACKHAT和cv2.MORPH_TOPHAT時(shí),可以對(duì)圖像進(jìn)行黑帽運(yùn)算與禮帽運(yùn)算的操作。黑帽運(yùn)算效果展示圖8-22黑帽運(yùn)算(b)為對(duì)圖8-22(a)進(jìn)行黑帽運(yùn)算的結(jié)果??梢钥闯?,黑帽運(yùn)算可以將目標(biāo)內(nèi)部暗的部分提取出來(lái)。禮帽運(yùn)算效果展示圖8-33禮帽運(yùn)算(b)為對(duì)圖8-23(a)進(jìn)行禮帽運(yùn)算的結(jié)果??梢钥闯?,禮帽運(yùn)算可以將目標(biāo)邊緣部分提取出來(lái)。黑帽與禮帽運(yùn)算建立在開(kāi)運(yùn)算與閉運(yùn)算的基礎(chǔ)上。1.黑帽運(yùn)算:原始圖像—閉運(yùn)算

可以獲得比原始圖像邊緣更加黑暗的邊緣部分,或者獲得圖像內(nèi)部的小孔。2.禮帽運(yùn)算:原始圖像—圖像開(kāi)運(yùn)算可以獲得圖像的噪聲信息或者比原始圖像邊緣更亮的邊緣部分。黑帽與禮帽運(yùn)算---小結(jié)Python實(shí)現(xiàn)cv2.morphologyEx()來(lái)直接實(shí)現(xiàn)圖像的黑帽運(yùn)算與禮帽運(yùn)算。當(dāng)將op參數(shù)設(shè)置為openimg=cv.morphologyEx(image,cv.MORPH_OPEN,k)closeimg=cv.morphologyEx(image,cv.MORPH_CLOSE,k)

op參數(shù)設(shè)置為cv2.MORPH_OPEN:開(kāi)運(yùn)算cv2.MORPH_CLOSE時(shí):閉運(yùn)算cv2.MORPH_BLACKHAT:黑帽運(yùn)算cv2.MORPH_TOPHAT時(shí):禮帽運(yùn)算的操作。importcv2ascvimportnumpyasnpimage=cv.imread("F:/picture/love.png")#讀取一幅圖像k=np.ones((10,10),np.uint8)#構(gòu)建10×10的矩形結(jié)構(gòu)元bhimg=cv.morphologyEx(image,cv.MORPH_BLACKHAT,k)#設(shè)置參數(shù),實(shí)現(xiàn)圖像的黑帽運(yùn)算cv.imshow("image",image)#顯示原始圖像cv.imshow("bhimg",bhimg)#顯示黑帽運(yùn)算圖像cv.waitKey()cv.destroyAllWindows()a為原始圖像,b為對(duì)a進(jìn)行黑帽運(yùn)算的結(jié)果??梢钥闯?,黑帽運(yùn)算可以將圖像內(nèi)部和邊緣中比原始圖像暗的部分提取出來(lái)?!纠?/p>

9】

用cv2.morphologyEx()函數(shù)實(shí)現(xiàn)圖像的禮帽運(yùn)算importcv2ascvimportcv2ascvimportnumpyasnpimage=cv.imread("F:/picture/love.png")

#讀取一幅圖像k=np.ones((10,10),np.uint8)#構(gòu)建10×10的矩形結(jié)構(gòu)元bhimg=cv.morphologyEx(image,cv.MORPH_TOPHAT,k)#設(shè)置參數(shù),實(shí)現(xiàn)圖像的禮帽運(yùn)算cv.imshow("image",image)#顯示原始圖像cv.imshow("bhimg",bhimg)#顯示禮帽運(yùn)算圖像cv.waitKey()cv.destroyAllWindows()a為原始圖像,b為對(duì)a進(jìn)行禮帽運(yùn)算的結(jié)果??梢钥闯?,禮帽運(yùn)算可以將圖像內(nèi)部和邊緣中比原始圖像亮的部分提取出來(lái)。8.7圖像細(xì)化細(xì)化技術(shù):把一個(gè)平面區(qū)域簡(jiǎn)化成圖的結(jié)構(gòu)形狀表示法。骨架:一種細(xì)化結(jié)構(gòu),它是目標(biāo)的重要拓?fù)涿枋?,具有非常廣泛的應(yīng)用。在圖像識(shí)別或數(shù)據(jù)壓縮時(shí),經(jīng)常用細(xì)化結(jié)構(gòu),例如,在識(shí)別字符之前,往往要先對(duì)字符作細(xì)化處理,求出字符的細(xì)化結(jié)構(gòu)。8.5圖像細(xì)化細(xì)化:目的是將圖像的骨架提取出來(lái)的同時(shí),保持圖像細(xì)小部分的連通性,特別是在文字識(shí)別,地質(zhì)識(shí)別,工業(yè)零件識(shí)別或圖像理解中,先對(duì)被處理的圖像進(jìn)行細(xì)化有助于突出形狀特點(diǎn)和減少冗余信息量。細(xì)化細(xì)化技術(shù):把一個(gè)平面區(qū)域簡(jiǎn)化成圖的結(jié)構(gòu)形狀表示法。骨架:一種細(xì)化結(jié)構(gòu),它是目標(biāo)的重要拓?fù)涿枋觯哂蟹浅V泛的應(yīng)用。在圖像識(shí)別或數(shù)據(jù)壓縮時(shí),經(jīng)常用細(xì)化結(jié)構(gòu),例如,在識(shí)別字符之前,往往要先對(duì)字符作細(xì)化處理,求出字符的細(xì)化結(jié)構(gòu)。骨架抽取細(xì)化過(guò)程:求一圖像骨架的過(guò)程。骨架:重要拓?fù)涿枋?,指骨骼部分。長(zhǎng)方形骨架:長(zhǎng)方向上的中軸線;正方形骨架:中心點(diǎn);圓骨架:圓心;直線骨架:自身;孤立點(diǎn)骨架:自身。細(xì)化細(xì)化細(xì)化算法:采取逐次去除邊界的方法來(lái)進(jìn)行的,不能破壞圖像的連通性。在細(xì)化一幅圖像X時(shí)應(yīng)滿足兩個(gè)條件:第一,在細(xì)化的過(guò)程中,X應(yīng)該有規(guī)律地縮??;第二,在X逐步縮小的過(guò)程中,應(yīng)當(dāng)使X的連通性質(zhì)保持不變。細(xì)化實(shí)際應(yīng)用:通常選擇一組結(jié)構(gòu)元素對(duì),不斷在這些結(jié)構(gòu)對(duì)中循環(huán),如果所得結(jié)果不再變化,則終止迭代過(guò)程,隨著迭代的進(jìn)行,集合也不斷細(xì)化。結(jié)構(gòu)對(duì)的選擇:僅受結(jié)構(gòu)元素不相交的限制。事實(shí)上,每一個(gè)Bi(i=1,2,…,N)都可以是相同的結(jié)構(gòu)對(duì),即在不斷重復(fù)的迭代細(xì)化過(guò)程使用同一個(gè)結(jié)構(gòu)對(duì)。。細(xì)化設(shè)置一個(gè)5*5的鄰域S模板;S模板中各個(gè)位置上的取值取決于模板所對(duì)應(yīng)圖像中不同位置的像素,如果S模板某一個(gè)位置上所對(duì)應(yīng)的像素值為白,模板上該位置賦為0,否則賦為1。細(xì)化s[0][0]s[0][1]s[0][2]s[0][3]s[0][4]s[1][0]s[1][1]s[1][2]s[1][3]s[1][4]s[2][0]s[2][1]s[2][2]s[2][3]s[2][4]s[3][0]s[3][1]s[3][2]s[3][3]s[3][4]s[4][0]s[4][1]s[4][2]s[4][3]s[4][4]N(s[2][2])表示以s[2][2]為中心的3×3鄰域內(nèi)目標(biāo)像素(即黑點(diǎn))的個(gè)數(shù)。取其中的3×3鄰域以s[2][2]為中心點(diǎn),則T(s[

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論