2

行列の乗算を使用して画像 (単純な正方形) を回転させるプログラムを作成する必要があります。正方形の中心に基づいて、必要に応じて一定の角度だけ回転させます。これに関するヘルプは大歓迎です。私は Calculus をちらりと見たことがないので、自分が何をしているのかほとんどわかりません。

4

3 に答える 3

4

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#で数値を処理するのは得意ではありません。しかし、それを回避する方法があります。

于 2009-10-28T03:27:35.943 に答える
2

これは、あなたが何を望んでいるのかを説明している優れたコード プロジェクトの記事です。

http://www.codeproject.com/KB/GDI-plus/matrix_transformation.aspx

于 2009-10-28T02:12:08.267 に答える
2

平面内でデジタル画像を回転させると、多くの 2X2 行列乗算になります。ここには微積分は含まれていません。正方形の画像を回転させるために画像処理フレームワーク全体を必要とするわけではありません。ただし、画像の品質と速度の点でパフォーマンスが非常に重要な場合を除きます。

回転行列に関するウィキペディアの記事の前半を読んでください。これで良いスタートが切れるはずです。

簡単に言えば、原点 (回転させたい場所であれば画像の中心) を確立し、回転させたいピクセルの座標をピクセル空間で計算し、回転行列を掛けます (記事を参照)。 .)。乗算が完了すると、ピクセル空間でのピクセルの新しい座標が得られます。そのピクセルを別の画像バッファに書き出すと、オフになって回転します。繰り返す。回転角度がわかったら、回転行列を 1 回計算するだけでよいことに注意してください。

楽しむ、

ポール

于 2009-10-28T05:02:03.853 に答える