私は画像のピクセルデータの配列を持っています。取得している画像はすでに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. 2dベクトルを時計回りに90度回転する
- 3. バイト配列、それを90度回転させる必要があります。
- 4. 多次元NumPy配列の画像を90度回転する
- 5. java.lang.ArrayIndexOutOfBoundsException:90 - 回転するn * m配列
- 6. Three.js 90度ベクトルの回転
- 7. 回転numpy 2D配列
- 8. なぜnumpy配列を転置すると90度回転しますか?
- 9. CSSを使用してページタイトルテキストを90度回転させる
- 10. リンクイメージをCSSを使って90度回転させる
- 11. ビットマップを90度回転させる方法の説明
- 12. レベルプロットでX軸ラベルを90度回転させる方法
- 13. text/divを90度回転させる(静的)
- 14. 任意のグラデーションを90度回転させるアルゴリズム
- 15. Linuxミントのffmpegは、ビデオを180度回転させ、90度回転させません。
- 16. Androidを90度回転する
- 17. GoJs図形を90度回転する
- 18. リストアイテムを90度回転する
- 19. ビューを90度回転するiOS
- 20. イメージを90度回転する
- 21. Rails | Carrierwaveは画像を90度回転させます
- 22. スウィフト - ジェスチャーと回転の増分を90度回転します
- 23. テーブルを時計回りに90度回転(転置しない)
- 24. ロスレスJPEG回転(90/180/270度)のJava?
- 25. アンドロイドボタンを右に回転して-90度に合わせる
- 26. 画像を90度、180度または270度回転する
- 27. Odoo 10のテキスト回転(90度 - 垂直回転)QWeb PDFレポート
- 28. 行列をN度回転させる
- 29. htmlテーブルを反時計回りに90度回転させます。
- 30. 2D配列の回転とvb.net内のポイントの回転
:回転の90度のために例えば。プロセスを並列化して、より迅速に処理することができます。 –