【问题标题】:Histogram equalization (or stretching) of RGB picture in pythonpython中RGB图片的直方图均衡(或拉伸)
【发布时间】:2016-05-07 06:43:31
【问题描述】:

我正在从多光谱数据自动创建 JPG 图片。创建的图片很暗。所以我认为最好的办法是改变 brightness(比如 PIL 中的 Image.Enhance)。但是有一个问题,因为有些图片需要比其他图片更高的亮度。

所以下一个想法是尝试直方图的线性拉伸。所以我创建了迭代 RGB 元组并计算像素新强度的脚本。差别很小。可能是因为值的范围每次都是 0-255。然后我尝试了R、G和B的直方图均衡化(ImageOps),但结果并不好,请看图片中间部分。我在互联网上发现这不是一个好方法,因为颜色会发生巨大变化。这可能是我的情况。

最好的想法是将 RGB 数组转换为 HSL,然后更改亮度,但我不能使用常量来最大化亮度,因为图片不同并且需要不同的常量。我应该对亮度使用直方图均衡,或者最好的方法是如何拉伸或更好地对我的图片进行直方图均衡?

我正在寻找像 IrfanView 中的图像/自动调整颜色或在某些软件中使用的名称线性归一化...

我希望这张图片能帮助你理解我的问题。我可能选择了不好的方式来实现我的目标。

谢谢你的回答,我会很高兴的。


编辑

Left image for download

我可以稍后上传下一张图片,今天。

【问题讨论】:

  • 嘿@Bulva,你有图片样本可以进行一些测试吗?
  • 是的,我有大约 10 张照片。因此,如果您有任何想法,我可以对其进行测试
  • @Bulva 可能他希望你分享其中一些图片以便进行实验
  • 对不起,我的错误。我今天会上传一些图片
  • 我在帖子中添加了预览中的左图。如果有必要,我可以稍后上传下一张图片。感谢您的帮助

标签: python image-processing histogram rgb hsl


【解决方案1】:

我不确定这是否适用,我自己也没有应用过,但我正在阅读这篇关于水下对比度拉伸的文章: http://www.iaeng.org/IJCS/issues_v34/issue_2/IJCS_34_2_12.pdf

它的建议可能会有所帮助

"In order to address the issues discussed above, we propose
an approach based on slide stretching. Firstly, we use contrast
stretching of RGB algorithm to equalize the colour contrast in
the images. Secondly, we apply the saturation and intensity
stretching of HSI to increase the true colour and solve the
problem of lighting"

【讨论】:

    【解决方案2】:

    我建议您使用与您所说的相同的方法,稍作修改。

    • 将 RGB 图像转换为 LAB 图像。
    • 对 L 通道应用局部直方图均衡。
    • 将其与其他频道合并。
    • 将其转换回 RGB 图像。

    您可以在另一个问题here 中查看我的答案:

    我那里的代码是使用 python 为 OpenCV 编写的。如果您愿意,可以将其修改为 C 语言。

    如果对你有帮助,请告诉我!!

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 2017-04-28
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 2019-08-28
      相关资源
      最近更新 更多