2

我一直想知道您是否可以给我一些建议,将颜色添加到二进制图像的单个连接组件,这就是我所做的;首先,为了使用 matlab 的 bwlabel 功能,我将我的 RGB 图像转换为二进制,然后我编写了一个程序来询问用户他/她想要哪个组件。现在的问题是我们的 TA 要求我们为选定的组件着色然后显示结果。但我不知道它是否可能,如果它是如何做到这一点..提前感谢您的帮助

4

1 回答 1

3

为此,您可以使用 RGB 颜色空间。由于您没有提供任何示例数据,我将使用bwlabelMATLAB 中的示例进行解释。

BW = logical([1 1 1 0 0 0 0 0
              1 1 1 0 1 1 0 0
              1 1 1 0 1 1 0 0
              1 1 1 0 0 0 1 0
              1 1 1 0 0 0 1 0
              1 1 1 0 0 0 1 0
              1 1 1 0 0 1 1 0
              1 1 1 0 0 0 0 0]);
L = bwlabel(BW,4);    %Result
imshow(L);

在此处输入图像描述

现在 L 将是:

 1     1     1     0     0     0     0     0
 1     1     1     0     2     2     0     0
 1     1     1     0     2     2     0     0
 1     1     1     0     0     0     3     0
 1     1     1     0     0     0     3     0
 1     1     1     0     0     0     3     0
 1     1     1     0     0     3     3     0
 1     1     1     0     0     0     0     0

假设我想分别对组件 1,2 和 3 使用红色、绿色和蓝色:

[m, n] = size(L);
result_image = zeros(m, n, 3);
result_image(:,:,1) = (L==1);
result_image(:,:,2) = (L==2);
result_image(:,:,3) = (L==3);
imshow(result_image);

在此处输入图像描述

如果你有,比如说,另一个连接的组件 4(甚至更多),你可以使用类似的东西:

result_image(:,:,1) = result_image(:,:,1) + (L==4)*1;
result_image(:,:,2) = result_image(:,:,2) + (L==4)*0.5;
result_image(:,:,3) = result_image(:,:,3) + (L==4)*0;

对于不同的颜色,只需使用相乘的值(此处为 1、0.5 和 0)。

于 2013-04-04T21:15:57.707 回答