我一直想知道您是否可以给我一些建议,将颜色添加到二进制图像的单个连接组件,这就是我所做的;首先,为了使用 matlab 的 bwlabel 功能,我将我的 RGB 图像转换为二进制,然后我编写了一个程序来询问用户他/她想要哪个组件。现在的问题是我们的 TA 要求我们为选定的组件着色然后显示结果。但我不知道它是否可能,如果它是如何做到这一点..提前感谢您的帮助
问问题
333 次
1 回答
3
为此,您可以使用 RGB 颜色空间。由于您没有提供任何示例数据,我将使用bwlabel
MATLAB 中的示例进行解释。
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 回答