




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
形態學算法的MATLAB實現案例3.1形態學的基礎操作形態學的基礎操作為腐蝕和膨脹兩個操作,這兩個操作為形態學處理的基礎,許多的形態學算法都是以這兩個操作為基礎而實現的。下面為腐蝕和膨脹的MATLAB編程實現:EQ\o\ac(○,1)腐蝕腐蝕操作可以用來去除掉細小的噪聲或物體,去除邊界,斷開細小的連接。知道腐蝕的作用后,了解一下腐蝕的定義:若A,B為二維空間Z2中的集合,那么A被B腐蝕的結果為所有的B按照x平移后且包含于A的點x的集合。用公式表達為:AEQ\o\ac(○,-)B={x|(B)xA}。根據腐蝕的定義可知,我們要實現腐蝕的算法編程,首先要求結構元B的原點經過集合A(被操作的圖像)的每一個點,所以為防止遺漏集合A的邊界部分,需先要對A用0來擴充邊界,要求結構元B的原點在集合A的邊界時,擴充后的集合Ak完全包含結構元B。判斷結構元B的原點在經過集合A中的點時,集合A是否完全包含結構元B,可以用結構元B與擴充后的集合Ak重合部分的邏輯運算&后矩陣C中1的個數來實現,若矩陣C中1的個數等于結構元B中1的個數,則結構元B完全在集合A中,此時結構元B原點所在集合A的位置的像素值不變(即仍為1);若矩陣中1的個數與結構元B中1的個數不等,則結構元B不完全在集合A中,此時結構元B原點所在的集合A的位置的像素值變為0(即被腐蝕)。重復上述操作,直到集合A中所有的點都被結構元B的原點經過,則完成了結構元B對集合A的腐蝕。由上文腐蝕算法的編程思路可知,若A為圖3.1.1(A的像素值為圖3.1.4),B為圖3.1.2(B的像素值為圖3.1.5,其中為EQ\o\ac(○,1)結構元B的原點),那么A被B腐蝕的過程為:讓結構元B的原點經過A的每一個點,找出A不能完全包含B的點,如圖3.1.4中當B的原點在A的第一行時,結構元B的第一行不在A中,故A的第一行被消去(即被腐蝕)像素值變為0,同理A的第五行被消去像素值變為0,A的第1列被消去像素值變為0,A的第五列被消去像素值變為0,最終只剩下A被B腐蝕后的圖像3.1.3。具體算法實現為:functionF=fushi(A,B)[m,n]=size(B);%結構元行數和列數ind=sum(nonzeros(B));%結構元1的個數mk=floor(m/2);nk=floor(n/2);Ak=padarray(A,[mk,nk]);%對邊界圖進行擴充,目的是為了處理邊界點,這里擴充數據為0[M,N]=size(A);F=zeros(M,N);fori=1:Mforj=1:NBz=Ak(i:i+m-1,j:j+n-1);C=Bz&B;C1=sum(nonzeros(C));%C中1的個數ifC1==indF(i,j)=1;elseF(i,j)=0;endendendsubplot(1,2,1),imshow(A),title('原二值圖像');subplot(1,2,2),imshow(F),title('腐蝕后的二值圖像');其中兩個輸入原二值圖像A和結構元B為:>>A=[0,0,0,0,0,0,0;0,1,1,1,1,0,0;0,1,1,1,1,1,0;0,1,1,1,1,1,0;0,1,1,1,1,1,0;0,1,1,1,1,0,0;0,0,0,0,0,0,0];>>B=[0,1,0;1,1,1;0,1,0];兩個圖像顯示結果為圖3.1.1和圖3.1.2,原二值圖像A和結構元B經過腐蝕操作F=fushi(A,B)后,輸出結果為圖3.1.3(即腐蝕后圖像)。>>F=fushi(A,B)3.1.13.1.23.1.3各張圖像的像素值:3.1.43.1.53.1.6EQ\o\ac(○,2)膨脹膨脹操作可以用來填充物體內細小空洞,連接物體中小的斷裂,連接臨近物體。了解了膨脹操作的作用后,我們來講一下膨脹的定義:若A,B為二維空間Z2中的集合,是B關于原點的反射,φ為空集,那么A被B的膨脹結果為所有的按照x平移后與A至少有一個非零公共元素的點x的集合,用公式表達為:
AEQ\o\ac(○,+)B={x|[()x∩A]≠φ}。根據膨脹的定義可知,我們要實現膨脹的算法編程,要先求結構元B關于原點的反射(結構元B對稱,則反射和結構元一樣),反射的原點需要經過集合A的每一個點,也需用0擴充集合A的邊界,要求反射的原點在集合A的邊界時,擴充后的集合Ak完全包含反射。判斷反射是否與集合A有非零公共元素,可以用反射與擴充后的集合Ak重合部分的邏輯運算&后矩陣中1的個數來實現,若矩陣中1的個數大于1,則表示反射與集合A有零公共元素,此時反射原點所在的集合A的位置的像素值變為1(即被膨脹);若矩陣中1的個數不大于0,則表示反射與集合A沒有零公共元素,此時反射原點所在的集合A的位置的像素值不變。重復上述操作,直到集合A中所有的點都被反射的原點經過,則完成了結構元B對集合A的膨脹。由上文膨脹算法的編程思路可知,若A為圖3.1.1(A的像素值為圖3.1.4),B為圖3.1.2(B的像素值為圖3.1.5,其中為EQ\o\ac(○,1)結構元B的原點),那么A被B的膨脹過程為:先讓結構元B反射(因為結構元對稱,故結構元B的反射和結構元B一樣),讓反射的原點經過A的每一個點,找出反射不在A上的點,如圖3.1.4中當反射的原點在A的第一行時,反射的第一行不在A中,故A的第一行上方的第一到第四列被擴展(即被膨脹)像素值變為1,同理A的第五行下邊的第一到第四列被膨脹像素值變為1,A的第1列左面的第一到第五行被膨脹像素值變為1,A的第五列的第一行和第五行被膨脹像素值變為1,A的第五列的右邊的第二到第四行被膨脹像素值變為1,最終形成了A被B膨脹后的圖像3.1.7。具體算法實現為:functionP=pengzhang(A,B)[m,n]=size(B);%結構元行數和列數B=rot90(B,2);%將結構元關于原點反射mk=floor(m/2);nk=floor(n/2);Ak=padarray(A,[mk,nk]);%對邊界圖進行擴充,目的是為了處理邊界點,這里擴充數據為0[M,N]=size(A);P=zeros(M,N);fori=1:Mforj=1:NBz=Ak(i:i+m-1,j:j+n-1);C=Bz&B;C1=sum(nonzeros(C));%C中1的個數ifC1>0P(i,j)=1;elseP(i,j)=0;endendendsubplot(1,2,1),imshow(A),title('原二值圖像');subplot(1,2,2),imshow(P),title('膨脹后的二值圖像');其中兩個輸入原二值圖像A和結構元B為:>>A=[0,0,0,0,0,0,0;0,1,1,1,1,0,0;0,1,1,1,1,1,0;0,1,1,1,1,1,0;0,1,1,1,1,1,0;0,1,1,1,1,0,0;0,0,0,0,0,0,0];>>B=[0,1,0;1,1,1;0,1,0];兩個圖像顯示結果為圖3.1.1和圖3.1.2,原二值圖像A和結構元B經過膨脹操作P=pengzhang(A,B)后,輸出結果為圖3.1.7(即膨脹后圖像)。>>P=pengzhang(A,B)3.1.13.1.23.1.7各張圖像的像素值:3.1.43.1.53.1.8以上為形態學的兩個基礎操腐蝕和膨脹的MATLAB編程實現,膨脹和腐蝕兩個操作是關于集合補和反射的對偶。用公式表達為:(AEQ\o\ac(○,-)B)C=ACEQ\o\ac(○,+)和(AEQ\o\ac(○,+)B)C=ACEQ\o\ac(○,-)。了解了形態學基礎算法后,我們來了解一下形態學進階操作。3.2形態學進階操作上文對形態學的兩個基礎操腐蝕和膨脹進行了MATLAB編程實現,在了解了形態學的基礎操作后,下文將會對一些形態學進階操作進行編程實現,在本章節主要考慮開操作,閉操作,邊緣提取,孔洞填充,連通分量的提取,灰度腐蝕和灰度膨脹這七種算法的編程實現。以下為形態學進階操作的實現過程:EQ\o\ac(○,1)開操作我們通常使用開操作在不明顯改變物體的面積的基礎上來斷開狹窄的連接,消除一些細小的物體或細的突出物,使圖像輪廓變光滑。同樣的,在了解了開操作的作用后,來介紹一下開操作的定義:若A是原始圖像,B是結構元素圖像,則集合A被結構元素B作開運算為A被B腐蝕后的結果再被B膨脹,用公式表達為:AοB=(AEQ\o\ac(○,-)B)EQ\o\ac(○,+)B根據開操作的定義可知,開操作是形態學基礎操作腐蝕和膨脹的進階操作,要實現開操作算法,也就是先使用結構元B對集合A進行腐蝕操作,再對腐蝕操作后的結果使用結構元B進行膨脹操作,在上文中我們已經對腐蝕和膨脹兩個基礎操作進行了MATLAB編程實現,故而可以直接調用這兩個基礎操作的m文件來實現形態學開操作。由上文開操作算法的實現可知,若A為圖3.2.1(A的像素值為圖3.2.5),B為圖3.2.2(B的像素值為圖3.2.6,其中為EQ\o\ac(○,1)結構元B的原點),那么A被B的開操作過程為:使用結構元B先對A進行腐蝕運算,消除了一些孤立的細小的元素,如圖3.2.5中A的第一行第一列被腐蝕即像素值變為0,同時使保留下的物體變小,如圖3.2.5中A的第二列的第二行到第六行被腐蝕像素值變為0,A的第二行的第三列到第五列被腐蝕像素值變為0,A的第六行的第三列到第五列被腐蝕像素值變為0,A的第六列的第三行到第五行被腐蝕像素值變為0,最終形成了腐蝕后的二值圖圖像3.2.3,然后使用結構元B再對圖像3.2.3進行膨脹運算,將圖3.2.7中A的第二列的第三到五行像素值變為1,A的第第二行的第三到五列像素值變為1,A的第六列的第三到五行像素值變為1,A的第六行的第三到五列像素值變為1,最后形成了開操作后的二值圖圖像3.2.4。具體算法實現為:兩個輸入原二值圖像A和結構元B為:>>A=[1,0,0,0,0,0,0;0,1,1,1,1,0,0;0,1,1,1,1,1,0;0,1,1,1,1,1,0;0,1,1,1,1,1,0;0,1,1,1,1,0,0;0,0,0,0,0,0,0];>>B=[0,1,0;1,1,1;0,1,0];兩個圖像顯示結果為圖3.2.1和圖3.2.2,原二值圖像A和結構元B經過腐蝕操作F=fushi(A,B)后,輸出結果為圖3.2.3(即腐蝕后圖像)。>>F=fushi(A,B);再將腐蝕后圖像3.2.3當做輸入,對其進行膨脹操作P=pengzhang(F,B)后,輸出結果為圖3.2.4(即開操作后的圖像)。>>P=pengzhang(F,B);3.2.13.2.23.2.33.2.4各張圖像的像素值:3.2.53.2.63.2.73.2.8EQ\o\ac(○,2)閉操作閉操作的作用是在不明顯改變其面積的基礎上,填充物體內細小空洞,連接物體中小的斷裂,連接臨近物體,平滑邊界。同樣的,接下來將介紹一下閉操作的定義:設A是原始圖像,B是結構元素圖像,則集合A被結構元素B作閉運算為A被B膨脹后的結果再被B腐蝕,用公式表達為:A?B=(AEQ\o\ac(○,+)B)EQ\o\ac(○,-)B。根據閉操作的定義可知,閉操作同樣是形態學基礎操作腐蝕和膨脹的進階操作,要實現閉操作算法,也就是先使用結構元B對集合A進行膨脹操作,再對膨脹操作后的結果使用結構元B進行腐蝕操作,在上文中我們已經對腐蝕和膨脹兩個基礎操作進行了MATLAB編程實現,故而可以直接調用這兩個基礎操作的m文件來實現形態學閉操作。由上文閉操作算法的實現可知,若A為圖3.2.9(A的像素值為圖3.2.12),B為圖3.2.2(B的像素值為圖3.2.6,其中為EQ\o\ac(○,1)結構元B的原點),那么A被B的閉操作過程為:先使用結構元B對A進行膨脹運算,使圖像A中小的斷裂連接起來,如圖3.2.12中A的第四行的第四列的斷裂被鏈接起來像素值變為1,但同時圖像A擴大,如圖3.2.12中A的第一列的第二到六行被膨脹像素值變為1,A的第一行的第二到五列被膨脹像素值變為1,A的第七行的第二到五列被膨脹像素值變為1,A的第六列的第二行和第六行被膨脹像素值變為1,A的第七列的第三到五行被膨脹像素值變為1,最終形成了膨脹后的二值圖圖像3.2.10,然后使用結構元B再對圖像3.2.10進行腐蝕運算,如圖3.2.13中A的第一列的第二到六行被腐蝕像素值變為0,A的第一行的第二到五列被腐蝕像素值變為0,A的第七行的第二到五列被腐蝕像素值變為0,A的第六列的第二行和第六行被腐蝕像素值變為0,A的第七列的第三到五行被腐蝕像素值變為0,最后形成了閉操作后的二值圖圖像3.2.11。具體算法實現為:兩個輸入原二值圖像A和結構元B為:>>A=[0,0,0,0,0,0,0;0,1,1,1,1,0,0;0,1,1,1,1,1,0;0,1,1,0,1,1,0;0,1,1,1,1,1,0;0,1,1,1,1,0,0;0,0,0,0,0,0,0];>>B=[0,1,0;1,1,1;0,1,0];兩個圖像顯示結果為圖3.2.9和圖3.2.2,原二值圖像A和結構元B經過膨脹操作P=pengzhang(A,B)后,輸出結果為圖3.2.10(即膨脹后圖像)。>>P=pengzhang(A,B);再將膨脹后圖像3.2.10當做輸入,對其進行腐蝕操作F=fushi(P,B)后,輸出結果為圖3.2.11(即閉操作后的圖像)。>>F=fushi(P,B);3.2.93.2.23.2.103.2.11各張圖像的像素值:3.2.123.2.63.2.133.2.14以上為開操作和閉操作的編程實現,像腐蝕和膨脹一樣,開操作和閉操作是關于集合補和反設的對偶。用公式表達為:(A?B)C=ACο和(AοB)C=AC?。EQ\o\ac(○,3)邊緣提取邊緣提取顧名思義就是提取圖像的邊緣部分(即邊界β(A)),是基礎算法腐蝕的進階操作,可通過用原始圖像減去被結構元B腐蝕后的圖像來實現。用公式表達為:β(A)=A-(AEQ\o\ac(○,-)B)。根據邊緣提取的定義可知,實現邊緣提取即集合A和A被結構元B腐蝕后的集合的差。在上文中的EQ\o\ac(○,1)腐蝕已經實現了腐蝕的MATLAB編程,可直接調用?,F需求出集合A和A被結構元B腐蝕后的集合的差,可使兩個集合中的每個元素做對比來實現。當集合A的元素為1腐蝕后集合的元素也為1時,此時差的元素為0;當集合A的元素為1腐蝕后集合的元素為0時,此時差的元素為1;除這兩種情況外,差的集合的元素為0。重復上述操作,直到集合A和腐蝕后的集合中的所有元素全部對比,此時差的集合即集合A的邊緣。由上文邊緣提取算法的實現可知,若A為圖3.2.15(A的像素值為圖3.2.18),B為圖3.2.2(B的像素值為圖3.2.6,其中為EQ\o\ac(○,1)結構元B的原點),那么A的邊緣提取過程為:首先使用結構元B對集合A進行腐蝕,如圖3.2.18中A的第一行被消去(即被腐蝕)像素值變為0,同理A的第五行被消去像素值變為0,A的第1列被消去像素值變為0,A的第五列被消去像素值變為0,最終只剩下圖3.2.16即A被B腐蝕后的圖像;再用集合A減去腐蝕后的圖像F,得到集合A被結構元B腐蝕掉的元素,最終形成了原圖像的邊緣圖像3.2.17。具體算法實現為:functionC=cha(A,B)[m,n]=size(A);%圖像的行數和列數C=zeros(m,n);fori=1:mforj=1:nifA(i,j)==1&B(i,j)==1C(i,j)=0;elseifA(i,j)==1&B(i,j)==0C(i,j)=1;elseC(i,j)=0;endendend兩個輸入原二值圖像A和結構元B為:>>A=[0,0,0,0,0,0,0;0,1,1,1,1,0,0;0,1,1,1,1,1,0;0,1,1,1,1,1,0;0,1,1,1,1,1,0;0,1,1,1,1,0,0;0,0,0,0,0,0,0];>>B=[0,1,0;1,1,1;0,1,0];兩個圖像顯示結果為圖3.2.15和圖3.2.2,原二值圖像A和結構元B經過腐蝕操作F=fushi(A,B)后,輸出結果為圖3.2.16(即腐蝕后圖像)。>>F=fushi(A,B);再將原始圖3.2.15和腐蝕后圖3.2.16當做輸入,對其進行求差操作C=cha(A,F)后,輸出結果為圖3.2.17(即A的邊界)。>>C=cha(A,F);3.2.153.2.23.2.163.2.17各張圖像的像素值:3.2.183.2.63.2.193.2.20EQ\o\ac(○,4)孔洞填充進行孔洞填充需要用到形態學基礎算法膨脹,其定義為:找到集合A(含有孔洞的圖像)中的孔洞,先使孔洞的某個位置的像素值為1,然后對其使用結構元B進行膨脹操作。為使膨脹操作的結果不超過孔洞,求其與A的補集Ac的交集,直至孔洞完全被填充。用公式表達為:Xk=(Xk-1EQ\o\ac(○,+)B)∩Ack=1,2,3...當Xk=Xk-1時,算法終止。孔洞填充后的結果為集合Xk和A的并集。根據孔洞填充的定義可知,孔洞填充需要用到膨脹和求集合的補集。膨脹操作的MATLAB編程在上文的EQ\o\ac(○,2)膨脹中已經實現,可直接調用。求集合的補集Ac,可用for循環使集合的0和1取反來實現??锥刺畛湫柘戎付锥粗幸粋€元素的位置,建立一個大小和集合A相同的集合X(元素初始全為0),使集合X中與指定的孔洞元素位置相同的位置的像素為1,對集合X用結構元B進行膨脹操作,求膨脹操作后的集合X和集合A的補集Ab的交集賦值給集合X,直到最后一次的集合X和上次所求的集合X相等,此時的集合X為所填充的孔洞部分,而集合X和集合A的并集就是孔洞填充后的圖像kd。由上文孔洞填充算法的實現可知,若A為圖3.2.21(A的像素值為圖3.2.25),B為圖3.2.2(B的像素值為圖3.2.6,其中為EQ\o\ac(○,1)結構元B的原點),那么A的邊緣提取過程為:先求出集合A的補集Ab,輸出結果為圖3.2.22,指定一個孔洞元素的位置,如圖3.2.25中A的第三行第四列的元素,將與集合A同樣大小的集合X(元素初始全為0)中同樣位置的像素值變為1,對此時的集合X用結構元B進行膨脹操作,求其膨脹操作后結果與補集Ab的交集再賦值給集合X。重復上述操作,直到最后的集合X與前一次所求的集合X相同,此時的集合X為要填充的孔洞d,集合X和集合A的并集為孔洞填充后的圖像3.2.23。具體算法實現為:求集合的補集:functionAb=buji(A)[m,n]=size(A);%圖像的行數和列數Ab=zeros(m,n);fori=1:mforj=1:nifA(i,j)==1Ab(i,j)=0;elseAb(i,j)=1;endendend孔洞填充:functionkd=kongdongtianchong(A,b,Ab,B)%A為需填充圖像,b為指定的孔洞位置,Ab為A的補集%B為結構元[m,n]=size(A);X=zeros(m,n);X(b)=1;%使集合X與指定的孔洞位置相同的位置變白over=1;%迭代結束的判斷條件while(over)Xp=X;X=pengzhang(X,B)&Ab;%膨脹后與補集求交集ifX==Xp%二者相等,迭代結束over=0;Xp;%填充部分endendkd=X|A;%求并集兩個輸入原二值圖像A和結構元B為:>>A=[0,0,0,0,0,0,0;0,1,1,1,1,0,0;0,1,1,0,1,1,0;0,1,1,0,1,1,0;0,1,1,0,1,1,0;0,1,1,1,1,0,0;0,0,0,0,0,0,0];>>B=[0,1,0;1,1,1;0,1,0];兩個圖像顯示結果為圖3.2.21和圖3.2.2,原二值圖像A經過求補集Ab=buji(A)后,輸出結果為圖3.2.22(即A的補集圖像)。>>Ab=buji(A);再將A圖3.2.21,孔洞位置b=24,補集圖像3.2.22和結構元圖像3.2.2當做輸入,對其進行孔洞填充操作kd=kongdongtianchong(A,b,Ab,B)后,輸出結果為圖3.2.23(即A孔洞填充后的圖像)。圖3.2.24為A的孔洞圖像。>>b=24;>>kd=kongdongtianchong(A,b,Ab,B);3.2.213.2.23.2.223.2.23各張圖像的像素值:3.2.253.2.63.2.263.2.273.2.243.2.28EQ\o\ac(○,5)連通分量的提取提取連通分量也需要用到形態學基礎算法膨脹,其定義為:若A是包含一個或多個連通分量的集合,那么提取A的連通分量就是,找到A中連接部分中的一點,對這點用結構元B進行膨脹操作,為使膨脹操作的結果不超過A的范圍,故求其與A的交集,直到所有的連通分量被提取。用公式表達為:Xk=(Xk-1EQ\o\ac(○,+)B)∩Ak=1.2.3...當Xk=Xk-1時,算法終止。由上文連通分量提取的定義可知,提取連通分量與填充孔洞十分的相似,先需要指定一個已知的連接部分的元素,建立一個大小和集合A相同的集合X(元素初始全為0),使集合X中與指定的連接部分元素位置相同的位置的像素為1,對集合X用結構元B進行膨脹操作,求膨脹操作后的集合X和集合A的交集賦值給集合X,直到最后一次的集合X和上次所求的集合X相等,此時的集合X為集合的連通分量。由連通分量提取的算法實現可知,若A為圖3.2.29(A的像素值為圖3.2.31),B為圖3.2.2(B的像素值為圖3.2.6,其中為EQ\o\ac(○,1)結構元B的原點),A的連通分量提取過程為:先指定一個連接部分的元素,如圖3.2.31中A的第二行的第二列的元素,將與集合A同樣大小的集合X(元素初始全為0)中同樣位置的像素值變為1,對此時的集合X用結構元B進行膨脹操作,求其膨脹操作后結果與集合A的交集再賦值給集合X。重復上述操作,直到最后的集合X與前一次所求的集合X相同,此時的集合X(圖3.2.30)為要提取的連通分量。具體算法實現為:functionlt=liantong(A,b,B)%A為需填充圖像%b為連接部分中一個分量的位置%B為結構元[m,n]=size(A);X=zeros(m,n);X(b)=1;%使集合X與指定連接部分中分量的位置相同的位置變白over=1;%迭代結束的判斷條件while(over)Xp=X;X=pengzhang(X,B)&A;%膨脹后與補集求交集ifX==Xp%二者相等,迭代結束over=0;endendlt=X;兩個輸入原二值圖像A和結構元B為:>>A=[0,0,0,0,0,0,0;0,1,1,1,1,0,0;0,1,1,0,1,1,0;0,1,1,0,1,1,0;0,1,1,0,1,1,0;0,1,1,1,1,0,0;0,0,0,0,0,0,0];>>B=[0,1,0;1,1,1;0,1,0];兩個圖像顯示結果為圖3.2.29和圖3.2.2。再將A圖3.2.29,連接部分中一點位置b=8和結構元圖像3.2.2當做輸入,對其進行連通分量的提取操作lt=liantong(A,b,B)后,輸出結果為圖3.2.30(即A的連通分量的圖像)。>>b=8;>>lt=liantong(A,b,B)3.2.293.2.23.2.30各張圖像的像素值:3.2.313.2.63.2.32EQ\o\ac(○,6)灰度腐蝕灰度腐蝕是腐蝕操作的延伸,它在腐蝕的基礎上又添加了灰度值這一概念,其定義:為用f(x,y)表示灰度圖像,b(x,y)表示結構元,則b對f的灰度腐蝕為:圖像f中與b重合區域的最小灰度值。用公式表達為:[fEQ\o\ac(○,-)b](x,y)={f(x+s,y+t)}由灰度腐蝕定義可知,實現灰度腐蝕算法要求結構元B的原點經過集合A(即灰度圖像)中每一點,所以要先對集合A進行擴充(這里使用鏡像擴展),保證結構元B的原點在集合A的邊界時,擴展后集合Ak完全包含結構元B。腐蝕操作要找出集合A中與結構元B重合部分的最小值,這我們可以先找出結構元B中1的位置賦值給z,在結構元B經過集合A的元素時,提取擴展后集合Ak在相同位置的完全包含結構元B的子塊區域Bz,找出子塊區域Bz位置z的元素賦值給C,找出C的最小值賦值給集合F。重復上述的操作,直到結構元B的原點經過集合A全部的元素,最后集合F就是腐蝕操作后的圖像。根據上文灰度腐蝕的算法實現可知,若A為圖3.2.33(A的像素值為圖3.2.35),B為圖3.2.2(B的像素值為圖3.2.6,其中為EQ\o\ac(○,1)結構元B的原點),A的灰度腐蝕過程為:用結構元B的原點經過集合A的每一個元素,找出集合A與結構元B重合元素的最小值,如圖3.2.35中當結構元B的原點經過集合A的第一行的第三列元素時,集合A與結構元B重合的元素有(162,161),最小值為161,所以將161賦值給集合F中第一行的第三列的位置。重復上述操作,直到結構元B的原點經過集合A的所有元素,最終形成集合F即灰度腐蝕后的圖像3.2.34,比原來圖像3.2.33較暗。具體算法實現為:functionF=hfushi(A,B)I=im2double(A);[m,n]=size(B);%結構元行數和列數z=find(B==1);%結構元1的位置mk=floor(m/2);nk=floor(n/2);Ak=padarray(I,[mk,nk],'symmetric');%對邊界圖進行擴充,目的是為了處理邊界點,這里采用邊界鏡像擴展[M,N]=size(I);F=zeros(M,N);fori=1:Mforj=1:NBz=Ak(i:i+m-1,j:j+n-1);%獲得圖像子塊區域C=Bz(z);%找出圖像子塊區域與結構元重合的灰度值F(i,j)=min(C);%腐蝕操作endendF=im2uint8(F);subplot(1,2,1),imshow(A),title('原灰度圖像');subplot(1,2,2),imshow(F),title('腐蝕后的灰度圖像');首先將原始圖像導入轉化為灰度圖像A,輸入結構元B:>>H=imread('picture.tif');%讀取圖片>>A=rgb2gray(H);%轉換為灰度圖像>>B=[010;111;010];%結構元兩個輸出圖像為圖3.2.33和圖3.2.2,將這兩者當作輸入,進行灰度腐蝕F=hfushi(A,B),輸出結果為圖3.2.34.>>F=hfushi(A,B);3.2.333.2.23.2.34各張圖像的部分像素值:3.2.353.2.63.2.36EQ\o\ac(○,7)灰度膨脹同灰度腐蝕相似,灰度膨脹是膨脹的延伸,它在膨脹的基礎上又添加了灰度值這一概念,其定義:用f(x,y)表示灰度圖像,b(x,y)表示結構元,c(x,y)為b的反射,即c(x,y)=b(-x,-y),則b對f的膨脹定義為:圖像f中與c重合區域的最大灰度值。用公式定義如式所示:[fEQ\o\ac(○,+)b](x,y)={f(x-s,y-t)}由灰度膨脹定義可知,實習灰度膨脹算法要先求結構元B的反射,反射的原點經過集合A(即灰度圖像)中每一點,所以要先對集合A進行擴充(這里使用鏡像擴展),保證反射的原點在集合A的邊界時,擴展后集合Ak完全包含反射。膨脹操作要找出集合A中與反射重合部分的最大值,這我們可以先找出反射中1的位置賦值給z,在反射經過集合A的元素時,提取擴展后集合Ak在相同位置的完全包含反射的子塊區域Bz,找出子塊區域Bz位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年耐高溫濾料項目提案報告模板
- 2025年地區事業單位教師招聘考試數學學科專業知識試卷(數學分析)
- 2025年茶藝師(初級)職業技能鑒定理論考試試卷(茶葉市場分析)
- 歷史專業古代戰爭史研究練習題
- 2025年電子商務師(初級)職業技能鑒定試卷:電子商務數據分析報告撰寫
- 2025年消防工程師消防設施設備選型與消防安全設施布置試題
- 2025年聲樂演唱教師資質認證模擬試題
- 2025年文化旅游演藝項目策劃運營:文化旅游演藝項目創新策劃與市場拓展研究報告
- 汽車行業供應鏈韌性優化與風險管理創新路徑報告
- 深度挖掘2025年K2教育人工智能個性化學習系統應用效果與挑戰
- 2023年06月新疆生產建設兵團第一師阿拉爾市度“三支一扶”招募57名人員歷年高頻考點試題答案詳歷年高頻考點試題答案詳解
- 【拓展閱讀】徐孺子賞月
- 國家開放大學《農村政策法規》形成性考核(平時作業)參考答案
- 談判藥品審核備案表
- 2022微生物學考試題庫
- 介入治療臨床應用
- 寧夏中考歷史知識總結
- 日本與確保建筑物施工質量相關的法律制度
- (完整版)焦慮自評量表(SAS)
- 生產安全事故考核辦法
- 中國歷史地理藍勇版課后題名詞解釋簡答論述題
評論
0/150
提交評論