如何使用 imshow () (matplotlib) 绘制对数归一化图像?

mad*_*man 5 numpy image matplotlib normalize

我理解这个概念。但我认为我犯了一个愚蠢的错误。这就是我想要的(伪代码)。这是为了练习。我无法理解较低的起源部分和前两行的语法。

norm = LogNorm(image.mean() + 0.5 * image.std(), image.max(), clip='True', 
               cmap=cm.gray, origin="lower")
Run Code Online (Sandbox Code Playgroud)

image这里是一个numpy数组。如何将matplotlib 中的这些norm和参数传递给or ?cmapplt.showimshow()

这不起作用:

imshow(image, cmap=cm.gray, LogNorm(......))
Run Code Online (Sandbox Code Playgroud)

ask*_*han 4

这有效吗?

from matplotlib import colors, cm, pyplot as plt

norm = colors.LogNorm(image.mean() + 0.5 * image.std(), image.max(), clip='True')
plt.imshow(image, cmap=cm.gray, norm=norm, origin="lower")
Run Code Online (Sandbox Code Playgroud)

这将创建一个特殊的颜色图,其范围从image.mean() + 0.5 * image.std()image.max()使用对数刻度。更多一般信息在这里:colors特别是:LogNorm

origin='lower'意味着[0,0]数组的元素(“原点”)显示在图的左下部分。通常数组的原点位于左上角。