图像与矩阵叠加

发布于 2024-11-17 15:46:32 字数 162 浏览 2 评论 0原文

我有一个图像(png),我想将其放在由 a 和值 0-1 的 2D 矩阵组成的热图(可以这么说)下面。因此,光斑的强度将由矩阵中的值的大小决定。

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

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 large the value in the matrix is.

I can use imshow(matrix) but that completely draws over the image underneath. Is it possible to perhaps, not draw any pixels with matrix values <.05 or some other way to make this work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

長街聽風 2024-11-24 15:46:32

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

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

在此处输入图像描述
在此处输入图像描述
在此处输入图像描述

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

终弃我 2024-11-24 15:46:32

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文