热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在图像顶部的热图

如何解决《在图像顶部的热图》经验,为你挑选了1个好方法。

我有不同对象的图像(Pascal Voc),我有一个概率热图.我想通过绘制图像以及在它上面以某种方式绘制热图来可视化它.最好的方法是什么?

我正在考虑像这样使用alpha通道:

im_heat = np.zeros((image.shape[0],image.shape[1],4))
im_heat[:,:,:3] = image
im_heat[:,:,3] = np.rint(255/heatmap)
plt.imshow(im_heat, cmap='jet')
plt.colorbar()

如何自定义颜色条从最小(热图)到最大(热图)?或者有没有更好的方法可视化概率?



1> Ed Smith..:

您可以使用matplotlib堆叠图像和绘图,然后选择要用于颜色栏的句柄.使用contourf的彩条最小值和最大值会根据您的热图(或者你可以传递vmin=min(heatmap)vmax=max(heatmap)对contourf要明确这个范围).这个问题是热图将覆盖你的图像(设置透明度将使整个事物透明).最好的选择是制作一个在接近零时透明的色彩图,如下所示,

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import Image

#2D Gaussian function
def twoD_Gaussian((x, y), xo, yo, sigma_x, sigma_y):
    a = 1./(2*sigma_x**2) + 1./(2*sigma_y**2)
    c = 1./(2*sigma_x**2) + 1./(2*sigma_y**2)
    g = np.exp( - (a*((x-xo)**2) + c*((y-yo)**2)))
    return g.ravel()


def transparent_cmap(cmap, N=255):
    "Copy colormap and set alpha values"

    mycmap = cmap
    mycmap._init()
    mycmap._lut[:,-1] = np.linspace(0, 0.8, N+4)
    return mycmap


#Use base cmap to create transparent
mycmap = transparent_cmap(plt.cm.Reds)


# Import image and get x and y extents
I = Image.open('./deerback.jpg')
p = np.asarray(I).astype('float')
w, h = I.size
y, x = np.mgrid[0:h, 0:w]

#Plot image and overlay colormap
fig, ax = plt.subplots(1, 1)
ax.imshow(I)
Gauss = twoD_Gaussian((x, y), .5*x.max(), .4*y.max(), .1*x.max(), .1*y.max())
cb = ax.contourf(x, y, Gauss.reshape(x.shape[0], y.shape[1]), 15, cmap=mycmap)
plt.colorbar(cb)
plt.show()

这使,

在此输入图像描述


推荐阅读
author-avatar
W于小北B
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有