gpt4 book ai didi

matlab - 是否可以在 matlab 中为二值图像的单个连通分量着色?

转载 作者:行者123 更新时间:2023-12-04 05:03:30 24 4
gpt4 key购买 nike

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

最佳答案

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

enter image description here

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

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

关于matlab - 是否可以在 matlab 中为二值图像的单个连通分量着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15821193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com