관리 메뉴

ComputerVision Jack

[영상처리 - 기하학적 변환] 본문

Image Processing/C++ opencv Lib

[영상처리 - 기하학적 변환]

JackYoon 2020. 1. 21. 17:26
반응형

변환

강체 변환(Rigid transformation)

    형태와 크기가 변하지 안흔 변환

    이동 & 회전

어파인 변환(Affine transformation)

    평행성을 보존하는 변환

    이동 & 회전 & 스케일 & shearing & reflection

투영 변환(Projection transformation)

   원근법을 적용한 변환

   자유도가 강체, 어파인 변환에 비해 높음

 

이동 변환(Translation)

가로, 세로 방향으로 이동시키는 변환

이동

크기 변환(Scaling)

영상의 크기를 변경하는 변환

크기 변환

크기 변환은 영상의 크기를 변환하고, 변환 시켯을 때, 빈 픽셀을 채워 넣는데 어떤 방법을 사용할지 문제가 발생한다.

순방향 맵핑(forward mapping)을 사용할 경우 영상이 전체적으로 블록지게 된다.

따라서 역방향 매핑(backward mapping)을 사용한다.

 

보간법(Interpolation)

실수 좌표 상에서의 픽셀 값을 결정하기 위한 방법

영상을 크기 변환 시킨 상태에서 픽셀을 채우기 위해 고안된 방법

 

최근방 이웃 보간법

가장 가까운 위치에 있는 픽셀 값을 참조하여 영상의 빈곳을 채운다.

(50.2, 32.8)인 경우 (50, 33)값으로 채운다.

빠르고 구현하기 쉽지만, 계딴현상이 발생한다.

최근방 이웃 보간법

양선형 보간법

실수 좌표를 둘러싸고 있는 네 개의 픽셀 값 이용

각 픽셀 값과의 거리의 반 비례값을 가중치로 계산

최근방 이웃 보간법에 비해 느리지만 상대적으로 빠르며 계단 현상이 감소된다.

양선형 보간법
양선형 보간법의 원리
양선형 보간법의 수식

3차 회선 보간법

실수 좌표를 둘러싸고 있는 16개의 픽셀 값에 3차 함수를 이용한 가중치로 픽셀 값 계산

가로방향으로 4번, 세로 방향으로 1번의 3차 회선 보간법을 수행하여 픽셀 값 계산.

3차 회선 보간법 도식화
3차 회선 보간법 수식
value구하는 수식

[코드적 접근]

double v, p1, p2, p3, p4;

p1 = 2 * v2;

p2 = -v1 + v3;

p3 = 2 * v1 - 5 * v2, 4 * v3 - v4;

p4 = -v1 + 3 * v2 -3 * v3 + v4;

 

return ((p1 + d*(p2 + d * (p3 + d * p4))) / 2.0);

#수식을 그래도 풀어서 코드에 적용하면 된다. 16개의 방향을 참조한다는 것에 중점을 둔다.

3차 회선 보간법

회전(Rotation)

영상을 특정 각도 만큼 회전 시키는 변환

영상을 원점을 기준으로 theta만큼 회전

영상의 회전

회전도 마찬가지로 회전 과정에서 빈 픽셀이 발생한다. 따라서 보간법을 적용하여 빈 픽셀을 채워야한다.

영상의 회전

영상의 대칭 변환

x' = w - 1 - x

y' = y

# 좌우 대칭

 

x' = x

y' = h -1 - y

# 상하 대칭

영상의 대칭 변환
ex_3차회선 보간법.cpp
0.00MB
ex_양선형 보간법.cpp
0.00MB
ex_최근방 이웃 보간법.cpp
0.00MB

반응형
Comments