一个非常有用的二值图像形态学后处理算法,建立在连通分量分析的基础之上。
bwareaopen
从二值图像中删除小对象
语法
BW2 = bwareaopen(BW,P)
BW2 = bwareaopen(BW,P,conn)
说明
BW2 = bwareaopen(BW,P) 从二值图像 BW 中删除少于 P 个像素的所有连通分量(对象),并生成另一个二值图像 BW2。此运算称为面积开运算。
BW2 = bwareaopen(BW,P,conn) 删除所有连通分量,其中,conn 指定所需的连通性。
name = 'rice';
suffix = '.png';
I = imread([name, suffix]);
imshow(I)
bw = imbinarize(I,'adaptive');
bw_post = bwareaopen(bw,20);
imshow(bw)
后处理前后的图像。
算法步骤
确定连通分量:
CC = bwconncomp(BW, conn);
计算每个分量的面积:
S = regionprops(CC, 'Area');
删除小对象:
L = labelmatrix(CC);
BW2 = ismember(L, find([S.Area] >= P));