더북(TheBook)

9.3.3 특수 각도에 대한 회전 구현

90°, 180°, 그리고 270° 회전하는 변환의 경우, sin 또는 cos 함수의 값이 정수로 결정된다. 그러므로 굳이 삼각 함수를 호출하지 않는 별도의 변환 함수를 구현하여 사용하는 것이 바람직하다. 삼각 함수를 통한 실수 연산이 사라짐으로써 상당한 속도 향상과 정확한 연산 결과를 얻을 수 있기 때문이다. 이들 특수 각도에 대한 회전 변환 시 결과 영상의 각 픽셀은 입력 영상의 픽셀에 정확하게 일대일로 매핑된다. 그러므로 복잡한 보간법을 사용할 필요가 없으며, 덧셈과 뺄셈 연산으로만 구현이 가능하다.

먼저 90° 회전하는 경우에 대하여 생각해보자. 그림 9-23은 영상을 90° 회전할 때 일어나는 변화를 보여주고 있다. 원본 영상의 가로와 세로 방향의 크기가 각각 w와 h라면, 90° 회전한 결과 영상의 크기는 가로가 h, 세로가 w로 결정된다. 그리고 결과 영상에서의 좌표 (i, j)는 다음과 같은 수식의 형태로 입력 영상의 좌표 (x, y)에 매핑된다.

그림 9-23 영상의 90° 회전 시 좌표의 변화

다음으로는 180° 회전에 대하여 생각해보자. 180° 회전의 경우, 결과 영상의 크기는 입력 영상의 크기와 동일하다. 그리고 각 좌표는 다음과 같은 형태로 변환된다.

마지막으로 270° 회전에 대하여 생각해보자. 270° 회전의 경우, 결과 영상의 크기는 90° 회전할 때와 마찬가지로 가로, 세로 픽셀의 크기가 서로 뒤바뀌게 된다. 그리고 결과 영상에서의 좌표 (i, j)는 다음과 같은 수식의 형태로 입력 영상의 좌표 (x, y)에 매핑된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.