[CV] Digital Image Fundamentals : Image Zoom & Interpolation

Yeontachi·2025년 7월 30일

Computer Vision Note

목록 보기
3/47
post-thumbnail

우리가 사진을 확대할 때, 원본보다 더 큰 크기로 보이게 하려면 새로운 픽셀을 만들어야 한다. 예를 들어, 100x100 크기의 이미지를 400x400으로 키운다면, 원본 픽셀은 10,000개인데, 확대 후에는 160,000개의 픽셀이 필요하다.

여기서 문제는 원본 이미지에는 그만큼의 정보가 없다는 것이다. 원본 정보가 부족하면, 원본 영상의 아무런 정보를 받지 못하는 pixel(hole)이 생길 수 있다. 이 문제를 해결하기 위해 보간법(Interpolation)을 사용한다.

보간법(Interpolation)


보간법(Interpolation)이란, 중간 값을 추정하는 방법이다. 이미지 확대시, 기존 픽셀 사이에 생기는 빈칸을 어떤 값으로 채울지 결정하는 것이다. 즉, hole 주변의 알고 있는 값들을 이용해 hole의 값을 유도하는 과정을 의미한다.

단순 반복(Replication) 방식

가장 단순한 보간법(Interpolation) 방법은 원본 픽셀 그대로 복사해서 큰 블록으로 만드는 것이다.
예를 들어, 1픽셀을 4픽셀로 복제하면 이미지가 커지긴 하지만, 계단 모양(블록 느낌)이 심하게 나타난다.

이 방식은 빠르지만 품질이 매우 낮다

보간법(Interpolation) 방식

1. 최근접 이웃(Nearest Neighbor)

최근접 이웃(Nearest Neighbor)는 새 픽셀 위치에서 가장 가까운 원본 픽셀 값을 그대로 사용하는 방식이다. 연산이 빠르고 간단하다는 장점이 있으나, 확대 시 블록 아티팩트(계단 현상)가 심해 확대된 사진이 뭉툭하고 거칠어 보인다.

2 선형 보간(Linear Interpolation)

선형 보간법(Linear Interpolation)은 두 점 사이의 값을 직선 비율로 계산하는 방법이다.
즉, 두 값 p1,p2p_1, p_2가 있을 때, 그 사이에 있는 임의의 점의 값을 직선 상에서 비례 계산하는 방식이다.

이미지 처리에서 1차원 보간(수평 방향)이나, Bilinear 보간법의 기초 개념으로 많이 사용된다.

두 점 p1p_1p2p_2가 있고, 두 점 사이의 거리를 1로 가정한다. 새로운 점 qqp1p_1에서 a만큼 떨어진 위치에 존재한다. 이때 a의 값은 0과 1 사이의 실수이다.(0 → p₁, 1 → p₂)

q=(1a)p1+ap2q = (1-a)p_1 + ap_2

3. 쌍선형 보간(Bilinear Interpolation)

쌍선형 보간법(Bilinear Interpolation)은 새 픽셀 주변의 4개의 픽셀 값의 가중 평균으로 계산하는 방식이다.

기본 아이디어는 간단하다.
(1) x축 방향으로 먼저 보간

  • 왼쪽 두 점으로 하나의 값
  • 오른쪽 두 점으로 하나의 값

(2) y축 방향으로 보간

  • 위에서 얻은 두 값으로 최종 보간 값

즉, 2단계로 연속적인 선형 보간을 수행하는 방식이다.

네 개의 기존 픽셀 p1,p2,p3,p4p_1, p_2, p_3, p_4과 보간하고자 하는 새로운 픽셀 qq가 존재한다고 생각하자.

  • a : 가로 방향 비율(0~1)
  • b : 세로 방향 비율(0~1)

계산 과정

  • 가로방향(수평) :

    • 위쪽 두 점 p1,p2p_1, p_2을 a에 따라 보간

      q1=(1a)p1+ap2q_1 = (1-a)p_1 + ap_2
    • 아래쪽 두 점 p3,p4p_3, p_4을 a에 따라 보간

      q2=(1a)p3+ap4q_2 = (1-a)p_3 + ap_4
  • 세로 방향(수직)

    • q1q_1q2q_2를 b에 따라 다시 보간
      q=(1b)q1+bq2q = (1-b)q_1 + bq_2

삼차 보간법(Bicubic Interpolation)

Bicubic Interpolation은 이미지 보간에서 가장 많이 사용되는 고품질 기법* 중 하나이다. Bilinear Interpolation은 주변 4픽셀을 이용하는 반면, Bicubic주변 16픽셀(4x4 영역)**을 고려하여 보간한다.

Bicubic Interpolation은 부드러운 결과를 제공하고, 경계가 자연스럽고 aliasing 현상이 감소한다. 연산량이 많다는 단점이 있지만 품질은 가장 우수하다.

원리
Bicubic은 Cubic Polynomial(3차 다항식)을 사용한다.
1. 먼저 가로 방향(x축)으로 1D Cubic 보간을 수행(4개의 픽셀을 이용해 중간값 계산)
2. 그 다음 세로 방향(y축)으로 다시 Cubic 보간 수행

즉, 두 번의 1D Cubic Interpolation -> 2D Bicubic Interpolation

수학적 표현
픽셀 값 P(x,y)P(x, y)는 주변 16픽셀 pijp_{ij}와 가중치로 계산한다.

P(x,y)=i=12j=12w(i)w(j)p(x+i,y+j)P(x,y) = \sum_{i=-1}^{2} \sum_{j=-1}^{2} w(i) \cdot w(j) \cdot p(x+i, y+j)

여기서 가중치 w(i,j)w(i, j)Cubic Convolution Kernel로 계산:

w(t)={(a+2)t3(a+3)t2+1,t<1at35at2+8at4a,1t<20,t2w(t) = \begin{cases} (a+2)|t|^3 - (a+3)|t|^2 + 1, & |t| < 1 \\ a|t|^3 - 5a|t|^2 + 8a|t| - 4a, & 1 \le |t| < 2 \\ 0, & |t| \ge 2 \end{cases}

a는 보간 특성을 조절하는 파라미터(보통 a = -0.5)

Edge-Directed Interpolation(EDI, Li & Orchard 2000)

Edge-Directed Interpolation(EDI, Li & Orchard 2000)이미지 확대 시 경계(Edge) 품질을 높이는 보간 기법이다. Bicubic이나 Bilinear 보간법이 가진 약점을 개선하려고 나온 알고리즘이다.

일반적인 보간법(Nearest, Bilinear, Bicubic)은 모든 방향을 동일하게 처리한다. 이러한 보간법들이 방향성을 고려하지 않아 이미지에 경계선(Edge)이 있으면, 확대할 때 경계가 흐려지거나 계단 현상이 발생하게 된다.

EDI의 핵심 아이디어는 픽셀 주변의 경계 방향(Edge Direction)을 추정해 보간할 때 경계 방향으로는 더 많은 가중치, 반대 방향은 덜 적용하여 경계가 더 선명하고, aliasing이 감소하는 결과를 보여준다.

New Edge-Directed Interpolation (NEDI), Li & Orchard(2000) 알고리즘은 작은 블록에서 방향성(Edge 방향)을 통계적으로 추정해, 공분산(Convariance) 기반으로 가중치를 계산한다. 경계 방향을 따라 보간하여 부드러움과 선명한 경계를 유지할 수 있게한다.

Interpolation 정리

위 그림에서 검은 원은 원본 픽셀 값을 의미하며, 흰 원은 확대 시 생기는 새로운 픽셀을 의미한다. 확대된 이미지에서는 새로운 픽셀(흰 원)의 값을 계산해야 한다. 이때 보간법을 적용하여 빈 픽셀을 기존 픽셀 정보를 이용해 채우면 오른 쪽 Ouput Image처럼 새로운 픽셀까지 모두 채워진 결과를 확인할 수 있다.

코드 로직은 다음과 같다.

for(h = 0; h < new_height; h++)
    for(w = 0; w < new_width; w++)
    {
        // (h, w): 출력 이미지 좌표
        // (h’, w’): 입력 이미지에서의 대응 좌표 (실수 값 가능)
        output[h * new_width + w] = Interpolation(input, w’, h’);
    }

출력 이미지의 각 좌표(h, w)에 대해, 원본 이미지에서 대응하는 좌표(h', w')를 계산(확대 비율에 따라)한다. 이때 보간법(Nearest, Bilinear, Bicubic 등)을 적용하여 픽셀 값을 추정 후 결과를 출력 이미지에 저장하는 방식이다.

기법원리주변 픽셀 수특징장점단점
Nearest Neighbor가장 가까운 픽셀 값 그대로 복사1블록 현상 심함, 계단형 왜곡 발생연산 속도 매우 빠름화질 저하 심함 (블록 느낌)
Bilinearx, y 방향으로 2번 선형 보간 (4픽셀 가중 평균)4 (2×2)부드러운 결과, 하지만 약간 흐림구현 간단, 품질이 Nearest보다 우수선명도 떨어짐, 경계 약간 흐릿
Bicubic3차 다항식 보간, 주변 16픽셀(4×4) 고려16 (4×4)부드럽고 자연스러움, 약간 Overshoot 가능경계선 부드럽고 디테일 유지연산량 큼, Ringing(가짜 윤곽선) 발생 가능
Edge-Directed경계 방향성 고려해 보간 (Li & Orchard, 2000, NEDI)가변경계 보존 매우 우수, 선명한 이미지고품질 확대, 텍스트나 선 구조에 강함연산 복잡, 노이즈에 민감

Image Artifact

Image Artifact영상 처리 과정에서 새로 생기는 시각적 왜곡이다. 원본 이미지에는 없던 특징이 확대나 보간(Interpolation) 이후 생기면, 그게 바로 아티팩트이다.

예를 들어, 스마트폰 사진을 4배 확대했는데 원본보다 더 흐릿하거나, 경계가 계단처럼 보이는 현상이 대표적인 아티팩트이다.

Artifact가 생기는 이유는 간단하다. 이미지 확대는 원본에 없는 픽셀을 새로 만들어야 하는데, 보간법(Interpolation)으로 추정 값을 넣기 때문이다. 원본 정보가 부족하면, 보간 과정에서 정보 손실 및 계산 오차가 눈에 띄게 들어나는 아티팩트가 발생하는 것이다.

대표적인 아티팩트 유형은 아래와 같다.

아티팩트원인특징
BlockinessNearest Neighbor픽셀이 크게 보이고 블록 형태
BlurringBilinear / Bicubic전체적으로 흐릿하고 뭉개짐
RingingBicubic Overshoot경계 주변 가짜 윤곽선 생성
Aliasing해상도 낮은 이미지 확대곡선과 대각선이 계단 모양

References

Images from Rafael C. Gonzalez and Richard E.
Wood, Digital Image Processing, 2nd Edition.

profile
기초를 다지는 중입니다.📚🧑‍💻

0개의 댓글