我有一个脚本,它使用Google Maps API下载一系列大小相等的正方形卫星图像并生成PDF。图像需要事先旋转,我已经用PIL做了。
我注意到,由于光线和地形条件的不同,一些图像太亮,另一些太暗,生成的pdf文件最后有点难看,不太理想的阅读条件“在外地”(这是越野山地自行车,我想在那里有一个特定十字路口的打印缩略图)。
(编辑)目标是使所有的图像以相似的亮度和对比度结束。所以,太亮的图像必须变暗,而黑暗的图像必须变亮。(顺便说一句,我曾经使用imagemagickautocontrast
,或者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
此代码对每个图像独立工作。我想知道是否最好先分析所有图像,然后“规范化”它们的视觉特性(对比度、亮度、伽马等)。
另外,我认为有必要在图像中进行一些分析(直方图?),以便根据每个图像应用自定义校正,而不是对所有图像应用相等的校正(尽管任何“增强”函数隐式地考虑初始条件)。
有没有人有这样的问题和/或知道一个很好的选择,这样做的彩色图像(没有灰度)?
感谢您的帮助,谢谢阅读!
您可能正在寻找的是一个实用程序,执行“直方图拉伸”。Here is one implementation。我肯定还有其他人。我想你想保留原来的色调,并在所有色带上均匀地应用这个功能。
当然,很有可能有些瓷砖在其接合处的水平面会有明显的不连续性。然而,避免这种情况会涉及到“拉伸”参数的空间插值,这是一个更复杂的解决方案。(……但如果有必要的话,这将是一个很好的锻炼。)
编辑:
这里有一个保持图像色调的调整:
相关问题 更多 >
编程相关推荐