プログラムの使い方
アプレットを実行すると、上部の左にスクロールバーが、右に[元に戻す]ボタンが現れ、その下に、水平が傾いた原画像が表示されます。スライダを右に移動させると、画像が右下がり(時計方向)に回転し、その時の回転角が下方に表示されます。スライダを左に移動させると、画像が左下がりに回転します。スクロールバーの端部の方向ボタンを1回クリックすると、回転角は0.5度変わります。画像を最初の状態に戻すには、[元に戻す]ボタンをクリックします。
プログラムの実行結果
図4は、補正をした後の画面を示しています。スライダを左に動かして、原画像を左下がりに2.0度傾けた結果です。
まとめ
画像の回転や拡大はアフィン変換と呼ばれ、画像処理の重要な変換の一つで、カメラで撮影した写真の水平補正に適しています。Java APIには、アフィン変換用のAffineTransform
クラスが用意されていますが、実際に試してみたところ、ジャギーが発生する欠点があり、写真画像の補正には不十分であることが分かりましたので、この使用は避けました。
従来の既存画像ソフトでは回転機能が単独なのに対して、本稿では回転と同時に自動的に拡大する機能を持たせ、良好な結果を得ました。
参考資料
この記事は、筆者のウエブサイト『Visual C++ 6.0 を用いた易しい画像処理(17)-画像を回転し、拡大する-(ただし、現在はVisual C++ 2005 Express Edition版に改定)(』を改良し、Java言語に書き直して、分かりやすく加筆したものです。
アフィン変換の一般的な解説の図書としては、下記があります。
- 『ビギナーズブック15-はじめての画像処理技術』 岡本彰夫 著、工業調査会、2000
- 『メカトロニクス教科書シリーズ9-画像処理工学』 末松良一・山田宏尚 共著、コロ