-trim, -fuzz
そういう都合のいいオプションはないものかと調べてみると、 -trim というのが見つかりました。
convert -trim a.png a-out.png
- a.png
-
- a-out.png
-
ただし、 -trim オプションは「角のピクセルと同じ色」を除去するようで、 紙の色ムラ・染みなどノイズが混じっていると上手く除去できません。
convert -trim b.png b-out.png
- b.png
-
- b-out.png
-
convert -trim c.png c-out.png
- c.png
-
- c-out.png
-
そこらへんも適当にうまいことやってくれよーと思うわけですが、 なんと大変都合の良いことに -fuzz というオプションがあるんですね。
-trim に添えて -fuzz 50% などと指定してやります。
convert -fuzz 50% -trim b.png b-out2.png
- b.png
-
- b-out2.png
-
すばらしい。
↓ パラメータをいじるとこんな感じで除去の度合いが変化します。
除去しない 0% ←→ 100% 強く除去する
スキャンした紙を加工する
以下、紙からスキャンした場合を想定した例です。
- スキャンした画像 original.jpg
-
上記と同じように fuzz + trim
convert -fuzz 50% -trim original.jpg out-1.jpg
- out-1.jpg
-
パーセント指定を大きくしすぎると 除去しなくていい部分(文字の一部)まで削れてしまいます。
convert -fuzz 70% -trim original.jpg out-2.jpg
- out-2.jpg
-
せっかくなのでレベル補正しましょうか。
convert -level 0%,75%,0.8 -fuzz 50% -trim original.jpg out-3.jpg
- out-3.jpg
-
さらに固定幅の余白を付けたい場合は -border を使います。
convert -level 0%,75%,0.8 -fuzz 50% -trim \ -bordercolor '#ffffff' -border 10%x10% \ original.jpg out-4.jpg
- out-4.jpg
-
固定幅の余白を付けるのではなく できあがりの画像サイズを指定して中央に配置したい場合、 -border を使う代わりに次の2つの処理を組み合わせます。
(1) 白で塗りつぶした200x100ピクセルの画像を作成:
convert -size 200x100 xc:white out.jpg
(2) 下敷きとなる画像(sita.jpg) の上にそれより小さな画像(ue.jpg)を重ねる。 配置は上下左右の中央:
convert sita.jpg ue.jpg -gravity center -composite out.jpg
全部一緒に組み合わせるとこうなります。
convert \ \( -size 320x400 xc:white \) \ \( -level 0%,75%,0.8 -fuzz 50% -trim original.jpg \) \ -gravity center -composite out-5.jpg
- original.jpg
-
- out-5.jpg
-
分かりにくい場合は無理に繋げなくても中間ファイルを作って段階ごとに処理すれば良いかと思います。
参考
- 2008-04-24 画像処理についてあれこれ: ImageMagickで、画像の上下左右に余白を追加する … -splice
ImageMagick逆引きコマンドリファレンス | |
![]() | クーガー株式会社 石井 敦 インプレスジャパン 2008-11-28 売り上げランキング : 426384 Amazonで詳しく見る by G-Tools |
「自炊」のすすめ 電子書籍「自炊」完全マニュアル | |
![]() | インプレスジャパン 2011-07-22 売り上げランキング : 21130 Amazonで詳しく見る by G-Tools |
電子ブック自炊完全マニュアル | |
![]() | 戸田 覚 東洋経済新報社 2010-12-03 売り上げランキング : 67122 Amazonで詳しく見る by G-Tools |