にせねこメモ

はてなダイアリーがUTF-8じゃないので移ってきました。

デジカメで撮った文書をきれいに印刷する

文書をコピーしたいけれどコピー機が手元にない時など、デジカメで文書を撮影しておくということがある。
ただ、今度それを印刷しようと思った場合、そのまま印刷してもコピー機でコピーを取ったときの様にきれいに印刷することは難しい。

ここでは、デジカメで撮った白黒文書をPhotoshopできれいに加工して印刷することを目指す。
これにより、あまり大きく開いてスキャンのできない本などのコピーにも応用が可能である。

概略

  1. 傾きを補正する
  2. ハイパスフィルタをかける
  3. 2諧調化する

普通にコントラスト調整などを行うだけだと、光が均一に当たっていない場合など、字が掠れたり紙ごと黒く潰れてしまう場合が多い。

これを回避するために、ハイパスフィルタを用いる。ハイパスフィルタとは、その名の通り高周波成分を残すフィルタで、画像でいうと変化が激しいところ、つまりエッジ部分を抽出する。これにより、画像自体の色の濃淡ではなく、色の濃淡の変化を検出することで、ライティングが均一でなくても黒部分をきれいに抽出することが可能になる。

制限

  • 白黒はっきり分かれた画像にしか使用できない(グレースケールやカラーは無理)
  • 撮影時にボケたものはあまりきれいにはならない

手順

元画像がこれ。スマホのカメラで撮影した。デスクライトをつけて撮影している。紙のサイズはB5。
f:id:nixeneko:20170405004954p:plain

等倍だとこう。
f:id:nixeneko:20170405005213p:plain

文書の傾きを補正する

遠近法の切り抜きツールを選択
f:id:nixeneko:20170405010128p:plain

文書の4隅に合うように切り抜きの四角形を調整し、右上の「○」ボタンを押して決定する。
f:id:nixeneko:20170405010648p:plain

結果。印刷がずれてるので水平が傾いてる……
f:id:nixeneko:20170405010824p:plain

さすがに傾き過ぎなので切り抜きツールでちょちょいと傾きを直した。
f:id:nixeneko:20170405011207p:plain

ハイパスフィルタをかける

「フィルター」→「その他」→「ハイパス」を選択。この時画像を等倍程度で文字を表示しておくとフィルターの適用結果がみやすい。
f:id:nixeneko:20170405011917p:plain

今回は線の幅が3~4px程度だったので4pxと指定してみる(7px位にした方が線の掠れが小さくなるかもしれない。要試行錯誤)。小さいより大きめの方が良いが、あまり大きすぎるとフィルターをかける意味がなくなるような気がする。OKを押す。
f:id:nixeneko:20170405012255p:plain

するとハイパスフィルタが適用された状態になる。

二値化

次は二値化を行う。「イメージ」→「色調補正」→「2階調化」を選択
f:id:nixeneko:20170405012459p:plain

しきい値の設定を、ゴマ状のノイズが目立たなくなるまで小さくし(ここでは116にした)、OKを押す。しきい値を小さくすると文字が削れていくので適当な値に設定する。
f:id:nixeneko:20170405012812p:plain


結果、等倍だとこんな感じになる。
f:id:nixeneko:20170405013009p:plain

それを再度印刷したものを元文書と比較するとこのようになる。
f:id:nixeneko:20170405014653p:plain
「書」「暑」などの線が混んでいる文字は掠れているが、読めないことはない。もとがスマホの写真からということであるから、そこそこ実用性はあるのではないかと思う。

備考

  • 暗い環境で撮ったものであるとか、撮影時にブレがあると綺麗に出ない。その場合は元画像の諧調を残したままの方がいいだろうと思う。
  • 一眼レフなどのちゃんとしたカメラを使って、ちゃんと明るくライトを当てることで、大きく開いてスキャンのできない本などのコピーにも応用が可能である。
  • 実際にコピー機でコピーする際にも、ハイパスフィルタをかけたような諧調がでていることがあるため、内部処理でハイパスフィルタ相当の処理を行っているのではないかと思う。
  • ハイパスフィルタが使えない場合は、元画像から元画像にガウスぼかしをかけたものを引き算すると、ハイパスフィルタ相当になる。ガウスぼかしが高周波成分を除去するローパスフィルタだから納得という感じもある。