본문 바로가기

프로그래밍/c++ /영상처리

영상의 회전 변환

반응형

int x, y, x1, y1, x2, y2;
 double rx, ry;
 
 double angle = 45;
 double rad = (angle*PI) / 180. ;
 double cos_value = cos(rad);
 double sin_value = sin(rad);


 int Yhalf = h / 2 ;
 int Xhalf = w / 2;
 for (y = 0; y < h; y++)
 for (x = 0; x < w; x++)
 {
  rx = ((x - Xhalf)*cos_value - (y - Yhalf) * sin_value) + Xhalf;
  ry = ((y - Yhalf)*cos_value + (x - Xhalf) * sin_value) + Yhalf;

  if (rx < 0 || rx > w - 1 || ry <0 || ry >h - 1)
   continue;

  ptr2[y][x].r = (BYTE)limit(ptr1[(int)ry][(int)rx].r);
  ptr2[y][x].g = (BYTE)limit(ptr1[(int)ry][(int)rx].g);
  ptr2[y][x].b = (BYTE)limit(ptr1[(int)ry][(int)rx].b);
 }
45도 각도로 회전 했을때의 경우이다.

현재 원본의 영상의 중심점을 구하여 기준점으로 하고 회전을 하였다.

x' = xcos - ysin

y' = xsin + ycos

위의 회전 변환 공식을 사용하였다.

반응형

'프로그래밍 > c++ /영상처리' 카테고리의 다른 글

STL- transform()  (0) 2016.05.11
연산자 오버로딩  (0) 2016.02.19
최근방 이웃 보간법  (0) 2015.10.03
영상이동  (0) 2015.10.02
Median Filter  (0) 2015.10.01