【问题标题】:How to remove normalization from scipy imsave function如何从 scipy imsave 函数中删除规范化
【发布时间】:2018-08-18 04:03:22
【问题描述】:

我有一个简单的任务要完成,但是我发现的当前保存功能对我一点帮助都没有。我所要做的只是将灰度图像转换为另一个具有属于较小间隔(特别是在 120 和 180 之间)的强度的图像。

我实现了转换(比如改变不同的温度标度),但是当我保存图像时,scipy.misc.imsave 将其标准化。转换是正确的,因为我创建了直方图来显示保存之前的强度,并且它们都位于指定范围之间。

我尝试过其他工具,例如:

imageio.imwrite(path, img)
numpy.save(path, img)
scipy.misc.toimage(img, cmin=120, cmax=180, mode='L').save(path)

我承认最后一个我不太了解参数(我有一个猜测),documentation 没有帮助。有人可以帮我解决这个问题吗?

编辑:我正在发布代码

def ex3():
    I = misc.imread(imgname)
    N =  numpy.multiply(I , float(12.0/51.0))
    N = numpy.add(N, 120)
    NEG = I
    NEG = numpy.add(NEG, -255)
    NEG = numpy.absolute(NEG)
    misc.imsave(path, N)
    misc.imsave(os.getcwd()+"/a0/results/"+file.replace(path, NEG)

当我切换到 OpenCV 时,图像被完美渲染。但如果可能的话,我想坚持使用 Scipy。

【问题讨论】:

  • np.save 不应向img 添加任何规范化或更改(前提是ndarray)。
  • 如果您发布失败的代码部分会有所帮助。使用 img = np.random.randn(...) 之类的内容将您的数据替换为此示例的等效内容。
  • 感谢您的回答。 @user2699 我更新了帖子。如果您有任何要求,请告诉我。 hpaulj,不幸的是我已经尝试使用 np.save,但我也得到了标准化图像。但我同意你的看法:它不应该那样做。
  • 查看this question 和我的答案。
  • numpy.save 不会对数据进行规范化,但也不会将数据保存为图像格式。

标签: python numpy image-processing scipy python-imageio


【解决方案1】:

正如Warren Weckesser 对此question 的回答,没有对值进行规范化,但函数会根据数据类型重新缩放值。此问题的解决方案是将数组图像的数据类型设置为 uint8,如下所示:

misc.imsave(path, img.astype(numpy.uint8))  

【讨论】:

    【解决方案2】:

    我在使用 matplotlib imsave 时遇到了类似的问题,当我设法让它工作时,我正在考虑根据 Alan 的解决方案转换为 scipy imsave。

    使用matplotlib:

    palette_cm = ['#000000', '#ff0000', '#00ff00', '#0000ff', 
                    '#ffff00', '#ff00ff', '#00ffff', '#ffffff']
    def myColorMap():
        return ListedColormap(palette_cm)
    plt.imsave('test.png', im.astype(np.uint8), cmap=myColorMap(), vmin=0, vmax=7)
    

    uint8 应该使 imsave 具有与 scipy 中相同的行为,固定为特定值,并且在一种方法中确实如此。在另一种方法中,即使使用显式强制转换,它也会缩放范围,因此我必须添加 vmin 和 vmax 选项。这可能是由我的 8 值颜色图引起的,但 uint8 的自动缩放在 github 问题中针对 matplotlib 的帖子中被特别提及为缺陷。

    【讨论】:

      猜你喜欢
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 2017-04-26
      • 2017-02-24
      • 1970-01-01
      • 2019-01-19
      相关资源
      最近更新 更多