【问题标题】:Is it possible to colorize a single connected component of a binary image in matlab?是否可以在matlab中为二进制图像的单个连接分量着色?
【发布时间】:2013-04-05 05:22:59
【问题描述】:

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

【问题讨论】:

  • 我在网上找到了一个这个函数:label2rgb
  • 知道如何使用它吗?还是有用??

标签: matlab


【解决方案1】:

您可以为此目的使用 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);

现在 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)。

【讨论】:

  • @RmanEdv:乐于助人。 :) 如果您满意,请接受答案。
猜你喜欢
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 2022-07-28
  • 2014-12-26
  • 2017-02-24
  • 1970-01-01
  • 2014-12-07
相关资源
最近更新 更多