이미지의 픽셀 데이터 배열이 있습니다. 이미지는 이미 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. 2 차원 배열을 90도 회전
- 2. 2D 변환 1D 배열을 시계 방향으로 90도 회전
- 3. 지도가 90도 회전 했습니까?
- 4. OpenCV에서 이미지 회전 (90도)
- 5. 회전 JLabel 90도 Java
- 6. CGAffineTransform 90도 회전
- 7. 자바 시계 반대 방향으로 90도 회전
- 8. 라벨 텍스트와 버튼을 90도 회전
- 9. 2d 회전 opengl
- 10. C#, 2D 배열 회전
- 11. 픽셀 배열을 파일에 저장
- 12. TextBlock 90도 회전 후 텍스트 잘림
- 13. 레이블이 90도 회전 된 바람직하지 않은 자르기
- 14. 오른쪽으로 회전 된 안드로이드 버튼 -90도
- 15. 캔버스 버그 - Chrome에서 90도 회전 안 함
- 16. 이미지가 html로 왼쪽으로 회전 90도 자동으로 발행
- 17. html 테이블을 반 시계 방향으로 90도 회전
- 18. 사용자 정의보기는 항상 회전 자체 NIB 90도
- 19. CSS를 사용하여 페이지 제목 텍스트를 90도 회전
- 20. java (netbeans)를 사용하여 90도 회전 그림
- 21. 버튼을 클릭 할 때마다 UIButton을 90도 회전
- 22. 사진이 일부 전화기에서 캡처하는 동안 90도 회전
- 23. Kineticjs - 이미지를 시계 방향으로 90도 회전
- 24. C에서 iTextSharp를 사용하여 PDF를 90도 회전
- 25. 이미지를 앵커 포인트 주위로 90도 회전
- 26. iPhone - 애니메이션 회전> 90도 회전 할 때 UIImageView가 이동합니다.
- 27. 비트 맵 픽셀 회전
- 28. 2D 좌표 회전 - 이미지 왜곡
- 29. 2D 픽셀 배열을 BitmapSource.Create()에 전달하는 방법은 무엇입니까?
- 30. swaping 및 회전 2D 배열은
: 회전 +90도에 대한 예를 들어. 프로세스를 병렬화하여보다 신속하게 처리 할 수 있습니다. –