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

5

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

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

image 在这里是一个 numpy 数组。如何将这些 normcmap 参数传递给 matplotlib 中的 plt.showimshow() 函数呢?

下面的代码是无效的:

imshow(image, cmap=cm.gray, LogNorm(......))

2
什么是lm?你在哪里计算质心? - tacaswell
也许 lm 是对 ln(自然对数)的拼写错误? - perimosocordiae
我的猜测是 lm 应该是 LogNorm - askewchan
1
我认为真正的谜团在于标题与问题之间的关系。 - askewchan
1
哈哈,抱歉给您添麻烦了。我把两个问题搞混了。当时有点昏昏沉沉的。在任务中给出了“lm”。我想这是一个打字错误,应该是ln/LogNorm。 - madratman
1个回答

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")

这将创建一个特殊的色图,它的范围从 image.mean() + 0.5 * image.std()image.max(),使用对数刻度。更一般的信息在这里: colors,具体来说是:LogNormorigin='lower' 的意思是数组的 [0,0] 元素(原点)显示在图像的左下部分。通常情况下,数组的原点在左上角。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接