Image overlay with matrix

后端 未结 2 1919
-上瘾入骨i
-上瘾入骨i 2020-12-18 04:26

I have an image (png) that I want to put underneath a heatmap(so to speak) made from a and a 2D matrix of values 0-1. So the intensity of the spot would be decided by how la

相关标签:
2条回答
  • 2020-12-18 04:59

    Here is an example of overlaying a binary heatmap on top of a color image:

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

    0 讨论(0)
  • 2020-12-18 05:02

    the loaded png will be a three dimensional matrix. You can convert the 2d binary matrix into a 3d one with repmat. Then resize the binary matrix so it is the same size as the png with imresize. Finally, you can show the two matrices blended with something like imshow(alpha(myPng) + (1-alpha)*(myBinaryMat)) where alpha is a blending parameter between 0 and 1.

    0 讨论(0)
提交回复
热议问题