【问题标题】:How to Make an Image Uniform Brightness (using Python/PIL)如何使图像亮度均匀(使用 Python/PIL)
【发布时间】:2010-10-14 11:11:24
【问题描述】:

我想为已拍摄的文档拍摄图像,并使其看起来像是经过扫描的。由于扫描仪会在整个文档上放置一个恒定的光源,我想在文档的照片上实现这种效果。所需的效果是消除任何阴影或低光区域(或至少使它们不那么明显)并使整张照片相当明亮。

我的第一个想法是定位目标图像中最亮的部分,然后它们使整个图像具有该亮度。假设这甚至是正确的算法,我将如何在 PIL 中做到这一点?有没有获取亮度的方法?等等?

(这是this earlier question的后续。)

【问题讨论】:

  • 您可以添加您的示例图片吗?

标签: python image image-processing python-imaging-library brightness


【解决方案1】:

作为第一次尝试,尝试对图像进行阈值处理。暗区变为黑色,亮区变为白色。我没有使用过 PIL,但我想有什么简单的方法可以做到。

【讨论】:

    【解决方案2】:

    尝试使用 ImageChops.screen(image1, image2) 复制 2 个图像。如果不满意,请尝试 ImageChops 模块中的其他一些功能。

    另外,您可能需要先将其转换为灰度:ImageOps.grayscale(image)。

    【讨论】:

      【解决方案3】:

      首先在图像编辑程序(如 GIMP)中手动尝试。我认为您正在寻找的是调整亮度和对比度。

      【讨论】:

      • 不,这不仅仅是因为较暗的区域应该比已经明亮的区域获得更多的亮度。
      【解决方案4】:

      什么类型的图像?如果它应该是理想的纯黑白,就像文本页面一样,那么您的原始数据可能类似于灰度渐变,具有不同级别的非全黑字母。对常数设置阈值可能会产生良好的结果,但如果照明太不均匀或镜头眩光干扰则不会。针对图像本身的平滑版本设置阈值。使用 PIL_usm.gblur(image, radius) 对其进行平滑处理,其中半径(以像素为单位)类似于十、二十或与字母元素宽度相当的某个值。旧笔记中的快速 hackcode 仅用于说明:

      import Image
      import PIL_usm
      # see http://www.cazabon.com/pyCMS/PIL_usm.html for PIL_usm
      
      img = Image.open(...)
      sm = PIL_usm(img, 10)
      thr = Image.ImageChops.subtract(img,sm, .001, 128)  
      # or whatever works 4u...
      

      OTOH,如果这些文档有照片或其他非双层图形,你需要更聪明。

      【讨论】:

        猜你喜欢
        • 2019-06-28
        • 2016-06-05
        • 2020-05-31
        • 2012-05-20
        • 2011-10-30
        • 1970-01-01
        • 2021-03-04
        • 1970-01-01
        • 2011-05-07
        相关资源
        最近更新 更多