我有这样的图像 和相应的背景图像。 在图像顶部提取热图
我想提取第一个图像的热图。我的第一个方法是掩盖,这是不是“等于不够”(阈值处理每一个像素之间的欧氏距离)的每一个像素,但效果还不够好
看起来像在图像处理一个简单的问题,但我缺乏经验。谢谢!
我有这样的图像 和相应的背景图像。 在图像顶部提取热图
我想提取第一个图像的热图。我的第一个方法是掩盖,这是不是“等于不够”(阈值处理每一个像素之间的欧氏距离)的每一个像素,但效果还不够好
看起来像在图像处理一个简单的问题,但我缺乏经验。谢谢!
获取的确切热图是一个高度非平凡问题,因为热图用的透明度不同水平的重叠。
这意味着每个像素有两个未知数:
如果粗略的分割足够了,我建议通过颜色强度进行简单的阈值处理。你可以看到,热图的强区是由一个强大的,蓝色包围:
I = imread('https://i.stack.imgur.com/7oVZK.png');
% Simple, manual color thresholding
mask1 = I(:,:,3) > 230 & I(:,:,1) < 30 & I(:,:,2) < 10;
现在我们扩张面具关闭蓝色热图边界的任何孔和填补漏洞:
% Morphological processing
mask2 = imdilate(mask1, strel('disk',5,0));
mask2 = imfill(mask2, 'holes');
最后,我们可以提取热图:
% Extract heat map
heat_map = I;
heat_map(~repmat(mask2,[1 1 3])) = 255;
imshow(heat_map)
这里是Result
编辑:如果你要处理许多类似的图像,它可能是更强大的执行在HSV空间分割:
I_hsv = rgb2hsv(I);
mask1 = I_hsv(:,:,1) > 0.6 & I_hsv(:,:,1) < 0.7 & I_hsv(:,:,2) > 0.95 & I_hsv(:,:,3) > 0.9;
谢谢!顺便说一句,你能解释更多关于HSV空间分割吗? –
当然。如果您想使用蓝色进行分割(如图所示),那么RGB空间中的阈值将取决于照明(亮度)。在[HSV](https://en.wikipedia.org/wiki/HSL_and_HSV)颜色空间中,您可以直接对色调值执行阈值处理,并对饱和度和值进行一些限制(显示在我的答案的最后一行)。 – Richard
你有没有通过算法热图最初添加任何想法到图像上? – Wysaard
这可能是您的问题的答案:http://stackoverflow.com/questions/2139350/what-is-the-formula-for-extracting-the-src-from-a-calculated-blendmode – Dima