我有一个脚本,它使用Google Maps API下载等大小的方形卫星图像序列并生成PDF。图像需要事先旋转,我已经使用PIL来完成。使用Python图像库(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
此代码独立运行,为每个图像。我想知道是不是先分析所有图像然后“归一化”它们的视觉特性(对比度,亮度,伽玛等)会更好。
此外,我认为有必要对图像进行一些分析(直方图?),以便根据每幅图像应用自定义校正,而不是对所有图像进行相同校正(尽管任何“增强“功能隐含地考虑初始接头)。
有没有人有这样的问题和/或知道一个很好的替代方案与彩色图像(无灰度)做到这一点?
任何帮助将不胜感激,谢谢阅读!
好问题!但是需要澄清一些情况。另外,张贴示例图像对于人们用作测试用例会非常有帮助。首先,下载它们时,瓷砖边缘不匹配的问题是什么?或者你正在寻找一种方法来使黑暗的瓷砖变亮,并让明亮的瓷砖变暗?或者你需要做后者,同时保持边缘的连续性? – Paul
边缘不是问题,因为图像集不是连续的。正如你所说,目标是使最亮的部分变暗并使黑暗的部分变亮。 – heltonbiker