Наложение изображения на матрицу - PullRequest
6 голосов
/ 29 июня 2011

У меня есть изображение (png), которое я хочу поместить под тепловую карту (так сказать), сделанную из матрицы 2D и значений 0-1.Таким образом, интенсивность пятна будет зависеть от того, насколько велико значение в матрице.

Я могу использовать imshow (матрицу), но это полностью рисует поверх изображения внизу.Возможно ли, возможно, не рисовать какие-либо пиксели со значениями матрицы <0,05 или каким-либо другим способом заставить это работать? </p>

Ответы [ 2 ]

7 голосов
/ 29 июня 2011

Вот пример наложения двоичной тепловой карты поверх цветного изображения:

%# 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 голос
/ 29 июня 2011

загруженный png будет трехмерной матрицей.Вы можете конвертировать 2d двоичную матрицу в 3d с помощью repmat.Затем измените размер бинарной матрицы так, чтобы она соответствовала размеру png с помощью команды imresize.Наконец, вы можете показать две матрицы, смешанные с чем-то вроде imshow (альфа (myPng) + (1-альфа) * ​​(myBinaryMat)), где альфа - это параметр смешивания от 0 до 1.

...