小数点の精度での画像回転するソフトがほしかったため、自分で実装することにしました。

参考にしたのは、以下のサイトです。高速化などについてソース付きで説明されているので非常に参考になりました。
C言語による画像回転処理について


今回、画像において回転前後の座標を以下としています。
  • 回転前:(x,y)
  • 回転後:(X,Y)


そこで、角度θ分回転を行う座標変換は以下のように行います。(時計回りを正とした場合)

eqn1.png



結果は以下のようになります。

pat1.png



虫食い状態になります。
これは、画像が整数の座標しかとらないため、回転前の座標がすべて回転後の座標に対応しているわけではないためです。

これを回避するため、回転後の座標を基準にして考えます。
すなわち、回転後の座標に対応する座標は回転前ではどの座標に対応するか以下の数式のように逆算して行います。


eqn2.png



そして、実装を行った結果が以下のようになります。


pat2.png



これでもまだ回転後の画像がギザギザになっています、
バイリニア、ニアレストネイバーなどを用いれば、より自然な画像になると思います。

近いうちにまた実装してみようと思います。。。

Related Entries
Comments
Post a comment
Contributor
Comment
Trackbacks URL
URL
Permalink
Trackbacks
FC2カウンター
プロフィール

詠み人知らず

Author:詠み人知らず
プログラム好きな名もなき凡人がお送りしています。(得意とは言っていない
最近の興味はPython、C#、Matlab(Octave)、画像処理、AR(拡張現実)、統計などなど・・・

気分で思いついたことを書くため話題に一貫性がないかもしれません。

カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
最新記事
タグクラウドとサーチ

カテゴリ
最新コメント
最新トラックバック
月別アーカイブ