ImageMagickで周囲の余白を除去する

2017/11/23

画像加工なら大抵のことができるImageMagick。余白除去もできるんです。

使うオプションは2つだけ。コマンド体系が複雑かつ難解なImageMagickにしては黒魔術感薄めですね。

  • trim: 余白を除去する
  • fuzz: ノイズに対する感度を指定する(100%に近づくほどノイズを背景と同一視 しやすくなる)

fuzzがキモです。やってみましょう。

$ convert --version
Version: ImageMagick 6.7.8-9 2016-06-16 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features: OpenMP    
$ convert pizza_01.jpg -trim pizza_01_trim.jpg

画像の境界線を分かりやすくするために黒で縁取りしてあります。白部分は元の画像、黒部分は背景(画像の外側)だと思ってください。

元画像

元画像

余白除去

余白除去

一応切り抜けましたが余白が残っちゃってますね。ここでfuzzの出番です。

$ convert pizza_01.jpg -fuzz 5% -trim pizza_01_trim_5.jpg
余白除去(fuzz 5%)

余白除去(fuzz 5%)

$ convert pizza_01.jpg -fuzz 10% -trim pizza_01_trim_10.jpg
余白除去(fuzz 10%)

余白除去(fuzz 10%)

どうやら今回のピザはfuzz 10%くらいがちょうどいいみたいです。

今回は画像1枚だけだったのでパラメータを変えて手作業で何度か変換しただけですが、大量の画像をバッチ処理するとなるともう一工夫必要になりそうですね。 より詳しいノウハウはCutting and Bordering -- IM v6 Examplesに載っています。

さらに黒魔術を極めると ImageMagickで紙の白レベルを判定する | d.sunnyone.orgImageMagick で画像のフチの背景色を切り取って透明に - Qiita みたいに凝ったこともできます。

ちなみに今回の画像はPixabayからCC0の写真を拝借しました。




おススメ