1 / 67

第十章 數學形態學

第十章 數學形態學. 10.1 導論 10.2 基礎概念 10.3 膨脹與侵蝕 10.4 開啟與關閉 10.5 型態與交離轉換 10.6 其他型態演算 10.7 MATLAB 的 bwmorph 函數 10.8 灰階形態學 10.9 灰階形態學的應用. 10.1 導論. 數學形態學,簡稱形態學,專門用來處理、分析影像中的形狀。本章會介紹基礎形態學工具,並探討二元數位影像之範例,並延伸使至灰階影像的應用。. 10.2 基礎概念. 10.2.1 平移

Download Presentation

第十章 數學形態學

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第十章 數學形態學 10.1 導論 10.2 基礎概念 10.3 膨脹與侵蝕 10.4 開啟與關閉 10.5 型態與交離轉換 10.6 其他型態演算 10.7 MATLAB的bwmorph函數 10.8 灰階形態學 10.9 灰階形態學的應用

  2. 10.1 導論 • 數學形態學,簡稱形態學,專門用來處理、分析影像中的形狀。本章會介紹基礎形態學工具,並探討二元數位影像之範例,並延伸使至灰階影像的應用。

  3. 10.2 基礎概念 • 10.2.1 平移 • 設A為二元數位影像中一個像素集合,W=(x,y)為某個向量座標。 Aω為集合A平移向量(x,y)結果。 • 定義:Aω={(a,b) + (x,y) : (a,b) ∈A}.

  4. 圖10.1平移向量 W=(2 , 2)。A集合在x軸方向與y軸方向產生位移,位移量由w決定,x軸往下延伸,y軸往右延伸。 0 1 2 3 4 0 1 2 3 4 0 0 1 1 2 2 3 3 4 4 (圖10.1 平移)

  5. 10.2.1 平移反射標記為Â,以原點為中心反射:定義:Â = {(-x,-y) : (x,y) ∈ A)}.如圖10.2空心圓和實心圓像素組互為反射 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 (圖10.2 反射)

  6. 10.3 膨脹與侵蝕

  7. 10.3.1膨脹 像素集合A與B,使用B來”膨脹”A,記為A♁B 定義為:A♁B =∪AX. X∈ B 代表每個點x ∈ B ,都使用這些座標對A平移。 膨脹也符合交換律 定義為 :A♁B =B♁A 範例中 B(位移向量)={(0,0),(1,1),(-1,1),(1,-1),(-1,-1)}用來平移A之座標

  8. 如圖10.3,膨脹有放大效果。根據B座標不同,A ♁B會出現於不同位置。 1 2 3 4 5 1 2 3 4 -1 0 1 5 -1 6 0 7 1 A (0,0) B

  9. 下列為經過 B={(0,0),(1,1),(-1,1),(1,-1),(-1,-1)}平移A座標藍色部份為A(0,0)A本身。 1 2 3 4 5 1 2 3 4 5 1 1 2 2 3 3 4 4 5 5 6 6 7 7 A(1,1) A(-1,1)

  10. 1 2 3 4 5 1 2 3 4 5 1 1 2 2 3 3 4 4 5 5 6 6 7 7 A(1,-1) A(-1,-1)

  11. A ♁B可以將A的所有像素點(x,y)用一個B的複製替換,將B的(0,0)點置於(x,y)的位置。同樣也可以複製A。 1 2 3 4 5 1 2 3 4 5 6 7 (圖為A ♁ B)

  12. 根據B座標不同,A ♁B可能出現離A很遠的地方,如下圖A位置相同但B位置不同,B座標為B={(7,3),(6,2),(6,4),(8,2)(8,4)}A ♁B=A(7,3) ∪A(6,2) ∪A(6,4) ∪A(8,2) ∪A(8,4). 123412345678 11 22 33 44 55 66 77 88 9 10 11 12 13 14

  13. 使用Matlab進行膨脹 • 膨脹範例 • 影像變得粗厚,正是膨脹作用。 • (3*3矩陣進行膨脹) • >> t=imread(‘text.tif’); • >>sq=ones(3,3); • >>td=imdilate(t,sq); • >>subplot(1,2,1),imshow(t) • >>subplot(1,2,2),imshow(td) • 圖10.5(原圖)(膨脹後)

  14. 10.3.2侵蝕 • 定義:A Ө B • 由像素點w=(x,y)構成,將B置於A之內,找到相對應的B原點(0,0)所在位置之像素。這些像素點變形成侵蝕。 • 侵蝕A ӨB是A的子集合。要看B原點的位置而 123456 1 2 3-101 4-1 50 61 圖10.6(A) (B)

  15. 下列圖10.6為侵蝕範例,左圖為原圖A,藍色部分為B,右圖為侵蝕結果,視B圓點位置決定。下列圖10.6為侵蝕範例,左圖為原圖A,藍色部分為B,右圖為侵蝕結果,視B圓點位置決定。 • 123456123456 • 11 • 22 • 33 • 44 • 55 • 66

  16. 下列為不同的侵蝕點,侵蝕結果會包含在原始圖中。下列為不同的侵蝕點,侵蝕結果會包含在原始圖中。 • 123456123456 • 11 • 22 • 33 • 44 • 55 • 66

  17. 123456123456 • 11 • 22 • 33 • 44 • 55 • 66

  18. 下圖10.7是B不包含原點座標的侵蝕結果。空心圓為侵蝕結果。侵蝕形狀與圖10.6相同但位置不同下圖10.7是B不包含原點座標的侵蝕結果。空心圓為侵蝕結果。侵蝕形狀與圖10.6相同但位置不同 • 012340123456 • 0-2 • 1-1 • 20 • 31 • 42 • 53 • 64 • B5 • 6 • A ӨB

  19. 使用Matlab進行侵蝕 • 侵蝕範例 • 如圖10.8影像變細,正是侵蝕預期的作用 • (3*3十字矩陣進行侵蝕) • sq=ones(3,3); • c=imread(‘circbw.tif’); • ce=imerode(c,sq); • subplot(1,2,1),imshow(c) 圖10.8(原圖) • subplot(1,2,2),imshow(ce) (侵蝕後)

  20. 10.3.3應用:邊界偵測 • 若A為一影像,B為以原點為中心對稱分佈的小型結構元素,A邊界可以由下列幾種方法定義 • (1) 內被邊界 A-(A ӨB) • (2) 外部邊界(A ♁B)–A • (3)形態梯度 (A ♁B)-(A ӨB) • 負號代表集合相減

  21. 下列範例圖10.9為(A), (B), (A♁B), (AӨB) • 0 1 2 3 4 5-10123456 • 0(A)-1 • 10 • 21 • 32 • 43 • 54 • 0123455 • 0(A Ө B) 6 • 1 • 2-101 (A ♁B) • 3-1 (B) • 40 • 51

  22. 下列為內部邊界,外部邊界與形態梯度。 『內部邊界』由A邊緣的像素組成。 『外部邊界』由A相鄰但位於A之外的像素組成。 『形態梯度』由內部邊界與外部邊界的總合。 • -1 0 1 2 3 4 5 6-1 0 1 2 3 4 5 6 -1-1 • 00 • 11 • 22 • 33 • 44 • 55 • 66 (實點為內部邊界白點為外部邊界)(形態梯度)

  23. 以下函數程式為稻穀影像與內部邊界 • 以圖10.10稻穀影像為例,設定閥值,求得二元 • 數位影像。 • rice=imread(‘rice.tif’); • r=rice>110; • 再用下列指令可顯示原圖與內部邊界。 • sq=ones(3,3); • re=imerode(r,sq);(稻穀原圖) • r_int=r&~re; • subplot(1,2,1),imshow(r) • subplot(1,2,2),imshow(r_int) (內部邊界)

  24. 以下指令為外部邊界與形態梯度 • 外部邊界與形態梯度也可以用類似方式求得。 • re=imerode(r,sq); • rice=imread(‘rice.tif’); • r=rice>110; • sq=ones(3,3); • rd=imdilate(r,sq); 圖10.11(外部邊界) • r_ext=rd&~r; • r_grad=rd&~re; • subplot(1,2,1),imshow(r_ext) • subplot(1,2,2),imshow(r_grad) (形態梯度)

  25. 10.4 開啟與關閉

  26. 10.4.1.開啟 • A與結構元素B,用B來開啟A,符號為A○B。 -101 • 定義: A○B= (A ӨB)♁B-1 • 就是先侵蝕後膨脹。如下圖10.12解釋(B)0 • 1 • 012345012345012345 000 • 111 • 222 • 333 • 444 • 555 • (A)(A ӨB)(A ○B)

  27. 10.4.2關閉 • 相對於開啟,關閉則是先膨脹再侵蝕,符號為A ●B • 定義: A ●B=(A ♁B) Θ B. 如下圖10.13解釋 • 012345601234560123456 • 000 • 111 • 222 • 333 • 444 • 555 • 666 • (A) (A ♁B ) A ●B

  28. 開啟跟關閉可分別使用imopen與imclose執行。下面可以看到使用方形與十字結構元素的效果。開啟跟關閉可分別使用imopen與imclose執行。下面可以看到使用方形與十字結構元素的效果。

  29. 為imclose。

  30. 使用關閉,影像會完全黏合。使用斜角線結構元素黏合影像。使用關閉,影像會完全黏合。使用斜角線結構元素黏合影像。 • 如圖10.14為關閉範例 • t=imread('text.tif'); • diag=[0 0 1;0 1 0;1 0 0] • (斜角結構元素) • Diag = • 0 0 1 • 0 1 0 1 0 0 • tc=imclose(t,diag); • imshow(tc)(關閉範例) (關閉範例)

  31. 應用:去除雜訊 • A ӨB會去除單一黑色像素,但會使空洞變大,連續膨脹兩次便可填充空洞((A ӨB) ♁B) ♁B. • 第一次膨脹:恢復原始大小。 • 第二次膨脹:去除空洞。(但會放大影像中的物體) • 恢復原始尺寸>>執行一次侵蝕(((A Ө B) ♁ B) ♁ B) Ө B. • 內層兩個運算為開啟,外層為關閉。 • 所以去除雜訊方法為:先執行開啟後執行關閉((A ○ B) ● B). • 這樣運算稱為:『型態濾波』。

  32. 加入10%散粒雜訊 • 如圖10.15(a)受到脈衝雜訊 • 干擾的二元雜訊影像。 • c=imread(‘circles.tif’) • ; x=rand(size(c)); • d1=find(x<=0.05); • d2=find(x>=0.95); • c(d1)=0; c(d2)=1; • imshow(c) (a)(二元雜訊影像)

  33. 濾波過程如下 • 如下圖10.15(b),(c) • cf1=imclose(imopen(c,sq),sq);(使用方型結構元素) • figure,imshow(cf1) • cf2=imclose(imopen(c,cr),cr); (使用十字結構元素) • figure,imshow(cf2) • 結果方形結構元素有些鋸齒狀,若使用十字型結構元素則較平滑。 (b)(使用方形結構元素)(c)(使用十字結構元素)

  34. 10.5 型態交離轉換

  35. 型態交離轉換功能:影像中尋找特定形狀。 • 假設要尋找3×3的方形,如下圖10.16(A)中央部分。 • (1)影像A與B執行侵蝕A Ө B (A) (B)

  36. (2) 得結果如圖10.17,剩下兩個像素,因為影像A只有這兩個地方與B符合。 (侵蝕A Ө B)

  37. (3) 如下圖10.18使用結構C侵蝕A的補數(C為3×3外部邊界圖) (Ā) (C) 如下圖10.19經過(ĀӨC))

  38. 使用如上一章節文字影像中”Corss-Correlation”中的連字部分符號。使用如上一章節文字影像中”Corss-Correlation”中的連字部分符號。 • 產生結構元素程式如下: • b1=ones(1,6); • b2=[1 1 1 1 1 1 1 1;1 0 0 0 0 0 0 1;1 1 1 1 1 1 1 1]; • tb1=erode(t,b1); • tb2=erode(~t,b2); • hit_or_miss=tb1&tb2; • [x,y]=find(hit_or_miss==1)

  39. 10.6 其他形態演算法

  40. 10.6.1 區域填充 • 設一個區域為連通邊界畫分出來,如下圖10.21像素p為區域內的一個像素點。 • ※要填充整個區域從p開始: • (1) 使用十字結構元素B連續執行膨脹。 • (2)執行下一次膨脹前與Ā做交集。 • 最後得到數列 • {p} = X0,X1,X2….,Xk = Xk+1, • 其中 • Xn = (Xn-1♁ B) ∩Ā.

  41. 下圖10.22填充區域之過程 • Xk∪A為填充區域,下圖顯示整個流程。 • X0 = {p}, X1 = {p,1}, X2 = {p,1,2}… (Ā)

  42. 10.6.2連通部分 • 如右圖10.23填充連通部分 • 連通部分也可以使用類似演算法。 • 4-連通部分使用十字結構元素。 • 8-連通部分使用方形結構元素。 • 像素p開始,產生一個集合的數列來填充。 • X0 = {p},X1,X2,……, • 其中 • Xn = (Xn-1♁ B) ∩ A. • 直到Xk=Xk-1,範例如右圖 • 十字結構元素無法穿越邊界。 • (使用十字形)(使用方形)

  43. 進行MATLAB函數進行填充區域時,持續記錄兩個影像:(current與last),last影像從區域的單一像素點p開始,current影像從膨脹開始。進行MATLAB函數進行填充區域時,持續記錄兩個影像:(current與last),last影像從區域的單一像素點p開始,current影像從膨脹開始。 • Last  current, • Current (current ♁B) ∩Ā • 給定B,執行: • Imsilate(current,B)&~A. • 可以用下列函數填充由邊界劃分的區域: • sq=ones(3,3); • n=imread('nicework.tif'); imshow(n),pixval on nb=n&~imerode(n,sq); figure,imshow(nb) nf=regfill(nb,[74,52],sq); figure,imshow(nf) 原圖(a) (b) 區域填充另一種表示法

  44. 以下函數可以來填充某個由邊界畫分的區域 • (c)是區域填充結果 • (d)是另一種表示方法 • function out=regfill(im,pos,kernel); • n=imread('nicework.tif'); • current=zeros (size(im)); • last=zeros(size(im)); • last(pos(1),pos(2))=1; • current=imdilate(last,kernel)&~im; • while any(current(:)~=last(:)), • last=current; • current=imdilate(last,kernel)&~im; • end; • out=current; (c) (d)

  45. 連通部分可用影像“nice work”來測試此函數,使用方形結構元素及一個較大的11*11結構元素。 (a) 為使用3*3方形 (b) 為使用11*11方形。 • sq=ones(3,3); • n=imread('nicework.tif'); • sq2=ones(11,11); • nc=components(n,[57,97],sq); • imshow(nc) • nc2=components(n,[57,97],sq2); • figure,imshow(nc2) (a) 。 (b)

  46. 連通部份的函數和區域填充幾乎一模一樣,只要更改一行指令即可。連通部份的函數和區域填充幾乎一模一樣,只要更改一行指令即可。 • function out = components(im,pos,kernel) • current=zeros (size(im)); • last=zeros(size(im)); • last(pos(1),pos(2))=1; • current=imdilate(last,kernel)&im; • while any(current(:)~=last(:)), • last=current; • current=imdilate(last,kernel)&im; • end; • out=current;

  47. 10.6.3 骨架化 二元物體的骨架式壓縮了物體大小與形狀後,所得到的直線與曲線的集合。 ※表10.1 建構骨架的運算

  48. 範例如下圖10.28,骨架化,使用十字形結構元素。範例如下圖10.28,骨架化,使用十字形結構元素。 • (A) 原圖 ( A○B) 開啟 (A-(A○B))差值

  49. (AӨB)侵蝕 ((AӨB) ○ B)開啟 ((AӨB) -((AӨB) ○ B))差值

  50. (AӨ2B)侵蝕 ((AӨ2B) ○ B)開啟 ((AӨ2B) -((AӨ2B) ○ B))差值

More Related