본문 바로가기

23년 1학기 학교공부/영상처리

[IP] Image Downsampling

목차

    728x90
    반응형
    SMALL

    📁 Naïve image downsampling

    가장 기본적으로 나이브한 다운샘플링 방법이 있다.

     

    짝수번째 row와 짝수번째 column을 삭제하여 각 행열의 개수를 1/2배하는 방법이다.

     

    이때 1/2, 1/4, 1/8 등 축소 비율은 기존 가로 혹은 세로 길이에 비해 결과 이미지의 길이가 얼마나 짧아졌는지를 뜻한다.

    즉 넓이 기준에서는 1/4배씩 축소되는 것이다.

     

     

    위와 같이 Naïve image downsampling 방식으로 축소시킨 이미지를 다시 확대시키면, 축소 비율이 높을수록 더 pixelated된다.

     

     

    📁 Sampling(표본화)

    일정한 간격으로 데이터를 뽑아내는것을 Sampling이라고 한다.

     

    영상 및 이미지에서는 일정한 기준으로 pixel을 획득하는 것을 뜻한다.

     

     

    간단한 예시인 sine 함수를 보자.

    연속적인 함수에서 높은 sampling rate로 샘플링 후 불연속적으로 만들면, 이후의 결과물에서도 원본을 연상할 수 있다.

     

     

    하지만 sampling rate가 낮아질수록 결과물에서 원본으로 되돌아가기 힘들어진다.

    그림과 같이 인접한 스펙트럼과 겹쳐 출력이 왜곡될 수 있으며, 기존의 정보를 잃어버리는 문제점이 생긴다.

     

     

    이때 위와 같이 신호 처리 분야에서 aliasing이란 sampling 후 신호를 구별할 수 없게 되는 것을 말하며,

    sampling rate가 낮을 경우 aliasing이 발생한다.

     

    영상 처리(컴퓨터 그래픽) 분야에서 aliasing이란 물체의 가장자리 부분이 매끄럽지 않고 계단처럼 보이는 현상을 말한다.

    위 1/8로 축소했던 그림을 다시 확대시킨 그림이 aliasing이 나타난 대표적인 예시이다.

     

    이런 현상은 "moire"라고도 불린다.

     

     

     

     

    📁 Anti-aliasing

    aliasing을 처리하기 위해 Anti-aliasing 기법을 사용한다.

    일반적으로 두가지 방법이 있다.

     

    Oversampling

    (정확힌 모르겠음)

    Oversampling은 Up Samplng이라고도 불리며, 분포가 작은 클래스의 값을 분포가 큰 클래스로 맞춰주는 샘플링 방식이다.

     

    이때 분포 크기의 기준을 픽셀 개수라고 가정하면,

    분포가 작은 클래스는 aliasing이 일어난 이미지일 것이다.

     

    aliasing이 일어난 이미지의 분포를 크게 만들기 위해서는 픽셀의 개수가 많아져야하고,

    이는 해상도가 높아져야함을 뜻한다.

     

    위와 같이 oversampling을 이용한 anti-aliasing 방법은 이미지 처리 과정이 아니라 이미지를 만드는 과정에서 할 수 있는 방법이므로, 해당 포스팅에서 다룰 내용이 아니다.

     

     

     

    Smoothing

    일반적으로 이미지 관점에서 발생하는 aliasing 문제를 해결할 때는 bluring 작업이 필요하다.

     

    이미지를 smooth하게 바꾸게 되면 원본보다 흐려지게 되므로 정보의 손실이 일어날 수 있지만, aliasing 이미지보다 나은 결과를 얻을 수 있다.

     

     

     

     

    📁 Gaussian 필터

    이미지를 smoothing하는 방법 중 가장 간단한 방법으로는 이미지에 Gaussian Filter를 적용하는 방식이 있다.

     

    이미지에 먼저 Gaussian 필터를 적용하여 bluring한 후 짝수번째 행열을 삭제시키는 방법으로 축소하면 위와 같은 결과가 나온다.

     

    Naïve downsampling 방식을 사용한 결과와 차이가 나는 것을 볼 수 있다.

     

     

     

     

    📁 Gaussian Image Pyramid

    Gaussian Image Pyramid란 가우시안 필터를 적용한 후 downsampling한 이미지들의 연속을 말한다.

     

    이때 downsampling한 이미지는 subsampled, downsampled, sampled image라고도 부른다.

     

     

     

    위 그림에서 가장 아래 이미지를 원본, 즉 넓이를 1이라고 가정하고 위로 올라갈수록 넓이가 1/4배 된다고 가정하면

    가우시안 이미지 피라미드의 총 넓이 합은 다음과 같다.

     

    피라미드의 전체 넓이는 원본 이미지보다 4/3배 더 크다.

     

     

     

    기본적으로, 픽셀 샘플들에 필터링 후 샘플링 하는 과정을 최소 해상도(min resolution)이 될때까지 반복하는 방법으로 가우시안 피라미드를 형성한다.

     

     

     

     

    가우시안 이미지 피라미드에서는 상위 레벨로 갈 수록 smooth out 효과가 일어난다.

     

    이때 레벨은 가우시안 필터를 적용하고 downsampling하는 과정을 거칠수록 증가한다.

    즉 레벨이 커질수록 이미지는 점점 작아진다.

     

    상위 레벨으로 갈수록 보존되는 영역은 원본 이미지에서 대부분 넓고 uniform한 영역들이다.

    얼룩말의 줄무늬처럼 uniform하지 않은 영역은 downsampling할수록 흐려지는 것을 볼 수 있다.

     

    이렇게 흐려진 가우시안 피라미드의 상위레벨 이미지에서 곧바로 원본이미지로 되돌리는 방법은 없기 때문에, 이를 가능하게 하기 위해서는 residual을 저장할 필요가 있다.

     

    이전 이미지에서 가우시안 필터를 적용한 이미지를 빼면, 가우시안 필터링으로 손실되는 residual을 얻을 수 있다.

     

    각 단계별로 residual을 얻을 수 있고, 이를 이용하여 가우시안 피라미드의 상위레벨 이미지에서 이전 레벨 이미지로 손실 없이 되돌릴 수 있다.

     

     

     

     

    📁 Laplacian image pyramid

    라플라시안 이미지 피라미드란 residual들의 연속이다.

    라플라시안 피라미드를 구성하는 residual은 위에서 설명한 방식으로 구하지 않는다.

     

     

    가우시안 피라미드의 각 단계에서, 각 이미지를 가우시안 필터로 bluring하게 되면 residual이 생긴다.

    위 그림은 각 단계의 residual을 구한 라플라시안 피라미드이다.

     

    라플라시안 피라미드를 이용하여 가우시안 피라미드의 상위레벨 이미지에서 원본이미지를 구할 수 있다.

     

     

    즉 라플라시안 피라미드는 그 레벨의 가우시안 피라미드 이미지와, 다음레벨의 가우시안 피라미드 이미지를 upsampling한 이미지의 차이로 구성된다.

     

    원본 이미지와 단순히 가우시안 필터링한 이미지의 차이라는 위의 설명과는 차이가 있다.

     

     

    라플라시안 피라미드의 생성 과정을 풀어서 설명하면 다음과 같다.

    1) 원본이미지(a)로 가우시안 피라미드의 상위 단계 이미지(b)를 생성한다.

    2) 가우시안 피라미드의 상위단계 이미지(b)를 upsampling하여 원본이미지(a)와 같은 크기의 이미지(c)를 생성한다.

    3) 이미지 a와 이미지 c의 차이를 구한다.

     

     

     

    라플라시안 피라미드를 이용하여 원본 이미지를 구하는 과정은 다음과 같다.

    1) 가우시안 피라미드의 가장 상위단계 이미지(a)를 다음 단계 이미지의 크기와 같도록 upsampling(b)한다.

    2) 라플라시안 피라미드의 가장 상위단계 이미지(c)와 이미지 b를 더하여, 가우시안 피라미드에서 하위단계 이미지에 가우시안필터링을 한 이미지를 구한다.

    3) 원본 이미지와 같아질때까지 반복한다.

     

     

    원본 이미지로 복원할때, 라플라시안 피라미드를 사용하게 되면 가우시안 피라미드의 가장 상위단계만 사용하면 된다.

    라플라시안 피라미드는 컬러 이미지보다 필요한 저장 용량이 적고, 압축 효율이 높기 때문에 가우시안 피라미드를 모두 저장하는 것 보다 효율적이다.

     

     

     

     

    📁 Upsampling

    upsampling의 가장 단순한 접근방법은 각 픽셀을 키우고 싶은 크기만큼 늘리는 것이다.

     

    왼쪽의 이미지에서 10x10 범위에 동일한 값이 채워지는 방식으로 10배 upsampling하였다.

     

     

     

    Interpolation(보간법)

    위와 같은 방법은 너무 Naïve하기 때문에, Interpolation이라는 방법을 사용하여 upsampling을 하고자 한다.

     

    예를 들어 4개의 값을 8개의 값으로 늘리고자 한다.

    이미지와 같이 이산적인 신호에서는 처음과 마지막을 제외한 포인트들은 입력 포인트와 일치하지 않는다.

     

     

    이렇게 일치하지 않은 값을 근처 값들을 이용하여 추론하고자 할 때 이용하는 방법이 Interpolation이다.

     

    기본적으로 구하고자 하는 값의 위치를 구한 후, 그 값을 구하는 방식으로 진행된다.

     

     

    5x5 배수로 upsampling하고자 하는데, 이때 기존의 픽셀값 외에 새로 만들어진 픽셀 위치들은 아직 모두 채워지지 않은 상태라고 생각해보자.

     

    그렇다면 기존의 픽셀과 픽셀 사이에는 4칸의 빈 위치가 생기고, 그 앞 뒤로 2칸씩 빈 위치가 있으니 2개의 값을 10개의 값으로 늘리고자 하는 것과 같다.

     

    이때 이미지는 이산 신호이므로 기존 픽셀 위치와 동일한 위치 외에는 모두 입력 포인트와 일치하지 않는다.

    기존의 두 픽셀 위치가 (0, 0), (1, 0)이라고 가정한다면, 근처 값들을 이용하여 새로 생긴 픽셀들의 위치를 구하고 이를 이용하여 값을 구하는 방법이 적절한 방법이고, 이것이 Interpolation이다.

     

     

    Interpolation 방법에는 여러가지가 있는데, 해당 포스팅에서는 nearest와 linear, bilinear 방법을 소개하고자 한다.

     

     

     

    Nearest-neighbor Interpolation

     

     

    Linear Interpolation

     

     

    Bilinear Interpolation

     

     

    728x90
    반응형
    LIST