크기 변환과 보간법

BERT·2023년 4월 24일
0

Computer Vision

목록 보기
25/56

영상의 크기 변환

크기 변환(scale transform)
영상의 크기를 원본 영상보다 크게 또는 작게 만드는 변환
x축과 y축 방향으로의 스케일 비율(scale factor)를 지정
{x=sxxy=syy\begin{cases} x'=s_xx \\ y'=s_yy \end{cases}

{sx=w/wsy=h/h\begin{cases} s_x=w'/w \\ s_y=h'/h \end{cases}

[xy]\begin{bmatrix} x' \\ y' \end{bmatrix}=[sx000sy0]\begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \end{bmatrix}[xy1]\begin{bmatrix} x \\ y \\ 1 \end{bmatrix}

가로, 세로 4배 확대

역방향 매핑(backward mapping)

보간법(interpolation)

실수 좌표 상에서의 픽셀 값을 결정하기 위해 주변 픽셀 값을 이용하여 값을 추정하는 방법

주요 보간법

  • 최근방 이웃 보간법(nearest neighbor interpolation)
    가장 가까운 위치에 있는 픽셀의 값을 참조하는 방법
    빠르고 구현하기 쉬움
    계단 현상 발생
  • 양선형 보간법(bilinear interpolation)
    실수 좌표를 둘러싸고 있는 네 개의 픽셀 값에 가중치를 곱한 값들의 선형 합으로 결과 영상의 픽셀 값을 구하는 방법
    x=(1p)a+pbx=(1-p)a+pb
    y=(1p)c+pdy=(1-p)c+pd
    z=(1q)x+qy=(1p)(1q)a+p(1q)b+(1p)qc+pqdz=(1-q)x+qy =(1-p)(1-q)a+p(1-q)b+(1-p)qc+pqd
    최근방 이웃 보간법에 대해서는 느린 편이지만 비교적 빠르며 계단 현상이 크게 감소
  • 3차 보간법(cubic interpolation)
    실수 좌표를 둘러싸고 있는 16개의 픽셀 값에 3차 함수를 이용한 가중치를 부여하여 결과 영상 픽셀의 값을 계산
  • 스플라인 보간법(spline interpolation)
  • 란쵸스 보간법(lanczos interpolation)

양선형 보간법

resize() 함수 사용

src : 입력 영상
dst : 출력 영상
dsize : 결과 영상 크기 (Size()로 지정 시 fx, fy 사용)
fx, fy : x와 y방향 scale factor (dsize 값이 0일 때 유효)
interpolation : 보간법 지정 상수

영상 축소 시 고려사항

  • 한 픽셀로 구성된 선분들은 영상을 축소할 때 사라지는 경우 발생
  • 입력 영상을 부드럽게 필터링한 후 축소하거나 다단계 축소 권장
  • OpenCV의 resize() 함수에서는 INTER_AREA 플래그를 사용
INTER_NEAREST최근방 이웃 보간법
INTER_LINEAR양선형 보간법(2x2 이웃 픽셀 참조)
INTER_CUBIC3차회선 보간법(4x4 이웃 픽셀 참조)
INTER_LANCZOS4Lanczos 보간법(8x8 이웃 픽셀 참조)
INTER_AREA영상 축소 시 효과적
void resize(InputArray src,
			OutputArray dst, 
			Size dsize,
			double fx = 0, double fy = 0,
            int interpolation = INTER_LINEAR);

0개의 댓글