行列の乗算を使用して画像 (単純な正方形) を回転させるプログラムを作成する必要があります。正方形の中心に基づいて、必要に応じて一定の角度だけ回転させます。これに関するヘルプは大歓迎です。私は Calculus をちらりと見たことがないので、自分が何をしているのかほとんどわかりません。
3 に答える
http://www.aforgenet.com/framework/をご覧ください。これは、プロジェクトで使用しているC#の完全な画像処理フレームワークです。私はちょうど彼らの助けをチェックしました、そして彼らはあなたが望むことをする機能を持っています-
// create filter - rotate for 30 degrees keeping original image size
RotateBicubic filter = new RotateBicubic( 30, true );
// apply the filter
Bitmap newImage = filter.Apply( image );
これはLGPLライブラリであるため、ライセンスが問題になる場合は、それらのバイナリに対してリンクすれば問題はありません。それらは他のライブラリでもあります。
自分で作成する場合は、速度に注意してください。C#で数値を処理するのは得意ではありません。しかし、それを回避する方法があります。
これは、あなたが何を望んでいるのかを説明している優れたコード プロジェクトの記事です。
http://www.codeproject.com/KB/GDI-plus/matrix_transformation.aspx
平面内でデジタル画像を回転させると、多くの 2X2 行列乗算になります。ここには微積分は含まれていません。正方形の画像を回転させるために画像処理フレームワーク全体を必要とするわけではありません。ただし、画像の品質と速度の点でパフォーマンスが非常に重要な場合を除きます。
回転行列に関するウィキペディアの記事の前半を読んでください。これで良いスタートが切れるはずです。
簡単に言えば、原点 (回転させたい場所であれば画像の中心) を確立し、回転させたいピクセルの座標をピクセル空間で計算し、回転行列を掛けます (記事を参照)。 .)。乗算が完了すると、ピクセル空間でのピクセルの新しい座標が得られます。そのピクセルを別の画像バッファに書き出すと、オフになって回転します。繰り返す。回転角度がわかったら、回転行列を 1 回計算するだけでよいことに注意してください。
楽しむ、
ポール