'Haze'或'fog'使用 python imshow 出现 - 为什么黑色区域看起来是灰色的?



我希望这将是一个非常直接的问题。 我正在努力将从 FITS 文件中读取的一些图像处理成 numpy 数组。 我想制作一个 RGB 图像。 问题是,当我制作RGB图像时,似乎出现了这种"白雾"。 或者,我知道这张图片中的黑色区域应该是黑色的,但它们看起来是灰色的。G图像中的绿色非常好。 看起来整个图像上似乎有白雾或雾。我想也许是设置阿尔法的问题? 注意 将 RBGA 中的 A 设置为 0 和 255 对解决问题没有帮助。

这是一个图像示例 - 我会展示它,除非我没有足够的声誉点。 不幸的是,在这种情况下,一张图片胜过 1000 个单词......

这是我用来进行此图像处理的代码:

testrgb = np.zeros([512,512,4])
# 
# converting read in image to float
tmpr = asi1r.astype('float')
tmpg = asi1g.astype('float')
tmpb = asi1b.astype('float')

#http://akash0x53.github.io/blog/2013/04/29/normalization/ pretty obvious
tmptotal = tmpr+tmpg+tmpb
R = tmpr/tmptotal
G = tmpg/tmptotal
B = tmpb/tmptotal
# eliminate the nans in the division
R[np.isnan(R) == True] = 0.
G[np.isnan(G) == True] = 0.
B[np.isnan(B) == True] = 0.
testrgb[:,:,0] = R*255.
testrgb[:,:,1] = G*255. #asi1g.astype('float')
testrgb[:,:,2] = B*255. #asi1b.astype('float')
testrgb[:,:,3] = 255.
testrgb = testrgb.astype('uint8')
f = plt.figure(figsize=(4,4), dpi=300)
plt.imshow(testrgb,cmap='jet',vmin=0,vmax=200)
plt.colorbar()
plt.show()
f.savefig('test.png')
plt.close('all')

任何帮助将不胜感激。 谢谢。

这似乎不是 matplotlib 的问题。从您的评论来看,正常化确实是错误的。请尝试以下操作:

tmptotal = tmpr + tmpg + tmpb
testrgb[..., 0] = tmpr 
testrgb[..., 1] = tmpg 
testrgb[..., 2] = tmpb 
testrgb *= (255.*3) / tmptotal
imshow(testrgb, cmap='jet')

vmaxvmin设置不适用于 RGB 图像。

最新更新