ImageMagickでは-deskew
オプションで画像の自動傾き補正できます。
deskewオプションについてネットの記事を調べてみると、大抵の場合は以下のように40%
になっているのですがこれはなぜでしょうか?
convert -deskew 40% input.jpg output.jpg
-deskew
オプションが40%の理由
deskewの後のオプションはしきい値なのですが、ImageMagickの公式ドキュメントを見ると大抵の画像で40%がうまく動作する値です
との記載があるためです。
-deskew threshold{%}
Straighten an image. A threshold of 40% works for most images.
deskew使用時に画像のサイズを維持したい場合
-deskew
オプションは画像を回転させる都合、元画像と比べて画像の大きさ(縦横の画素数)が変わってしまいます。
変換後の画像でも大きさを維持したい場合は、-set option:deskew:auto-crop true
やgravity、cropなどのオプションを組み合わせて使うと良いです。
実行例
元ファイルが1595x2185
のサイズになっている画像でテストします。
$ file input.jpg
input.jpg: JPEG image data, ...density 300x300, 1595x2185
この画像に対して、deskewだけしたファイルをoutput_off.jpg
として出力します。
# deskewだけ実施
convert -deskew 40% input.jpg output_off.jpg
deskewに加えてgravity center
とcrop
したファイルをoutput_on.jpg
として出力します。
# auto-cropを有効にした上で、deskewして、元画像のサイズを指定して中央寄せで切り取り
convert -set option:deskew:auto-crop true \
-deskew 40% \
-gravity center -crop 1595x2185+0+0 \
input.jpg output_on.jpg
作成されたファイルのサイズを見るとoutput_on.jpg
の方は、元画像のサイズを維持していて、目視で見ても欠けがなく良好な結果でした。
output_off.jpg: JPEG image data, ...density 300x300, 1630x2211
output_on.jpg: JPEG image data, ...density 300x300, 1595x2185
こちらもおススメ