【发布时间】:2011-10-30 06:36:24
【问题描述】:
我有一个脚本,它使用 Google Maps API 下载一系列大小相等的方形卫星图像并生成 PDF。图像需要预先旋转,我已经使用 PIL 这样做了。
我注意到,由于不同的光线和地形条件,一些图像太亮,另一些太暗,最终生成的 pdf 有点难看,“现场”的阅读条件不太理想(这是野外山地自行车,我想要打印特定十字路口的缩略图)。
(编辑)然后目标是使所有图像最终具有相似的明显亮度和对比度。因此,太亮的图像必须变暗,而太暗的图像必须变亮。 (顺便说一下,我曾经使用过imagemagick autocontrast,或auto-gamma,或equalize,或autolevel,或类似的东西,在医学图像中得到了有趣的结果,但不知道如何做这些在 PIL 中)。
我在转换为灰度后已经使用了一些图像校正(之前有一台灰度打印机),但结果也不是很好。这是我的灰度代码:
#!/usr/bin/python
def myEqualize(im)
im=im.convert('L')
contr = ImageEnhance.Contrast(im)
im = contr.enhance(0.3)
bright = ImageEnhance.Brightness(im)
im = bright.enhance(2)
#im.show()
return im
此代码对每个图像独立工作。我想知道是否最好先分析所有图像,然后“标准化”它们的视觉属性(对比度、亮度、伽马等)。
另外,我认为有必要对图像进行一些分析(直方图?),以便根据每个图像应用自定义校正,而不是对所有图像进行同等校正(尽管任何“增强”函数隐含地考虑初始条件)。
有没有人遇到过这样的问题和/或知道用彩色图像(无灰度)做这件事的好方法?
任何帮助将不胜感激,感谢阅读!
【问题讨论】:
-
好问题!但是,需要进行一些澄清。此外,发布示例图像对于人们用作测试用例非常有帮助。首先,是不是下载的时候瓦片边缘不匹配的问题?或者您是否正在寻找一种方法来使深色瓷砖变亮并使明亮的瓷砖变暗?还是您需要在保持边缘连续性的同时做后者?
-
边缘不是问题,因为图像集不是连续的。正如你所说,我们的目标是让最亮的部分变暗,让最暗的部分变亮。
标签: python image-processing python-imaging-library brightness contrast