2

假设我有一个 RGB 图像和一个包含图像分割结果的RGB二进制图像。如何在图像“RGB”上绘制图像并将分割显示为红色透明区域?我尝试了以下操作,但出现错误。请帮我找出MATLAB中的最佳方法binaryRGBbinary

I=imread('RGB.png');
[M,N,C] = size(I);
h=imshow(I);
alpha= imread('binary.png');
alpha = cat(3,alpha,zeros(M,N), zeros(M,N));
set(h, 'AlphaData', alpha);

以下是输入图像:

RGB

二进制

4

3 回答 3

1

您只需将二进制文件alpha(仅一层)用作AlphaData.

于 2020-10-14T15:43:48.403 回答
1

这是一种在蒙版的选定区域中添加红色叠加层的方法。可以对这些脚本进行修改,以用白色或黑色填充剩余区域。使用逻辑阵列选择掩模上的感兴趣区域。

在蒙版的白色区域上覆盖红色

叠加图 1

Overlay_Opacity = 0.5;

Image =imread('RGB.png');
imshow(Image);

Red_Channel = imread('binary.png');
White_Mask_Region = Overlay_Opacity*(Red_Channel ~= 0);

Overlay_Image(:,:,1) = White_Mask_Region;
Overlay_Image(:,:,2) = 0;
Overlay_Image(:,:,3) = 0;

hold on
Overlay = image(Overlay_Image);
Overlay.AlphaData = White_Mask_Region;
saveas(gcf,'Overlay_1.png');

在蒙版的黑色区域上覆盖红色

叠加图像 2

Overlay_Opacity = 0.5;

Image =imread('RGB.png');
imshow(Image);

Red_Channel = imread('binary.png');
Black_Mask_Region = Overlay_Opacity*(Red_Channel == 0);

Overlay_Image(:,:,1) = Black_Mask_Region;
Overlay_Image(:,:,2) = 0;
Overlay_Image(:,:,3) = 0;

hold on
Overlay = image(Overlay_Image);
Overlay.AlphaData = Black_Mask_Region;
saveas(gcf,'Overlay_2.png');
于 2020-10-14T22:27:50.803 回答
1

如果你有图像处理工具箱,这个函数会做你想做的事:

https://www.mathworks.com/help/images/ref/labeloverlay.html

于 2020-10-16T00:04:03.567 回答