0

画像を処理する C# プログラムに取り組んでいます ( int[,] として指定)。

ピクセルの 2D 配列があり、ポイントを中心に回転させてから、元の配列に合わせて縮小する必要があります。マトリックスを使用してポイントに変換し、回転してから元に戻す方法に関する記事を既に見つけました。残っているのは、結果の画像を元のサイズの配列に合わせてスケーリングすることです。

それはどのように行うことができますか?(できれば x 用と y 用の 2 つの方程式を使用)

4

4 に答える 4

2

Matrixクラスには、Rotate (At) とScaleの両方の関数があります。他に何がわかりますか?

于 2009-12-24T13:49:29.140 に答える
1

こちらをご覧ください。これにより、座標回転の背後にあるすべての計算が得られるはずです。

于 2009-12-24T14:21:30.727 に答える
1

結果の配列から元の画像への変換を見つける必要があります。次に、宛先のポイントをソース イメージのポイントに変換してコピーします。オーバーサンプリングによるアンチエイリアシングもオプションです。回転行列は、スケーリングを適用することもできます。行列に倍率を掛けるだけです (これは 2x2 を想定しています)。回転、スケーリング、および移動のために 3x3 行列を実行している場合は、左上の 2x2 に倍率を掛けるだけです。

最後に、謙虚になるリスクを冒して、全画面回転ズームを行うために私が書いた古い TP6/asm DOS コードへのリンクをここに示します。ネットに出回っている奇妙なもの: http://www.hornet.org/cgi-bin/scene-search.cgi?search=Paul%20H.%20Kahler

于 2010-08-16T13:10:25.240 に答える
0

Bitmap必要なことはすべて、GDI+ のイメージで (System.Drawing...名前空間を使用して)行うことができます。これらのクラスは、まさにこのようなこと (画像操作) を行うために設計され、最適化されています。Bitmapの代わりに実際の値を使用できない特定の理由はありますint[,]か? Bitmapから を作成し、int[,]で必要なことをすべて行い、最後Bitmapに に戻す非常に単純なルーチンを作成することもできますint[,]

于 2009-12-24T14:45:05.813 に答える