画像を処理する C# プログラムに取り組んでいます ( int[,] として指定)。
ピクセルの 2D 配列があり、ポイントを中心に回転させてから、元の配列に合わせて縮小する必要があります。マトリックスを使用してポイントに変換し、回転してから元に戻す方法に関する記事を既に見つけました。残っているのは、結果の画像を元のサイズの配列に合わせてスケーリングすることです。
それはどのように行うことができますか?(できれば x 用と y 用の 2 つの方程式を使用)
画像を処理する C# プログラムに取り組んでいます ( int[,] として指定)。
ピクセルの 2D 配列があり、ポイントを中心に回転させてから、元の配列に合わせて縮小する必要があります。マトリックスを使用してポイントに変換し、回転してから元に戻す方法に関する記事を既に見つけました。残っているのは、結果の画像を元のサイズの配列に合わせてスケーリングすることです。
それはどのように行うことができますか?(できれば x 用と y 用の 2 つの方程式を使用)
こちらをご覧ください。これにより、座標回転の背後にあるすべての計算が得られるはずです。
結果の配列から元の画像への変換を見つける必要があります。次に、宛先のポイントをソース イメージのポイントに変換してコピーします。オーバーサンプリングによるアンチエイリアシングもオプションです。回転行列は、スケーリングを適用することもできます。行列に倍率を掛けるだけです (これは 2x2 を想定しています)。回転、スケーリング、および移動のために 3x3 行列を実行している場合は、左上の 2x2 に倍率を掛けるだけです。
最後に、謙虚になるリスクを冒して、全画面回転ズームを行うために私が書いた古い TP6/asm DOS コードへのリンクをここに示します。ネットに出回っている奇妙なもの: http://www.hornet.org/cgi-bin/scene-search.cgi?search=Paul%20H.%20Kahler
Bitmap
必要なことはすべて、GDI+ のイメージで (System.Drawing...
名前空間を使用して)行うことができます。これらのクラスは、まさにこのようなこと (画像操作) を行うために設計され、最適化されています。Bitmap
の代わりに実際の値を使用できない特定の理由はありますint[,]
か? Bitmap
から を作成し、int[,]
で必要なことをすべて行い、最後Bitmap
に に戻す非常に単純なルーチンを作成することもできますint[,]
。