2016-01-29 223 views
0

我从多光谱数据自动创建JPG图片。创建的图片非常黑暗。所以我认为这将是最好的想法改变亮度(像在PIL Image.Enhance)。但是有一个问题,因为一些图片比其他图片需要更多的亮度。Python中的RGB图片的直方图均衡(或拉伸)

Original Image, Histogram equalization of three channels(PIL), and something similar what I need in IrfanView (auto adjust colors)

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

最好的想法看起来转换RGB阵列为HSL,然后改变亮度,但我不能使用常量最大化亮度,因为图片是不同的,需要不同的常数。我应该在亮度上使用直方图均衡,或者我的图片有多舒展或可能更好的直方图均衡效果的最佳方法是什么?

我在寻找类似的图像/自动调整IrfanView中或在某些SW的颜色使用的名称线性规范化...

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

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


编辑

Left image for download

下一页图像以后我可以上传今天。

+0

嘿@Bulva,你有一个图像样本,使一些测试可能吗? –

+0

是的,我有大约10张照片。所以,如果你有任何想法,我可以在他们身上测试 – Bulva

+0

@Bulva可能他希望你分享一些这些图像,以便进行实验 – MBo

回答

0

我不知道这是否适用,我也没有这个应用自己,但我正在读这篇关于水下对比上拉伸: 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" 
0

我建议采用与您稍作修改的方法相同的方法。

  • 将RGB图像转换为LAB图像。
  • 将局部化直方图均衡应用于L声道。
  • 将其与其他渠道合并。
  • 将其转换回RGB图像。

您可以检查不同的问题here我对这样的回答:

我有使用Python的OpenCV的写的代码。如果你愿意,你可以修改它的C语言。

让我知道它是否帮助你!