위와 같이 2x2 픽셀 영상의 크기를 3x3 으로 증가시켰을 경우를 생각해보자.
(0, 0) 픽셀은 그대로 (0, 0) 에, (0, 1) 픽셀은 (0, 2) 픽셀에 대응되는 것을 확인할 수 있다.
하지만 확대영상의 (0, 1) 픽셀과 (1, 0) 픽셀, (1, 1) 픽셀 등에는 대응되는 원 영상의 픽셀값이
존재하지 않는다는 것을 볼 수 있는데 이렇게 영상을 확대하는 경우 홀이 발생하여 영상의
품질은 나빠지게 된다. 따라서 보간법을 이용하여 적절한 데이터값을 할당하여 주어야 한다.
1. 최근접 이웃 보간법 (CV_INTER_NN)
최근접 이웃 보간법은 가장 간단한 보간법으로 목적 영상에서 픽셀값은 원 영상의 가장 가까운 픽셀의
픽셀값으로 할당하는 방법이다. 즉 확대영상의 홀 부분에 근처 할당된 픽셀값을 넣어주는 것이다.
역방향 사상에 의해 원 영상을 확대하여 영상을 얻는 경우 목적 영상의 픽셀에 해당되는 원 영상의
픽셀좌표는 다음의 식을 통해 얻어진다.
여기서 Xsrc 와 Ysrc 는 원 영상의 x와 y 좌표이고 Xdst 와 Ydst 는 목적 영상의 x와 y좌표이다.
최근접 이웃 보간법을 이용하여 영상을 확대하는 경우 우둘투둘한 계단 모양이 생기게 되는데
이런 현상을 에일리어싱(aliasing) 이라 한다.
2. 양선형 보간법 (CV_INTER_LINEAR)
가장 보편적으로 사용되는 보간법으로 원 영상을 확대하는 경우 목적 영상의 각 픽셀에 대해
원 영상의 좌표가 실수값을 갖는 경우 주위에 있는 4개의 픽셀값을 가지고 보간한다.
즉 주위의 4 지점에 대하여 떨어진 거리를 고려하여 x축으로 보간하고 y축으로 다시한번 보간하는
방식이다.
위의 그림과 같이 A, B, C, D 점의 픽셀값으로 고려하여 G위치의 픽셀값을 양선형 보간법을 사용하여 구해보자.
우선 x축 방향으로 동일 선상에 위치하는 E점과 F점을 만들어준다.
그럼
E = (1-α)A + αB
F = (1-α)C + αD
가 된다.
이번에는 y축 방향으로 E점와 F점의 위치를 고려하여
이렇게 나타내어 줄 수 있고
G = (1- β)E + βF 로 표시할 수 있다.
3. 큐빅 보간법 (CV_INTER_CUBIC)
원 영상을 확대하는 경우 목적 영상의 각 픽셀에 대해 원 영상의 좌표가 실수 값을 갖는 경우
주위에 있는 16개의 픽셀값을 가지고 보간한다.
즉 위의 양선형 보간법의 경우 4개의 픽셀값을 고려하여 보간하였다면 큐빅 보간법은 16개의 픽셀값을
고려하여 보간하는 방식이다.
주황색 지점의 픽셀을 구하기 위해 근처 검은색 사각형의 픽셀값들을 고려하는 방식이다.
우선 검은색 픽셀값들을 고려하여 행 방향에 따라 보간을 하여 아래와 같은 붉은 사각형의 값을 구한다.
그리고 붉은 구해진 붉은 사각형들을 이용하여 중앙에 위치한 주황색 원의 픽셀값을 구할 수 있다.
4. 재표본 추출법 (CV_INTER_AREA)
원 영상을 축소하게 될 때 픽셀의 갯수는 감소하게 되어 어느 부분의 픽셀을 가져올 것인지
선택해 주어야 하는데 예를들어 크기를 1/2 배 축소하는 경우 원 영상에서 홀수인 픽셀들을
사용하여 목적영상을 만드는 방식이다.
영상을 확대하는 경우는 최근접 이웃 보간법과 비슷하다.
'OpenCV > 기하학적 변환을 통한 영상처리' 카테고리의 다른 글
회전영상 (0) | 2019.08.13 |
---|---|
사상(Mapping) (0) | 2019.08.12 |