是否可以随机为所有段着色而不是绘制矩形

时间:2014-05-15 14:26:47

标签: image matlab image-processing image-segmentation

使用下面的代码,我可以在每个连接的组件周围绘制一个边界框。

bw_normal2 = im2bw(img, graythresh(img));
bw22 = imcomplement(bw_normal2);
bw3 = bwmorph(bw22, 'dilate');
[label2,n2] = bwlabel(bw3);
stats2 = regionprops(label2, {'Area', 'BoundingBox'});
area2 = stats2.Area;

idx = find((0 <= area2) & (area2 <= 6000))
   BW2 = ismember(label2,idx);
figure, imshow(BW2)

imshow(img);
for j=1:n

    hold on
    rectangle('Position',[stats2(j).BoundingBox(1),stats2(j).BoundingBox(2),stats2(j).BoundingBox(3),stats2(j).BoundingBox(4)],...
'EdgeColor','r','LineWidth',2 );
end

enter image description here

不是在每个连接的组件周围创建一个边界框,而是可以对它们进行随机着色吗?

1 个答案:

答案 0 :(得分:2)

为什么不使用label2?这已经是一个矩阵,每个单独的组件给出不同的值。然后应用其中一个内置的色彩映射,或者生成一个色彩映射,强制背景(零)值为白色或黑色。

imshow(label2,[])
colormap(lines)