图像覆盖矩阵

时间:2011-06-29 17:36:43

标签: matlab matlab-figure

我有一个图像(png),我想放在一个热图(可以这么说)下,由一个值为0-1的二维矩阵组成。因此,斑点的强度将取决于矩阵中的值有多大。

我可以使用imshow(矩阵)但完全覆盖下面的图像。是否有可能,不能用矩阵值<.05或其他方式绘制任何像素来使其工作?

2 个答案:

答案 0 :(得分:7)

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

%# 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

enter image description here enter image description here enter image description here

答案 1 :(得分:1)

加载的png将是三维矩阵。您可以使用repmat将2d二进制矩阵转换为3d。然后调整二进制矩阵的大小,使其与具有imresize的png大小相同。最后,你可以显示两个矩阵混合了imshow(alpha(myPng)+(1-alpha)*(myBinaryMat)),其中alpha是0到1之间的混合参数。