我想覆盖同一场景的两个视图 - 一个是白光图像(单色,用于参考),另一个是特定波段(具有我正在展示的真实数据)中的图像。正确的方式覆盖多波段图像?
白光图像是“参考”,数据图像是“数据”。它们是相同尺寸的普通2D numpy阵列。我想使用'灰色'颜色地图显示白色参考图像,使用'热'颜色地图显示数据图像。
什么是“正确”的方式来做到这一点?
我开始用这样的:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
hotm = cm.ScalarMappable(cmap='hot')
graym = cm.ScalarMappable(cmap='gray')
ref_rgb = graym.to_rgba(reference) # rgba reference image, 'gray' color map
data_rgb = hotm.to_rgb(data) # rgba data image, 'hot' color map
plt.imshow(ref_rgb + data_rgb)
,由于在plt.imshow()
呼叫总和溢出的范围0..1没有很好地工作(或者0..255;这是混淆)而得到我疯狂的颜色。
后来我换成这最后一行:
plt.imshow(ref_rgb/2 + data_rgb/2)
这工作,但给了我一个非常洗出,低对比度的图像。
最后,我想这一点:
plt.imshow(np.maximum(ref_rgb, data_rgb))
这似乎给最好的结果,但我担心由具有较低的R,G,或b的值超过这么多我的“数据”丢失参考图像。
什么是“正确”或“通常”的方式来做到这一点?