SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで学ぶグラフィックス処理

画像を小刻みに回転して写真の傾きを補正する

アフィン変換の回転と拡大を同時に行う


  • X ポスト
  • このエントリーをはてなブックマークに追加

プログラムの使い方

 アプレットを実行すると、上部の左にスクロールバーが、右に[元に戻す]ボタンが現れ、その下に、水平が傾いた原画像が表示されます。スライダを右に移動させると、画像が右下がり(時計方向)に回転し、その時の回転角が下方に表示されます。スライダを左に移動させると、画像が左下がりに回転します。スクロールバーの端部の方向ボタンを1回クリックすると、回転角は0.5度変わります。画像を最初の状態に戻すには、[元に戻す]ボタンをクリックします。

プログラムの実行結果

 図4は、補正をした後の画面を示しています。スライダを左に動かして、原画像を左下がりに2.0度傾けた結果です。

図4 補正後の実行画面
図4 補正後の実行画面

まとめ

 画像の回転や拡大はアフィン変換と呼ばれ、画像処理の重要な変換の一つで、カメラで撮影した写真の水平補正に適しています。Java APIには、アフィン変換用のAffineTransformクラスが用意されていますが、実際に試してみたところ、ジャギーが発生する欠点があり、写真画像の補正には不十分であることが分かりましたので、この使用は避けました。

 従来の既存画像ソフトでは回転機能が単独なのに対して、本稿では回転と同時に自動的に拡大する機能を持たせ、良好な結果を得ました。

参考資料

 この記事は、筆者のウエブサイト『Visual C++ 6.0 を用いた易しい画像処理(17)-画像を回転し、拡大する-(ただし、現在はVisual C++ 2005 Express Edition版に改定)(』を改良し、Java言語に書き直して、分かりやすく加筆したものです。

 アフィン変換の一般的な解説の図書としては、下記があります。

  1. ビギナーズブック15-はじめての画像処理技術』 岡本彰夫 著、工業調査会、2000
  2. 年10月
  3. メカトロニクス教科書シリーズ9-画像処理工学』 末松良一・山田宏尚 共著、コロ
  4. ナ社、2000年10月
修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Javaで学ぶグラフィックス処理連載記事一覧

もっと読む

この記事の著者

石立 喬(イシダテ タカシ)

1955年東京工大卒。同年、NECへ入社し、NEC初のコンピュータの開発に参画。磁気メモリ、半導体メモリの開発、LSI設計などを経て、1989年帝京大学理工学部教授。情報、通信、電子関係の教育を担当。2002年定年により退職し現在に至る。2000年より、Webサイト「Visual C++の勉強部屋」を公開。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/398 2008/03/16 10:30

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング