如何在两个具有相同像素大小的RGB图像之间产生一个三角图?

问题描述 投票:0回答:1

I有两个RGB图像,表示某些几何形状上的标量变量的图。我的目标是找到一种方法来绘制两个图像之间的变量差异并用自定义的colormap上色(请参阅附件图像)。

我猜想的起点是以灰度转换两个图像,但是在此之后,我在理解如何正确地映射负面值并从数组差异上绘制了值。

到目前为止,我已经编写了这件代码:

import numpy as np import matplotlib as mpl from PIL import Image, ImageChops img1 = Image.open('img1.png').convert('L') img2 = Image.open('img2.png').convert('L') cm = mpl.colormaps['bwr'] img1_array = np.asarray(img1) img2_array = np.asarray(img2) diff_img = img1_array - img2_array im = cm(diff_img) im = np.uint8(im * 255) im = Image.fromarray(im).save("test_diff.png")

但要产生想要的结果是很远的。

“ delta”绘图betweentwo图像

您正在用

im*255
python numpy matplotlib image-processing computer-vision
1个回答
0
投票
128+im*8

假设您的输入图像类似于您展示的示例。手动调整比例因子,直到您喜欢结果为止。

要做到这一点,然后在所得差的图像中找到最小值和最大值,然后重新汇总它,以使
im
映射到0和
im_min

至255。充分利用UINT8的动态范围。

im_max
可能已经有一个函数重新列出字节图像以使用PIL中的全范围。有并且可能比滚动代码更可取。例如
im = np.uint8(128+(im-im_min)*255/(im_max-im_min))
但是,您可能希望做到这一点,以便任何一个较大的或更大的尺度都决定了尺度,以便零保持在像素值128上。做到这一点的缩放因子是读者的练习。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.