ImageMagickで周囲の余白を除去する
画像加工なら大抵のことができる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
$ convert pizza_01.jpg -fuzz 10% -trim pizza_01_trim_10.jpg
どうやら今回のピザはfuzz 10%くらいがちょうどいいみたいです。
今回は画像1枚だけだったのでパラメータを変えて手作業で何度か変換しただけですが、大量の画像をバッチ処理するとなるともう一工夫必要になりそうですね。 より詳しいノウハウはCutting and Bordering -- IM v6 Examplesに載っています。
さらに黒魔術を極めると ImageMagickで紙の白レベルを判定する | d.sunnyone.org や ImageMagick で画像のフチの背景色を切り取って透明に - Qiita みたいに凝ったこともできます。
ちなみに今回の画像はPixabayからCC0の写真を拝借しました。
おススメ