Matlab 矩阵图像叠加

Matlab 矩阵图像叠加,matlab,matlab-figure,Matlab,Matlab Figure,我有一个图像(png),我想把它放在一个热图(可以说)下面,热图是由a和一个值为0-1的2D矩阵组成的。因此,光斑的强度取决于矩阵中的值有多大 我可以使用imshow(矩阵),但它完全覆盖了下面的图像。是否可能不绘制任何具有矩阵值的像素加载的png将是一个三维矩阵。可以使用repmat将二维二进制矩阵转换为三维矩阵。然后调整二进制矩阵的大小,使其与带有imresize的png大小相同。最后,您可以显示与imshow(alpha(myPng)+(1-alpha)*(myBinaryMat))混合的

我有一个图像(png),我想把它放在一个热图(可以说)下面,热图是由a和一个值为0-1的2D矩阵组成的。因此,光斑的强度取决于矩阵中的值有多大


我可以使用imshow(矩阵),但它完全覆盖了下面的图像。是否可能不绘制任何具有矩阵值的像素加载的png将是一个三维矩阵。可以使用repmat将二维二进制矩阵转换为三维矩阵。然后调整二进制矩阵的大小,使其与带有imresize的png大小相同。最后,您可以显示与imshow(alpha(myPng)+(1-alpha)*(myBinaryMat))混合的两个矩阵,其中alpha是介于0和1之间的混合参数。

以下是在彩色图像上叠加二值热图的示例:

%# some image
I = im2double( imread('peppers.png') );

%# I create here a random mask (gaussian centered in middle of image)
[r,c,~] = size(I);
[X Y] = meshgrid(1:r,1:c);
Z = mvnpdf([X(:) Y(:)], [r c]./2, diag(15.*[r c]));
Z = (Z-min(Z(:)))./range(Z(:));
Z = reshape(Z',[c r])';

%# show image and mask separately
subplot(121), imshow(I)
subplot(122), imshow(Z)

%# show overlayed images
figure, imshow(I), hold on
hImg = imshow(Z); set(hImg, 'AlphaData', 0.6);

%# also we can specify a colormap
colormap hsv

如果您将二维矩阵与
'AlphaData'
一起使用,那么您可以在选择的位置应用彩色贴图,而不会影响图像中的其他区域。@ParagS.Chandakkar:是的,在上面的示例中,我们可以使用遮罩矩阵
Z
本身作为alpha贴图:
h=imshow(I);设置(h,'AlphaData',Z)
(在这种情况下,图像变得透明,显示其后面的图形灰色背景)