从扫描图像中删除背景渐变

时间:2016-11-14 16:22:29

标签: image-processing

我正在寻找一种对各种扫描图像进行批量图像处理的好方法。图像非常大(a4处为300dpi),但图像处理时间不应该是一个问题。

一般问题是:图像可能是彩色的,但不一定必须是,其中一些是黑色和白色。它们在扫描书籍的中间有一个非常典型的折叠标记。我想要的是清除了折叠标记的图像,看起来像一个渐变,并且(作为额外的奖励)颜色偏移,使得实际背景显示为白色/浅灰色。一个示例图像就是这个(来源是Haeckel' s Kunstformen der Natur,对于任何感兴趣的人):

Scanned Example

我考虑使用自适应对比度滤波器在Python中进行,但是还没有真正提出好的解决方案;几乎任何框架/工具/语言的输入都可以帮助我。

1 个答案:

答案 0 :(得分:1)

这是使用vips的快速黑客攻击。它会产生一个巨大的模糊(高斯与西格玛200)来获得背景,然后按照暗处的数量放大图像。

#!/usr/bin/env python

import sys

import gi
gi.require_version('Vips', '8.0')
from gi.repository import Vips

image = Vips.Image.new_from_file(sys.argv[1])

# huge gaussian blur to remove all high frequences ... we will just be left with
# the changes in the background
smooth = image.gaussblur(200)

# scale up the darker areas of the original ... we scale up by the proportion they
# are darker than white by
image *= smooth.max() / smooth

# that'll make rather a dazzling white ... knock it back a bit
image *= 0.9

image.write_to_file(sys.argv[2])

像这样跑:

$ time ./remove_gradient.py ~/Desktop/orig.jpg x.jpg
real    0m16.369s
user    0m55.704s
sys 0m0.218s

还有一些渐晕,但对我来说似乎有所减少。

after scale by blur