首页 > 解决方案 > 将两个不同的图像直方图绘制为单个 2D 直方图

问题描述

我希望在 x 轴上绘制一个 uint16 图像的直方图,在 y 轴上绘制另一个 uint16 图像的直方图,这样我就可以将它们之间的关系的颜色图绘制为 2D 图。

这是我所追求的那种情节

我试图形成两个单独的直方图,然后在循环中构造二维数组,但这失败了。

first = np.histogram(img1, bins = 1000)
first = first[0]


second = np.histogram(img2, bins = 1000)
second = second[0]


empty_array = np.zeros((1000,1000), dtype = np.float64)

for i in range(1000):
    for j in range(1000):
        empty_array[i,j] = first[j] + second[1000-j]

标签: pythonimagenumpyhistogramhistogram2d

解决方案


正如@kilozulu 已经建议的那样,这是使用 seaborn 的解决方案。我不会使用已经分箱的数据来生成此图,因为您正在丢失两个图像之间数据点的关联。相反,直接输入像素意图:

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

#dummy images
img1 = np.random.normal(0,10,(100,100))
img2 = np.random.normal(0,10,(100,100))

# make jointplot with linearised images:
sns.jointplot(img1.ravel(), img2.ravel(), kind='kde')

在此处输入图像描述


推荐阅读