- 회전변환 ( rotation transformation ) 이란?
영상을 특정 각도만큼 회전시키는 변환 ( 반시계 방향 )
영상을 회전해야할 경우는 자주 발생하는데
어떤 문서 이미지를 OCR 인식할 경우 문서들이 똑바로 스캔이 되어있어야지만 OCR 성능이 좋아지기때문에
영상이 회전되어있을 경우 바른 각도로 기울일때 자주 필요하다.
영상을 회전하기 위한 수식으로는 위 처럼 cos 함수와 sin 함수로 이루어져 있는데
x,y 좌표를 반시계 방향으로 세타만큼 회전시킬때 위 수식을 대입시키면 x ' , y ' 의 결과값을 만들 수 있다.
위 함수를 보게되면 rad은 20도에 해당하는 값을 radian 으로 변환한 변수이고아까 공식에서 나온대로 cos 과 sin 함수를 행렬로 만들어준다. ( aff )그리고 warpAffine 함수에 대입해주면 반시계방향으로 20도 돌아간 이미지가 출력되게 된다. ( * 반대는 음수값을 넣어주면 된다 )
위처럼 반시계 방향으로 돌아가긴 하지만 영상의 중심좌표가 아닌 ( 0 , 0 )을 기준으로 돌아간것을 볼 수 있다.따라서 입력영상의 중심점 좌표를 기준으로 잡는 cv2.getRotationMatrix2D의 함수를 사용하면 쉽게 중심좌표를 기준으로 회전시킬 수 있다.
- cv2.getRotationMatrix2D ( center, angle, scale ) -> retval
center : 회전 중심 좌표 ( x, y ) 튜플 angle : ( 반시계 방향 ) 회전각도 ( degree ) *음수는 시계방향 scale : 추가적인 확대비율 ( 회전과 동시에 영상을 키우거나 줄이는 변환 ) retval : 2x3 어파인 변환 행렬 ( 실수형 )
위 함수를 사용한 예제를 보게되면
위 예제코드의 결과영상을 보게되면
위 영상처럼 입력영상의 중심점을 기준으로 출력영상이 회전되는 것을 볼 수 있다.
회전의 내부 알고리즘을 살펴보자.일단 입력영상의 Center Point 를 계산하여 불러온 뒤 원점 ( 0, 0 )으로 이동변환 시킨다.이후 원점을 중심으로하여 회전 변환한 뒤 다시 Center Point 만큼을 이동변환시켜 영상을 출력시킨다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'Program > OPEN_CV' 카테고리의 다른 글
[Open CV] 기하학적 변환 _ 리매핑 (0) | 2022.05.27 |
---|---|
[Open CV] 기하학적 변환 _ 어파인 변환과 투시변환 (0) | 2022.05.26 |
[Open CV] 기하학적 변환 _ 이미지 피라미드 (0) | 2022.05.24 |
[Open CV] 기하학적 변환 _ 영상의 확대와 축소 (0) | 2022.05.23 |
[Open CV] 기하학적 변환 _ 영상의 이동 변환과 전단 변환 (0) | 2022.05.22 |