Image 在MATLAB中叠加两幅图像

Image 在MATLAB中叠加两幅图像,image,matlab,image-processing,Image,Matlab,Image Processing,我想在matlab中叠加两个相同尺寸的图像。我尝试使用imfuse功能,但得到的图像与我想要的不一样 第一幅图像是对我的原始图像应用Canny边缘检测器后获得的图像的负片。我想在我的原始图像上加上这个带有黑色边缘的负片图像 有人能为两幅图像的叠加提供一些其他功能或方法吗??感谢和问候。您可以使用第二幅图像的'AlphaData'属性: >> imshow( origImg ); hold on; >> h = imagesc( edgeImg ); % show the

我想在matlab中叠加两个相同尺寸的图像。我尝试使用
imfuse
功能,但得到的图像与我想要的不一样

第一幅图像是对我的原始图像应用Canny边缘检测器后获得的图像的负片。我想在我的原始图像上加上这个带有黑色边缘的负片图像


有人能为两幅图像的叠加提供一些其他功能或方法吗??感谢和问候。

您可以使用第二幅图像的
'AlphaData'
属性:

>> imshow( origImg ); hold on;
>> h = imagesc( edgeImg ); % show the edge image
>> set( h, 'AlphaData', .5 ); % .5 transparency
>> colormap gray

尝试将这两个图像叠加

figure,imshowpair(originalImage,edgeImage);
这将给你一个单一的数字,这是两者的结合。
imshowpair有一些附加选项,如混合、差异、蒙太奇。也试试看。

我发现了一些东西,我想我应该在这里分享

如前所述,在许多情况下,使用图像的
AlphaData
可以获得非常好的结果。但是,如果需要原始分辨率保存图像(并且不使用
getframe
打印
另存为
等),以下操作将有所帮助

(我使用中的第二个示例)

下面是使用AlphaData(不透明度)进行的叠加:

要获得与上述完全相同的外观,但在一个矩阵中(我无法使用
imfuse
),您可以使用以下简单代码:

Comb = E;
Comb(:,:,1) = (1-I).*E + I; % red
Comb(:,:,2) = (1-I).*E; % green
Comb(:,:,3) = (1-I).*E; % blue

figure, imshow(Comb)

希望它能帮助别人

很好!是否可能以某种方式显示多个重叠颜色,而不是一种红色?我想显示一个叠加的蓝色,红色,黄色,绿色的特定像素。我有包含像素的二元遮罩,每种颜色都应该叠加这些像素。
figure, imshow(E), hold on
red = cat(3, ones(size(E)), zeros(size(E)), zeros(size(E)));
h = imshow(red);
set(h, 'AlphaData', I);
Comb = E;
Comb(:,:,1) = (1-I).*E + I; % red
Comb(:,:,2) = (1-I).*E; % green
Comb(:,:,3) = (1-I).*E; % blue

figure, imshow(Comb)