본문 바로가기

CS/[Vision]Computer Vision(컴퓨터 비전)

[Vision]What is image? /Sampling, Reconstruction, Aliasing

What is Image?

우리는 image를 하나의 함수 function으로 생각할 수 있다.

image를 image의 좌표를 Pixel 값을 매핑하는 함수를 f(x,y)라고 한다면 (x,y) 좌표에서의 intensity가 주어지게 되고 이것이 모여 Image를 나타내게 되는 것이다.

 

흑백 이미지라면 각 픽셀 값은 0-255 사이의 값으로만 갖고 

컬러 이미지라면 하나가 아닌 세개의 값(R,G,B)으로 구성된 벡터가 픽셀이 된다.

 

따라서 컬러 이미지에서의 각 픽셀 값은 세개의 Channel을 갖게 되고 1x3 크기의 벡터로 나타내어 지는 것이다.

각 세개의 값은 0-255사이의 값으론 나타내어지며 각각의 값으로 색을 표현한다.

즉 나타낼 수 있는 색 조합의 개수는 256^3 = 16777216 가지가 된다.

 

따라서 이미지는 pixel values들의 matrix로 표현되는 것이다.

 

Sampling

실제 사물은 continuous 한 값이므로 이를 어떻게 저장하고 계산하는지 알아보자.

일단 먼저 사물 이미지에 대한 sampling 작업이 들어가야하는데

sampling 이란 연속적인 값을 discrete 하게 많은 point로 나누어 해당 Point를 continuous function에 넣어 나온 값으로 표현 하는 것을 Sampling이라고 한다.

말로 표현하면 애매할 수 있는데 그림으로 표현하면 아래와 같다.

Reconstruction

이는 sampling의 반대 과정이라고 생각하면 쉽다. 

sample 값들을 이용하여 continuous function을 거쳐 continuous 한 값으로 만들어 주는 과정이다.

 

이러한 sampling, reconstruction 과정은 비단 이미지 뿐 아니라 audio 등 여러 분야에서 사용된다.

 

Undersampling, Aliasing

sample들 사이에 유실된 것들이 있다면 어떻게 하느냐? 

예를 들어 Sign wave를 Sampling 한다고 해보자.

 

 

위 그림 과 같이 Sampling 을 진행하고 검은 점들이 Sampled value라고 하자.

reconstruction을 진행했을 때 우리가 나타내고자 했던 sign wave의 특징이 전혀 나타내지 못하는 것을 확인할 수 있다. 

사실 연속적인 신호를 sampling 하게 되면 Continuous한 정보를 Discrete하게 만드는 과정이므로 information의 lost은 어느정도 일어날 수 밖에 없다.

아래 왼쪽의 경우는 기존 sign wave에 비해 상당히 lower frequency한 Wave로 나왔고 이러한 경우 원래 신호가 무엇인지 알 수 없고 이 경우를 Undersampling이라고 한다.

아래 오른쪽 처럼 같은 point에 대해 reconstruction을 전혀 다르게 해석해서 마찬가지로 원래 신호가 무엇인지 모르는 경우가 생길 수 있다.

위 경우들 처럼 원래 신호를 알 수 없게 되는 경우를 aliasing이라고 하고 "traveling in disguise"라고도 표현한다.

 

Aliasing in images

아래는 Image 에서의 Aliasing 경우이다.

아래 두 그림 모두 detail한 부분들이 모두 사라져있는 것을 확인할 수 있다.

 

오른쪽 그림의 경우 not enough sampling을 이유로 오른쪽 부분이 흰색으로만 출력이 되게 된다.

 

Antialiasing

앨리어싱을 없앨려면 어떻게 해야할까..?

단순히 생각해볼 수 있는 것은 해도 어떻게든 

sampling을 좀더 촘촘히 해보는 것을 생각해볼 수 있는데 이것은 계속 촘촘히 가다보면 언젠가 표현을 못하는 구간이 생길 수밖에 없고

그럼 높은 frequency의 구간을 무시하는 것을 생각해볼 수 있는데 이는 information을 잃어버린다는 단점이 있다. 하지만 이경우는 Aliasing일어나는 것보다는 낫다.

 

그럼 두번째 antialiasing 방법 에 대해 좀 더 자세히 알아보자.

 

두번째 방법을 구현하는 방법은 여러가지가 있는데

 

첫번째, 높은 Frequency구간을 무시하는 방법으로 LOW-pass filter를 사용하는 방법이 있다.

이는 high frequency는 제거하며 오직 safe, low frequency 구간만 남기는 FIlter 이다.

reconstruction에서도 lowest frequency 구간만 choose 한다.

이를 그림으로 표현하면 다음과 같다.

두번째, Linear filtering 방법을 사용하는 것이다.

이는 Signal 신호를 transformation 변환 하는 방법이다. 이러한 방식을 사용하는 예시로는 다음이 있다.

 

이 방법의 중요한 point는

1. linearity : filter(f+g) = filter(f) + filter(g)라는 속성(선형 속성)이다. 즉 결과 값이 중간 Filter 값들의 선형 결합으로 결정되는 것이다.

2. shift invariance : behavior invariant to shifting the input 즉 input 값들을 이동시키는 속성이다.

예를 들어

– delaying an audio signal

– sliding an image around

이 있다.

 

해당 Linear filtering 에도 여러가지 종류가 있는데 이는 따로 정리해보도록 하겠다.