レンズや望遠鏡の性能を評価するときに、写野の中心部と4隅を切り取って並べたうえで、さらにピクセル等倍で点光源の形を見るなんてことをよくします。そんなことをするのは、星屋くらいであって、カメラを製作しているエンジニアの方からしたら、
「ヤメてくれよ、そんなん・・」
なんて思っているかもしれません。
それはともかく、「写真の中心と4隅を切り出して並べてくれるフリーソフト」ってないかな?と軽く探して見ると、まあなかなか見つからないのです。普通のひとはそんなことしないからでしょう?
しかし、さらに慎重に探してみた結果「ほしぞloveログ」のSamさんが製作して、公開してくれていました:
PythonとOpenCVをつかったプログラムです。そこで、それぞれインストールしてやってみたました。しかしながら顧問の環境(Mac Book Pro + MacOS Sierra)ではうまく動かすことができませんでした。なにか私が間違っているのでしょうけど、そこは深追いせず自分で別のプログラムを作ってみました。
ベースはImagemagickです。もし「自分も使ってみたい」と思われた方は、以下のテキストをコピーして "crop_corners.sh" みたいなファイル名で保存してください。
#! /bin/bash
if [ "$1" = "" ]
then
echo "error:引数にファイル名を指定してくだされ"
exit
fi
width=`identify -format %w $1`
height=`identify -format %h $1`
if [ "$2" = "" ]
then
size=100
echo "- 100x100 pixels cropped"
elif [ $2 -ge `expr $width \/ 3` ] || [ $2 -ge `expr $height \/ 3` ]
then
echo "error:切り抜きサイズがでかすぎ"
exit
else
size=$2
fi
echo "picture size: $width x $height"
convert $1 -crop "$size"x"$size"+0+0 "$1_lt.jpg"
convert $1 -crop "$size"x"$size"+0+`expr $height - $size` "$1_lb.jpg"
convert $1 -crop "$size"x"$size"+`expr $width - $size`+0 "$1_rt.jpg"
convert $1 -crop "$size"x"$size"+`expr $width - $size`+`expr $height - $size` "$1_rb.jpg"
convert "$1_lt.jpg" -bordercolor white -border 3x3 "$1_lt.jpg"
convert "$1_lb.jpg" -bordercolor white -border 3x3 "$1_lb.jpg"
convert "$1_rt.jpg" -bordercolor white -border 3x3 "$1_rt.jpg"
convert "$1_rb.jpg" -bordercolor white -border 3x3 "$1_rb.jpg"
x=`echo "scale=2; $width / 2 - 1.5 * $size" | bc`
y=`echo "scale=2; $height / 2 - 1.5 * $size" | bc`
convert $1 -crop `expr 3 \* $size`x`expr 3 \* $size`+"$x"+"$y" "$1_cen.jpg"
composite -gravity northwest -compose over "$1_lt.jpg" "$1_cen.jpg" "st1.jpg"
composite -gravity northeast -compose over "$1_rt.jpg" "st1.jpg" "st2.jpg"
composite -gravity southwest -compose over "$1_lb.jpg" "st2.jpg" "st3.jpg"
composite -gravity southeast -compose over "$1_rb.jpg" "st3.jpg" "crop_$1"
rm "$1_lt.jpg"
rm "$1_lb.jpg"
rm "$1_rt.jpg"
rm "$1_rb.jpg"
rm "$1_cen.jpg"
rm "st1.jpg"
rm "st2.jpg"
rm "st3.jpg"
jpgやtif、pngでは動作を確認しています。ふだんimagemagickを使っていない方は、以下の手順であらかじめにインストールする必要があります
Macの方は
Winの方は(わたくし詳しく無いのですけど)Cygwinをインストールして、インストール時に選ぶオプションでImagemagickを一緒に入れてください:
そうしましたら、先ほどの"crop_corners.sh"を保存したディレクトリに移動して
chmod +x crop_corners.sh
と入力して、ファイルを実行権限を付与します。
これで準備完了です。同じディレクトリに四隅を切り出したい画像ファイル(ここではtest.jpgとします)を置いておいて
./crop_corners.sh test.jpg 200
とすれば、四隅の200pxを切り出して"crop_test.jpg"というファイルを出力します。例えば入力画像が
であれば、
のようなファイルが出力されます。処理途中で8つほど中間ファイルを吐き出すので、ディレクトリをつくって作業されると良いと思います。
最後にお約束ですが、このスクリプトを使用して、大事な卒業論文のデータが消失したり、取引先に報告する文書が上書きされたり、これまで撮りためていた家族写真が蒸発したりしたとしても、私としては、ニタニタ笑う以外にはどうしようもありませんので、あしからずお願いいたします・・。