我有一个脚本,使用Google Maps API下载一系列相同大小的正方形卫星图像并生成PDF。这些图像需要事先进行旋转,我已经使用PIL完成了这个步骤。
我注意到,由于不同的光照和地形条件,一些图像过亮,另一些则过暗,导致生成的pdf看起来不太好,观感不佳(这是在野外山地骑行时,我想要打印特定十字路口缩略图的情况)。
(编辑)目标是让所有图像最终具有类似的明度和对比度。因此,过亮的图像必须变暗,而过暗的图像必须变亮。(顺便说一句,我曾经在医学图像中使用过ImageMagick的autocontrast、auto-gamma、equalize、autolevel之类的工具,但不知道如何在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
这段代码针对每个图像独立运行。我想知道先分析所有图像然后“规范化”它们的视觉特性(对比度、亮度、伽马等)是否更好。
此外,我认为有必要对图像进行一些分析(直方图?),以便根据每个图像应用自定义校正,而不是对所有图像进行相同的校正(尽管任何“增强”函数都隐含考虑了初始条件)。
是否有人遇到过这样的问题和/或知道一个在彩色图像(非灰度)上执行此操作的好方法?
非常感谢您的阅读,期待您的帮助!