2013-04-04 21 views
2

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

+0

我在网上发现了这个功能:label2rgb – 2013-04-04 20:49:55

+0

任何想法如何使用它?或者它工作? – 2013-04-04 20:50:33

回答

3

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

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); 

enter image description here

现在大号是:

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); 

enter image description here

如果你有,比如说,另一个连接部件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这里)。

+0

非常感谢,这是一个很大的帮助! – 2013-04-05 11:24:23

+0

@RmanEdv:乐于帮忙。 :)如果您满意,请接受答案。 – 2013-04-05 11:29:04

+0

感谢您的领导.. !!!答案接受。 – 2013-04-12 12:35:11

相关问题