2016-11-14 10 views
1

私は様々なスキャン画像のバッチ画像処理を行う良い方法を探しています。画像は非常に大きく(300dpiでa4)、画像処理時間は重要ではありません。スキャンした画像から背景のグラデーションを取り除く

一般的な問題は次のとおりです。イメージが色付けされている可能性がありますが、必ずしもそうである必要はありません。一部は白黒です。彼らはスキャンブックから来る真ん中にはっきりとした折り目があります。私が望むのは、グラデーションのように見えるこの折り目の画像と、実際の背景が白く/薄い灰色に見えるようにカラーシフトされた画像(追加のボーナスとして)です。例の画像は、この(興味のある人のために、ヘッケルのKunstformen der Natur源である)されています。私は、適応コントラストフィルタとPythonでそれを行う上で熟考し、本当にまだ良い解決策を考え出すていなかった

Scanned Example

。どのようなフレームワーク/ツール/言語の入力があっても助けになるかもしれません。

+0

私はあなたが削除したいのか理解していないとして、あなたは、いくつかの注釈付きの例を追加することができます。 **編集**さて、私はそれを見ると思います。内部構造の左部分は、右部分よりも暗い。 – sascha

+0

背景全体が一様に着色されていません。エッジが暗くなります。理想的には細かい細部を保存しながらソリッドカラーに近づくでしょう(筆記と図面参照)。 – heyarne

+0

あなたの例にはフォールドマークはありませんが、その1つもありますか? –

答えて

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

関連する問題