私は画像のピクセルデータの配列を持っています。取得している画像はすでに270度に回転しています。だから正しい画像を得るために90度回転させようとしています。 data[x][y]
をdata[y][x]
に変更して転置アルゴリズムを試しましたが、正しい方法ではないと思います。私はそれを回転させるために何ができるのですか?2Dピクセル配列を90度回転させる
5
A
答えて
7
これは余分なスペースを使わずに行うことができ、In-place matrix transposition(まったく同じではありません)と呼ばれます。転置後にいくつかのミラーリングを行うことを忘れないでください。
画像が正方形
ある場合、画像は、非正方行列について正方形
- ない場合、アルゴリズムはより複雑です。 1980年以前のアルゴリズムの多くは、「follow-the-cycles」アルゴリズムと呼ばれることがあります。つまり、サイクルをループし、サイクル内のある場所から次の場所にデータを移動します。擬似コードの形式では:
14
あなたは、その後、old_data[rows][cols]
とnew_data[cols][rows]
を持っている:
for(int i=0; i<cols; i++) {
for(int j=0; j<rows; j++) {
new_data[i][j] = old_data[rows-1-j][i];
}
}
これは90度CWでOLD_DATA回転しなければなりません。
5
あなたはその場でO(1)スペースでそれをしたい場合は、あなたはこれに従うことができます。
は、行列を転置しますスワップすることによって
data[i][j]
とdata[j][i]
:for (int i = 0; i < n; i += 1){ for (int j = i+1; j < n; j += 1){ swap(data[i][j], data[j][i]); } }
それぞれの行または列を+90または-90度回転させる場合は、それぞれを逆にします。唯一の方法だ
for (int i = 0; i < n; i += 1){ for (int j = 0; j < n/2; j += 1){ swap(data[i][j], data[i][n-1-j]); } }
関連する問題
- 1. j2me - 2dポイントの配列を45度ずつ回転させる
- 2. 回転numpy 2D配列
- 3. CSSを使用してページタイトルテキストを90度回転させる
- 4. text/divを90度回転させる(静的)
- 5. レベルプロットでX軸ラベルを90度回転させる方法
- 6. 任意のグラデーションを90度回転させるアルゴリズム
- 7. Androidを90度回転する
- 8. ロスレスJPEG回転(90/180/270度)のJava?
- 9. 画像を90度、180度または270度回転する
- 10. アンドロイドボタンを右に回転して-90度に合わせる
- 11. htmlテーブルを反時計回りに90度回転させます。
- 12. なぜこのプログラムはビットマップを90度回転させませんか?
- 13. 回転行列/画像の公式90度C++
- 14. 既存のマルチページPDFでiTextSharp/VBで単一ページを90度回転させる
- 15. オブジェクトを中心の周りに90度回転させる方法は?
- 16. Windowsのビットマップを90度回転させる簡単で簡単な方法は?
- 17. 2Dテクスチャを回転させたOpenGL
- 18. インターネットにアップロードした後、録画したビデオを90度回転させた
- 19. イメージを90度回転させてdiv内に絶対配置してください
- 20. Android:回転を90°回転させず180°回転できるようにする
- 21. 3次元配列を24回回転させるには?
- 22. jQuery:画像を時計回り/反時計回りに90度ずつ回転させますか?
- 23. 2d回りの回転
- 24. Androidで90度回転させた後のビューの幅と高さを調整する
- 25. OpenGL ES、頂点配列内の矩形を回転させる
- 26. 2次元配列を回転させる方法
- 27. openGLnGLの2dオブジェクトを選択的に回転させる
- 28. 2dシーン全体を回転させてズームする
- 29. 各図を90度回転させるにはどうすればよいですか?
- 30. Phonegap/Cordovaは、iphoneにローディングするときにスプラッシュイメージを90度回転させます。
:回転の90度のために例えば。プロセスを並列化して、より迅速に処理することができます。 –