이미지 회전도 일련의 좌표변환을 통해 이루어진다. 다만 좌표변환에 삼각함수가 이용되므로 이에 관련한 기본적인 내용을 알고 있어야 한다. 좌표평면에서 점 를 반시계방향으로 각도 θ만큼 회전한 좌표는 이다. 알기 쉽게 그림으로 그려 보았다. 가장 오른쪽의 점 를 반시계방향으로 θ만큼 회전하면 위쪽의 점이 된다. 이때 만들어지는 각 선분들의 길이를 색깔별로 정리했다.
(그림 34) 회전 좌표변환
이 식을 적용하여 이미지를 처리하면 역방향 사상에 의해 원래 그림이 시계방향으로 회전된 결과를 얻게 된다. 이미지 확대에서와 똑 같은 방법을 사용하되 원래 이미지에서의 좌표를 정하는 방법만 위에서처럼 하면 된다. 다만 삼각함수의 계산까지 해야 한다니 그러지 않아도 느렸던 게 더 느려질 것 같다. 시간이 남으면 각자 구현해 보도록 하고, 여기서는 PIL을 이용하여 이미지를 회전하는 법을 알아보자.
import Image |
사실 이것은 PIL 도큐먼테이션의 첫 예제로 나와 있는 것이다. 지금까지 bilinear interpolation이 뭐니 코사인이 어쩌구 하던게 무안해질 정도로 간단하게 이미지 회전을 완료했다. rotatecat.bmp를 열어 보면 아래와 같이 되어 있다.