1.最直接好用的方法
rgb = imread('1.jpg');
%灰度化
gray = rgb2gray(rgb);
%二值化 或者 计算边缘
thresh = graythresh(gray); %bw = edge(gray, 'sobel');
bw = im2bw(gray,thresh);
%计算连通域
L = bwlabel(bw);%默认8连通; bwlabe(bw,4);
STATS = regionprops(L,'all');%STATS中含有所有连通域的properations
%在bw图像上绘制出连通域的矩形框
figure; imshow(bw); hold on
for i = 1 : size(STATS, 1)
boundary = STATS(i).BoundingBox;
rectangle('Position',boundary,'edgecolor','r' );
end
2.其他相关函数
1、 matlab函数bwareaopen──删除小面积对象
格式:BW2 = bwareaopen(BW,P,conn)
作用:删除二值图像BW中面积小于P的对象,默认情况下使用8邻域。
算法:
(1)Determine the connected components.
L = bwlabeln(BW, conn);
(2)Compute the area of each component.
S = regionprops(L, 'Area');
(3)Remove s