问题描述
假设我有一个RGB图像RGB
和一个二进制图像binary
,其中包含图像RGB
的分割结果。如何在图像'RGB'上方绘制图像binary
并将分段显示为红色透明区域?我尝试了以下操作,但出现错误。请帮助我找出MATLAB中的最佳方法
I=imread('RGB.png');
[M,N,C] = size(I);
h=imshow(I);
alpha= imread('binary.png');
alpha = cat(3,alpha,zeros(M,N),N));
set(h,'AlphaData',alpha);
以下是输入图像:
解决方法
您只需将二进制文件alpha
(仅一层)用作AlphaData
。
这是在蒙版的选定区域中添加红色叠加的一种方法。可以对这些脚本进行修改,以用白色或黑色填充其余区域。使用逻辑数组选择蒙版上感兴趣的区域。
在蒙版的白色区域上覆盖红色
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');
在蒙版的黑色区域上覆盖红色
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(:,3) = 0;
hold on
Overlay = image(Overlay_Image);
Overlay.AlphaData = Black_Mask_Region;
saveas(gcf,'Overlay_2.png');
,
如果您拥有图像处理工具箱,则此功能将完成您想要的操作: