函式功能: 對二值圖像進行數學形態學(Mathematical Morphology)運算。
語法格式:
BW2 = bwmorph(BW,operation)
對二值圖像進行指定的形態學處理。
BW2 = bwmorph(BW,operation,n)
對二值圖像進行n次指定的形態學處理。 n可以是Inf(無窮大), 這意味著將一直對該圖像做同樣的形態學處理直到圖像不再發生變化。
operation是一個字元串, 用於指定進行的形態學處理類型, operation可以為以下值:
'bothat':進行“bottom hat”形態學運算,即返回源圖像減去閉運算的圖像;
'branchpoints':找到骨架中的分支點;
'bridge':進行像素連線操作;
'clean':去除圖像中孤立的亮點,比如, 一個像素點, 像素值為1, 其周圍像素的像素值全為0, 則這個孤立的亮點將被去除;
'close':進行形態學閉運算(即先膨脹後腐蝕);
'diag': 採用對角線填充, 去除八鄰域的背景;
'dilate': 使用結構元素ones(3)對圖像進行膨脹運算;
'endpoints':找到骨架中的結束點;
'erode':使用結構元素ones(3)對圖像進行腐蝕運算;
'fill':填充孤立的黑點, 比如3*3的矩陣, 除了中間元素為0外, 其餘元素全部為1, 則這個0將被填充為1;
'hbreak':斷開圖像中的H型連線;
'majority':如果一個像素的8鄰域中有等於或超過5個像素點的像素值為1, 則將該點像素值置1;
'open':進行形態學開運算(即先腐蝕後膨脹);
'remove':如果一個像素點的4鄰域都為1, 則該像素點將被置0;該選項將導致邊界像素上的1被保留下來;
'skel':在這裡n = Inf,骨架提取但保持圖像中物體不發生斷裂;不改變圖像歐拉數;
'spur':去除小的分支, 或引用電學術語“毛刺”;
'thicken':在這裡n = Inf, 通過在邊界上添加像素達到加粗物體輪廓的目的;
'thin':在這裡n = Inf,進行細化操作;
'TopHat':進行“top hat”形態學運算, 返回源圖像減去開運算的圖像;
相關函式: imopen、imclose、imdilate、imerode、bwperim
程式示例
% get skeleton of an object in a binary image
close all; clear; clc;
warning off all;
imgdat = logical([1, 0, 0; 1, 0, 1; 0, 0, 1]);
retdat = bwmorph(imgdat, 'bridge') % using 'brige' option
imgdat = logical([0, 0, 0; 0, 1, 0; 0, 0, 0]);
retdat = bwmorph(imgdat, 'clean') % using 'clean' option
imgdat = logical([1, 1, 1; 1, 0, 1; 1, 1, 1]);
retdat = bwmorph(imgdat, 'fill') % using 'fill' option
輸出結果:
retdat =
1 1 0
1 1 1
0 1 1
retdat =
0 0 0
0 0 0
0 0 0
retdat =
1 1 1
1 1 1
1 1 1