카메라나 전자현미경 등의 장비를 이용해 우리가 관찰하는 사물이나 장면을 샘플링(sampling)과 양자화(Quantization)과정을 거쳐 디지털 영상으로 만들 수 있음을 지난 포스팅에서 배웠다. 이번 포스팅에선 디지털 이미지가 실제로 어떤 식으로 표현이 되는지를 알아보고, 디지털 영상이 차지하는 메모리의 크기를 계산하는 법을 알아보도록 하자. 

 

 

 

1. 디지털 이미지의 표현 방법

 

디지털 이미지는 자연계에 존재하는 어떤 사물, 혹은 장면을 이미지 센서를 통해 디지털 값들의 집합으로 표현한 것이다. 이 과정에서 아날로그 신호인 대상체의 빛의 패턴을 샘플링(sampling)과 양자화(quantization)를 통해 전기 신호로 바꾸고, 최종적으로 전압값을 이진수로 바꾸어 메모리에 저장한다. 데이터를 표현하는 가장 간단한 형태는 이러한 이진수(binary number)이며, 이 이진수들을 여러개 붙여서 그 조합을 통해 흑백 영상, 컬러 영상등을 표현한다. 가장 간단한 형태의 디지털 이미지인 바이너리 이미지(binary image)부터 컬러 영상까지 디지털 이미지가 실제로 어떻게 표현되는지를 살펴보자. 

그보다 앞서 디지털 이미지를 표현하는 데이터 뭉치가 컴퓨터안에서 어떠한 방식으로 표현되는지를 살펴보도록 하자. 

 

 

- 디지털 이미지의 좌표계(Digital Image Coordinate) 

 

외부의 어떤 장면이 카메라 렌즈를 거쳐 디지털 이미지로 형성이 되기 까지 몇 가지 좌표계를 거치게 된다. 잠깐 언급만 하자면 월드 좌표계(World coordinate), 카메라 좌표계(Camera coordinate), 이미지 좌표계(Image coordinate) 그리고 마지막으로 픽셀 좌표계(Pixel coordinate)가 있다. 이번에 우리가 살펴볼 좌표계는 이 픽셀 좌표계이다. (나머지 좌표계는 추후에 Multiple view geometry관련 포스팅을 할 때 언급하도록 하겠다.)

 

이미지를 이루는 가장 작은 단위를 픽셀(pixel)이라 하는데, 이미지를 이루는 점들이라고 생각하면 된다. 우리가 보통 모니터 해상도를 이야기 할 때 640x480, 1024x768등의 해상도를 많이 들어봤을 것이다. 이 해상도는 바로 픽셀(pixel)의 개수를 의미한다. 즉 640x480의 경우엔 아래 그림과 같이 가로 640개, 세로 480개의 픽셀로 이루어진 이미지를 의미한다. 이때 이미지의 총 픽셀 개수는 640x480=307,200개 이다. 

 

 

위의 이미지에서 각 픽셀은 밝기 값, 혹은 컬러 값을 가지고 있는데, 이들 각각이 모여서 하나의 이미지 패턴을 만드는 것이다. 이때 각 픽셀들이 이미지를 형성하기 위해선 어떤 기준이 필요하다. 바로 이미지(픽셀) 좌표계(image coordinate)이다. 이미지 좌표계는 우리가 기존에 수학책에서 배웠던 좌표평면의 기준과는 좀 다른데, y축이 아래 방향이다. 따라서 y의 아래쪽 방향이 +방향, 위쪽이 -방향이 된다. 

 

  

 

 

 

 

이미지 좌표는 선형대수의 행렬(matrix)과 같이 생각할 수 있다. M개의 row와 N개의 column을 가진 M x N 행렬을 생각해보자. 여기서 M을 y축의 크기, N을 x축의 크기로 생각한다면 아래와 같이 각 픽셀의 값을 접근할 수 있다. 보통의 함수 f(x,y)에서 x와 y가 뒤집힌 꼴이라고 생각하면 된다. 

 

 

 

이러한 픽셀 접근 방법을 실제로 MATLAB으로 이미지를 띄워 확인해 보았다. 아래 그림은 M=258, N=350인 크기의 이미지의 좌표를 확인한 것이다. MATLAB의 데이터 커서 툴을 이용하여 임의의 좌표의 픽셀 값을 확인해 보았고, (x=137, y=29)좌표의 밝기 값이 127인 것을 확인하였다. 

 

 

 

 

- 이진 영상(binary image) 

 

디지털 이미지중 가장 간단한 형태는 이진 영상(binary image)이다. 이진 영상은 각 픽셀이 1비트(bit)로 이루어져 있으며 각 픽셀은 오직 밝음(=1), 어두움(=0)의 두 가지 만을 표현한다. 쉽게 말해 각 픽셀에 LED를 달아 놓은 형태를 생각하면 된다. LED가 켜져 있으면 그에 해당하는 픽셀은 1, 꺼져 있으면 0이라고 생각하면 된다. 아래 그림은 이진 영상을 나타낸 것이다. 

 

 

 

 

사과 그림을 이진 이미지로 바꾸어 출력한 것이다. 왼쪽의 빨간색 박스 안의 실제 픽셀 값들을 오른쪽에 나타내었다. 0과 1로만 픽셀 값들이 이루어진 것을 볼 수 있다. 

 

사실 바이너리 이미지를 만드는 방법은 두 가지가 있는데 첫 번째는 원하는 포인트에 점을 찍어 만드는 방법이 있다. 두 번째는 기존의 흑백 영상으로부터 임계값(threshold)을 기준으로 만드는 방법이 있다. 이때 임계값은 0~255 사이의 값 중 하나를 지정하게 되는데, 기본적으로 128을 많이 사용한다. 즉 128보다 작은 픽셀 값들은 0으로, 큰 픽셀 값들은 1로 만드는 방법이다. 이 외에도 이중 임계값으로 만드는 방법 등 다양한 방법이 존재한다. 이후 포스팅에서 자세히 다루도록 하겠다. 

 

이러한 바이너리 이미지는 Image segmentation, Object Detection 등 다양한 영상처리 기법의 한 과정으로 응용된다. 이진 이미지가 실제 응용된 예로는 Monochrome OLED Display가 있다. 

 

이진 이미지로 표현된 Monochrome OLED display

 

 

 

 

- 흑백 영상(gray-scale image)

 

흑백 영상은 각 픽셀의 밝기 값을 0~255사이의 값으로 표현한 이미지이다. 이는 8bit=1Byte의 메모리를 사용한 것이며 아래 그림은 똑같은 사과 영상을 8bit의 흑백 영상으로 표현한 것이다. 

 

 

 

왼쪽의 빨간색 박스 안쪽의 픽셀의 밝기값들을 오른쪽에 출력하였다. 픽셀 값들의 범위가 0~255사이의 값인 것을 볼 수 있다. 픽셀의 밝기 값들을 어느 범위에서 표현할지에 따라 흑백 영상의 모습이 약간씩 달라진다. 가장 작은 범위로 표현한 영상이 바이너리 이미지(0~1사이의 값으로 밝기를 표현)라고 할 수 있으며 가장 큰 값으로 표현한 범위가 0~255인 8bit로 표현한 흑백 영상이다. 밝기의 범위에 따른 흑백 이미지의 모습은 바로 이전의 포스팅인 이미지 샘플링과 양자화에서 후반부를 보면 자세히 나와있다. 

 

대부분의 영상처리 알고리즘은 이 흑백 이미지에서 처리 된다. 심지어는 딥러닝을 통한 얼굴 인식 등에도 컬러 영상이 아닌 흑백 영상이 학습 데이터로써 이용된다. 

다음에 설명할 컬러 이미지는 표현방법이 약간 복잡하기 때문에 영상 처리를 적용하기가 까다롭고 복잡하다. 

 

 

- 컬러 영상(color image)

 

컬러 영상은 3개의 채널로 표현된다. 이때 3개의 채널은 빛의 3원색인 빨강(Red), 녹색(Green), 파랑(Blue)이다. 각 채널은 0~255사이의 값으로 빨강의 정도, 녹색의 정도, 파랑의 정도를 각각 나타낸다. 

 

컬러 영상에서는 세 개의 기본 컬러를 조합하여 다양한 색깔을 만들어낼 수 있는데 각각의 8bit의 기본 컬러 3개를 조합하여, 256 x 256 x 256 = 16,777,216가지의 컬러를 만들어낼 수 있다. 8bit(red, green, blue) 3개를 조합하여 총 24bit를 이용하여 컬러를 표현했으며 이를 트루 컬러(True color)라 부른다. 여러 이미지나 그래픽 관련 프로그램들은 RGB 채널에 투명도(Transparent)를 나타내는 Alpha채널을 더하여 RGBA인 32bit컬러 모델을 많이 사용한다. 

 

아래 그림은 위의 사과 영상을 컬러 이미지로 표현한 것이다. 

 

 

원래의 빨간 사과 컬러 이미지를 R(Red, )G(Green), B(Blue)의 각 채널별 이미지로 표현하였다. 보다시피 사과는 빨간색인데, 세 개의 채널 중 Red 채널이 가장 밝은 것을 볼 수 있다. 가장 밝다는 것은 높은 값들이 많이 분포해 있다는 의미이며, 이는 색깔이 빨간색일 확률이 높은 것이다. 실제로 위 이미지의 (x=163, y=116)인 좌표의 RGB값들은 R=180, G=2, B=2 이다. 따라서 이 좌표의 픽셀의 색깔은 빨간색에 가깝다. 

 

컬러 이미지는 다양한 컬러 모델로 표현할 수 있다. 가장 기본적인 형태인 RGB모델, HSV(Hue, Saturation, Intensity)모델, YCbCr모델 등 다양한 컬러 모델이 존재한다. 컬러 모델에 대한 자세한 사항은 추후에 컬러 영상에 대한 포스팅을 할 때 이야기 하도록 하겠다. 

 

 

 

2. 디지털 이미지의 메모리 계산법

 

디지털 이미지는 기본적으로 컴퓨터를 이용하여 보여지고 처리되는 데이터 집합이다. 이는 반드시 메모리에 저장이 되어야 하는데, 이번엔 디지털 이미지가 차지하는 메모리를 계산하는 방법을 알아보도록 하자. 

 

디지털 이미지는 기본적으로 2차원 배열 형태를 띄고 있다. 배열의 각 원소는 하나의 메모리 공간을 나타내며 보통 1Byte의 공간을 차지한다. 따라서 이미지의 가로(width)와 세로(height)의 크기의 곱에 각 픽셀이 차지하는 비트수(bits)를 곱해주면 메모리에서 차지하는 공간이 나오게 된다. 이때 비트수는 8로 나누어줘야 하는데 이는 1Byte=8bit 이므로 bit를 Byte로 바꾸어 주기 위함이다. 

 

 

 

흑백 이미지일 경우 bit수는 8bit가 사용되므로 1Byte이다. 8bit가 사용되는 이유는 부호가 없는 경우 8bit를 사용하여 0~255의 숫자를 표현할 수 있기 때문이다. (부호가 있을 경우 보통 맨 앞의 bit인 MSB(most significant bit)를 부호로 사용하고 0~127사이의 숫자를 표현함)

 

위에서 사용했던 사과 이미지를 예로 들어보자. 사과 이미지는 가로(width)가 420, 세로(height)가 288이며 24bit를 사용한다. 

컬러 이미지의 경우에 그 크기가 아래와 같다. 

 

Apple Color Image(24bit): 

362,880 Byte = 420 x 288 x (24/8)

 

약 360 Kilo Byte의 메모리 공간을 차지하는 것을 볼 수 있다. 다음은 흑백 이미지를 계산해보자. 

 

 

 

Apple Gray-scale Image(8bit): 

120,960 Byte = 420 x 288 x (8/8)

 

메모리 크기가 약 1/3로 줄어든 것을 볼 수 있다. 마지막으로 바이너리 이미지를 계산해보자. 

 

 

 

Apple Binary Image(2bit): 

30,240 Byte = 420 x 288 x (2/8)

 

바이너리 이미지가 차지하는 메모리 공간은 단 2bit만 사용하기 때문에 훨씬 작은 것을 볼 수 있다. 그러나 바이너리 이미지도 대부분은 흑백 이미지와 같이 픽셀당 1Byte로 표현하기 때문에 흑백 이미지와 같은 크기의 메모리를 차지한다. 

 

 

위에서 보인 메모리 계산법은 이미지의 확장자가 *.BMP(bitmap)일 때의 계산법이다. 또한 실제로는 위의 계산된 크기보다 약간 더 크다. 이는 BMP이미지의 포맷을 정의하기 위한 헤더나 색깔을 지정하기위한 팔레트(Palette)등의 정보가 이미지에 추가 되기 때문이다. 인터넷에서 BMP확장인 이미지를 다운 받아 크기를 계산하여 확인해보자. 

 

이 외에도 Jpg, png등 많은 이미지 포맷이 존재한다. 나머지 이미지 포맷은 사람이 느낄 수 없을 정도로 이미지를 압축하여 저장하기 때문에 용량이 훨씬 작다. 위의 apple 이미지의 BMP포맷은 약 360KB의 크기이지만, 이를 jpg로 바꿨을 경우 약 20KB로 용량이 줄어든다. 

 

이미지 압축도 손실 압축, 무손실 압축 등 방법이 다양하다. 기존의 jpg방식은 손실 압축 방식을 사용하여 아주 미세하게 화질의 차이가 존재하지만 일반사람들은 구분하기 힘들다. 개선된 jpg나 png포맷은 무손실 압축 방식을 사용하고 용량도 훨씬 작은 장점이 있다. 

 

앞선 포스팅에서 우리는 이미지를 획득하는 다양한 방법에 대해 배웠다. 그러나 이렇게 다양한 이미지 획득 방법들의 최종 목적은 같다. 바로 센싱된 데이터들로부터 디지털 이미지를 만들어내는 것이다. 

대부분의 센서 데이터들은 센싱된 장면(scene)에 관련된 연속적인 전압의 파형(continuous voltage waveform)이며, 해당 장면의 특성은 파형의 진폭(amplitude)의 패턴으로 표현된다. 센싱된 전압 파형으로부터 디지털 이미지를 만들어내기 위해선 이러한 연속된 파형을 디지털 형식으로 바꿔야 한다. 연속된 파형을 얻는 과정, 디지털 형식으로 바꾸는 과정을 각각 샘플링(sampling)양자화(quantization)라 한다. 이번 포스팅에선 샘플링과 양자화에 대해 알아보도록 하겠다. 

 

 

 

1. 샘플링(sampling)과 양자화(quantization)의 기본 개념

 

- 샘플링(sampling)의 기본 개념 

 

샘플링(sampling)이라는 것은 기본적으로 수 많은(무한한) 데이터들 가운데 유한한 개수의 데이터를 뽑아내는 것이다. 

가령 속이 보이지 않는 어떤 상자에 10,000개의 공을 넣어 놓고 상자속 공의 색깔에 대한 분포를 추정한다고 생각해보자. 모든 공을 전부 뽑아서 조사하면 가장 정확하겠지만 시간과 비용이 너무 많이 든다. 따라서 10,000개의 공 중에 1000개만 뽑아낸다고 했을 때, 공을 뽑아내는 행위 자체를 샘플링이라고 한다. 

 

즉 어떤 모집단 전체의 데이터를 전부 사용하면 가장 정확하겠지만 시간과 비용이 많이 소모되기 때문에 적당한 개수의 데이터만 뽑아서 전체의 패턴을 추정하기 위한 데이터 수집 행위라고 할 수 있다. 

 

상자속 공의 샘플링말고 실제 1차원 신호를 예로 들어보자. 

 

녹음기 하나를 떠올리고, 이 녹음기에 어떤 대화를 녹음하는 것을 상상해보자. 이때 우리가 말하는 내용은 음성 신호(voice signal)로써 특정 파형(waveform)의 형태를 보일 것이다. 아래 그림을 실제 아날로그 음성 신호라고 가정해보자. 

 

 

 

 

 

가로축은 시간(time), 세로축은 진폭(amplitude)를 나타낸다. 

여기서 샘플링이라는 것은 어떤 것을 의미할까? 바로 일정한 간격의 주기로 신호의 강도를 수집하는 것을 의미한다. 이때 중요한 것은 어느 위치, 혹은 어느 시간에 진폭값이 얼마인지를 알아내는 것이다. 여기에 추가로 샘플링 주파수(sampling frequency)도 굉장히 중요하다. 원래 신호 모양을 온전히 복원하기 위해선 나이퀴스트 샘플링 주파수(Nyquist Sampling frequency) 규칙을 따라야한다. 이에 대한 내용은 본 포스팅 범위를 벗어나므로 패스하겠다. 구글에 검색하면 관련된 많은 자료가 있으니 참고하기 바란다. 

 

 

자 이제 위의 신호를 샘플링 해보자. 아래 그림에서 빨간 줄이 샘플링 지점(sampling point)라고 생각하면 된다. 즉 시간의 단위를 초(second)라고 했을 때 1초 때의 신호의 강도를 수집하여 저장하고 2초때 신호 강도를 수집해 저장하는 식으로 신호를 수집하는 것이다. 아래 그림은 위 신호의 샘플링 과정을 나타낸 모습이다. 

 

위의 점들을 직선으로 이어보자. 원래의 신호와 비교 했을 때 비슷한가? 아닐 것이다. 좀 더 촘촘하게(짧은 주기, 높은 주파수로) 샘플링을 할 수록 원래 신호에 가까워진다. 

 

 

 

샘플링 과정을 보면 매 샘플링 주기 T(여기선 1초로 가정)마다 신호의 강도(amplitude)를 측정하여 그 값을 저장한다. 위 그림의 아래는 샘플링 결과를 나타낸다. 

 

샘플링 주기가 짧을 수록 원래의 신호를 더 잘 복원할 것이다. 그러나 반대로 샘플링을 위해 더 많은 연산을 해야 하므로 샘플링 비용이 증가하고 이에 따른 부담이 커진다는 단점이 있다. sampled signal의 그림을 보면 매 샘플링 시간 마다 그 시간 위치에서의 진폭값(amplitude)이 빨간색 점으로 표현되어 있다. 이 점들을 차례로 연결시키면 원래의 신호 패턴이 복원될 것이다. 물론 앞서 언급했듯이 샘플링 주기가 짧을 수록, 이말은 곧 샘플링 주파수(sampling frequency)가 높다는 의미이며 샘플링 주파수가 높을 수록 원래의 신호에 더 가깝게 된다. 아래의 식과 같이 주기와 주파수는 역수의 관계임을 잘 생각하자. 

 

 

 

 

- 양자화(quantization)의 기본 개념

 

양자화(quantization)라는 것은 샘플링(sampling)한 아날로그 형태로 되어 있는 신호나 정보를 디지털화(digitizing) 하는 작업을 말한다. 좀 더 쉽게 말하자면 다음과 같다. 

 

0 ~ 1사이의 숫자를 생각해보자. 아날로그 방식으로 생각해보면 0과 1사이엔 실제로 무수히 많은 숫자가 존재한다. 0.1, 0.2479, 0.78001, 0.99999 등 우리가 셀 수 없이 많은 수가 무한대로 존재하는 것이다. 현실적으로 이 무수한 숫자들을 다루기란 불가능하기 때문에 우리는 일정한 범위와 기준값을 정해놓고 어떤 임의의 숫자가 나오면 그와 가장 근접한 기준값으로 만들어 사용하는 것이다. 

 

예를 들어 우리가 어떤 전압 값을 측정한다고 해보자. 이때 우리는 0.1V 단위로만 값을 측정한다고 가정해보자. 실제의 전압 값이 3.4122319800200922212935482...V 라고 했을 때 과연 이 값을 전부 표현하는것이 옳은가? 저렇게까지 정밀하게 측정하기도 어려울 뿐더러 그럴 만한 정밀한 센서도 없고 그럴 필요성도 없다. 이럴때 우리는 뒤에 필요 없는 정보는 생각하지 않고 측정된 값을 가장 근접한 값으로 만들어 사용하는 것이다. 

실제로 센서에 의해 측정된 아날로그 전압값이 3.41223V라고 했을 때 0.1V 단위로 측정한다고 했으니 이때의 양자화 시킨 Voltage값은 3.4V일 것이다. 

 

결국 양자화라는 것은 무한대로 이루어진 셀 수 없는 아날로그 정보를 셀 수 있을 만큼의 간격으로 만들어서 유의미한 정보만을 사용하는 것이다. 이 말은 샘플링에도 유효할 것이다. 

 

위에서 봤던 신호 샘플링의 그림을 다시 보자. 

 

t=2의 진폭 값과 t=4일 때의 진폭값은 눈으로 봤을 때 당연히 다르다. 그러나 0.1V단위로 양자화를 하게 되면 t=2와 t=4는 같은 전압값(0.2V)을 가지게 된다. 적절한 양자화의 Level설정이 필요하다. 

 

 

아까 수집한 전압 값을 0.1V 단위로 양자화 한다고 가정해보자. t=1일 때의 실제 측정된 신호의 진폭은 0.0973V이다. 양자화 과정을 통해 가장 가까운 값인 0.1V로 만들었고 결국 t=1일때의 신호 값은 0.1V가 된다. t=2 일때는 0.2V, t=3일때는 0.3V가 각각 되고 t=7일때는 -0.1V가 되는 것이다. 이렇게 하여 컴퓨터의 메모리에는 [0.1, 0.2, 0.3, 0.2, 0.3, ... ]의 값들이 배열의 형태로 순차적으로 저장된다.

 

그런데 위와 같이 0.1V단위로 양자화를 하게 되면 t=2일 때 0.2V가 되고 t=4일 때도 역시 0.2V가 된다. 눈으로 보기엔 분명 t=2와 t=4의 진폭값은 다르다. 그러나 양자화 결과 같은 값이 되는 것이다. 이때에 양자화 단계를 0.05V로 설정했다면 t=2와 t=4는 다른 진폭값으로 기억될 것이다. 따라서 적절한 양자화(quantization) Level 설정이 중요하다. 

 

 

 

2. 이미지의 샘플링(sampling)과 양자화(quantization)

 

- 이미지 샘플링(sampling)

 

우리는 지금까지 1차원 신호에 대한 샘플링과 양자화에 대한 개념을 공부하였다. 그렇다면 2차원인 이미지의 경우엔 샘플링과 양자화가 어떻게 이루어질까? 간단하다. 2차원 배열(2-D Array)형태의 센서를 이용해 영상 신호를 샘플링하고 양자화 하는 것이다. 2-D Array센서로는 대표적으로 CCD(Charge Coupled Device)와 CMOS(Complementary metal-oxide semiconductor)라는 센서가 있다. 두 센서에 대한 자료는 인터넷에 지나치게 많으니 자세한 설명은 생략하고.. 

 

간단히 얘기해서 빛 에너지를 전기신호로 바꾸는 센서이다. 즉 어떤 장면을 카메라로 촬영한다고 했을 때, 광원(태양 등)으로부터 나온 빛이 어떤 사물이나 환경에 다다른다. 이후 대상 물체에 반사된 빛 에너지들이 카메라 렌즈를 통과해 아래 그림과 같은 2-D Array 센서판에 다다르게 된다. 이때 센서 Array는 촬영한 장면에 대한 빛 에너지의 패턴대로 각 Cell에 일정 전압이 걸리게 되고 각 Cell에 대한 전압값은 양자화 과정을 통해 디지털 값으로 변환되어 메모리에 저장된다. 이 과정이 아래 그림에 나타나있다. 

 

 

 

 

카메라 안쪽에 위치한 2-D Array모습은 아래 그림과 같이 여러 개의 CCD 혹은 CMOS센서들이 촘촘하게 배열되어 있는 모습이다. 이때 빛의 3원색인 빨강, 초록, 파랑의 총 3가지 색깔의 빛 에너지를 흡수하는 센서들이 교차 배치되어 컬러 이미지를 형성하도록 한다. 각 센서는 해당 색깔만 통과시키는 필터가 있어서 해당 색깔 정보만 받아들이며, 이들의 컬러 조합으로 컬러 이미지가 만들어진다. 

 

 

 

Bayer pattern으로 불리는 2-D Array 센서. (이미지 출처: 위키 https://en.wikipedia.org/wiki/Bayer_filter)

 

 

 

그렇다면 2-D Array 센서가 이미지의 형성과 어떤 관계가 있을까? 2-D Array센서는 결과적으로 이미지의 품질(Quality)에 막대한 영향을 미치게된다. 2-D Array센서의 밀도가 높을수록, 즉 단위 면적당 센서의 개수가 많을 수록 이미지의 품질은 높아진다. 

우리는 흔히 디지털 카메라의 스펙을 이야기할 때 화소(picture element)를 이야기한다. 화소는 센서 Array 개개의 cell의 개수를 의미하는데, 예를 들어 1000만 화소라 하면 위 그림과 같은 센서 Array의 각 cell의 개수가 1000만개임을 뜻한다. 당연히 화소가 높을 수록 장면의 디테일한 부분까지 이미지에 표현되기 때문에 이미지의 품질에 큰 영향을 미친다. 카메라의 화소가 높다는 것은 결국 어떤 장면에 대한 빛의 패턴 신호를 높은 주파수(혹은 짧은 주기)로 샘플링 하는 것을 의미한다. 이와 관련하여 아래 그림을 참조 하여 이해를 해보자. 

 

 

 

센서 Array의 밀도에 따른 이미지 Quality. 왼쪽: 저밀도, 오른쪽 고밀도 센서 Array

꽃 이미지 출처: http://ccideas.com/chatter/high-resolution-images-vs-low-resolution-images-a-short-primer-for-beginners/

 

 

위 그림은 이미지 센싱을 위한 센서 Array의 밀도에 따른 이미지 품질을 나타낸 것이다. 왼쪽은 센서 Array의 밀도가 낮은 경우, 오른쪽은 고밀도 센서 Array를 이용해 이미지를 생성한 결과를 보여준다. 센서 밀도가 낮다는 것은 단위 면적당 각 Cell의 개수가 적은 것이고 그 만큼 촬영 대상 환경의 빛 에너지 패턴의 샘플링 주파수가 낮음을 의미한다. 

반대로 센서의 밀도가 높은 경우엔 단위 면적당 각 Cell의 개수가 많은 것이고 샘플링 주파수가 높기 때문에 원래의 이미지를 더 잘 복원하게 된다. 이때 한 cell에서 다음 cell까지의 거리를 샘플링 주기라고 생각하면 된다. 이러한 샘플링 과정이 x와 y축으로 동시에 존재하는 것이 2-D 센서 Array라고 생각하면 된다. 

 

그림의 아래쪽을 보면 dpi라고 표기된 부분은 dots per inch의 약자이며 1inch당 존재하는 정사각형(square)화소의 개수를 의미한다. 72 dpi는 1inch 길이의 라인에 존재하는 점이나 화소의 개수를 의미한다. 아래의 그림들은 dpi의 개념을 나타낸다. 

 

dpi별 이미지. 출처: http://www.tatge.biz/working-with-images-hi-res-vs-lo-res/

 

 

DPI(dots per inch)는 주로 프린터의 출력 분해능(resolution)을 표현하는데에 많이 사용되고 모니터나 이미지의 분해능(resolution)을 표현할 때는 PPI(pixels per inch)를 주로 사용한다. dpi에 따른 이미지를 잘 살펴보자. 

 

 

- 이미지 양자화(quantization)

 

이번에는 이미지의 양자화(Quantization)에 관해 알아보자. 

이미지 샘플링은 Array형태로 존재하는 이미지 센서를 통해 각 cell에 주사되는 빛 에너지의 양을 전압(voltage)으로 변환하여 저장하는 것을 의미한다. 이미지 양자화는 각 cell에서 변환한 전압값을 일정한 주기의 기준값에서 가장 근접한 디지털 값으로 매칭시키는 과정을 의미한다. 아래 그림을 보자. 

 

 

 

 

 

 

빛 에너지가 이미지 센서 Array에 다다르고, 빛의 강도와 파장에 따라 전압 값으로 변환된다. 여기 까지가 샘플링(sampling)단계이다. 이제 빛 에너지로부터 변환된 아날로그 전압값을 일정한 간격으로 나뉜 기준값들중 가장 가까운 값으로 matching이 이루어진다. 위의 양자화의 기본 개념 부분을 참고해보자. 결국 아날로그 전압값으로부터 적정 디지털 값으로 연결시키는 작업이 양자화(quantization) 단계이다. 이러한 기본적인 양자화 단계가 각 cell에 걸쳐 전반적으로 이루어지게 되고, 이를 통해 우리는 각 cell, 즉 이미지의 각 pixel에 대한 강도 값(intensity)을 얻을 수 있다. 

 

샘플링에서부터 양자화를 거쳐 최종적인 이미지를 얻기 까지는 굉장히 복잡한 단계를 거치게 된다. 이번 포스팅에서는 이 복잡한 과정중 샘플링과 양자화의 관점에서만 설명한 것이지 이면에는 굉장히 복잡한 과정들이 숨어있다. 

 

디지털 이미지의 양자화는 다양한 Level로 구성할 수 있다. 즉 전압값을 양자화할 때 몇 개의 간격으로 잘라서 디지털 값으로 매칭을 시킬지를 결정하는 것이다. 필자가 개인적으로 좋아하는 League of Legend의 베인 캐릭터 그림을 이용해 양자화 Level에 따른 결과이미지를 출력해 보았다. 쉬운 이해를 위해 흑백 이미지를 이용하여 구현하였다. 

 

 

L은 양자화의 Level을 의미하며 검은색으로부터 흰색에 이르는 밝기의 변화를 몇 단계로 자를지를 결정하는 것이다. L=4일 경우 4단계로 쪼개서 밝기 값을 표현하는 것이다. 흑백(gray-scale)영상에서 L은 2의 거듭제곱으로 표현되며 최대값은 256이다. 이는

을 의미하며 0~255까지의 밝기 값을 표현한다. 따라서 이미지의 한 pixel당 1Byte로 밝기 값을 표현한다. 

 

L=2인 이미지를 바이너리 이미지(binary image)라 부른다. 흑과 백 단 두 가지 밝기 값만을 이용해 이미지를 표현한 것이다. 이러한 바이너리 이미지는 영상처리에서 segmentation, 모폴로지 연산 등 특수한 상황에 사용되는 이미지이다. 

 

결과적으로 양자화 Level이 높을 수록(더 세밀하게 잘라서 밝기값 혹은 컬러값을 표현할수록) 원래의 영상(장면)에 가깝게 이미지가 표현되는것을 볼 수 있다. 

 

아래는 이미지 양자화의 단계별 영상을 출력하는 MATLAB 코드이다. 

 

 

 

1. 이미지 센싱과 획득(Image Sensing and Acquisition)

 

우리가 흔히 접하는 대부분의 이미지는 광원(illumination source)이 어떤 사물에 주사되고, 사물에 반사된 빛 에너지를 센서를 통해 흡수하여 이미지를 만들게 된다. 일반적으로 생각하면 광원은 햇빛, 촬영할때 사용하는 조명 등이 있을 수 있다. 

 

우리가 흔히 볼 수 있는 대부분의 이미지는 "광원"과 그 광원 에너지가 도달한 환경에 대해 흡수되거나 반사된 에너지의 센싱의 조합으로 만들어진다. 여기서 중요한 것 두 가지가 바로 광원(illumination source)장면(scene)이다. 광원으로는 일반적으로 햇빛이나 형광등, LED조명과 같은 눈에 보이는 광원도 있지만, 좀 더 넓게 보면 전자기 에너지(Electromagnetic Energy Source), Radar, 적외선(infrared), X-Ray 등이 있고 심지어는 초음파(ultrasonic waves)나 컴퓨터로 생성한 패턴 광원이 될 수도 있다. 

 

장면(scene)의 경우에도 우리 주변에서 흔히 볼 수 있는 책상, 컵 등의 물건이 될 수도 있지만, 마찬가지로 좀 더 넓게 보면 분자(molecule), 암반층(buried rock formations), 심지어는 인간의 뇌도 하나의 대상이 될 수 있다. 

 

광원은 그 특성에 따라 광 에너지가 대상 물체에 반사(reflection)될 수도, 혹은 대상 물체를 통과(pass through)할 수도 있다. 전자의 예는 가시광선(햇빛)이 물체에 반사되어 우리 눈에 들어옴으로써 사물을 인지할 수 있는 것이고, 후자의 예는 X-Ray가 인체를 투과하면서 인체 장기의 구조나 형상에 대한 이미지를 만들어 내는 것이다. 전자현미경(Electron microscopy)이나 감마 이미징(Gamma Imaging)이 이러한 예가 되겠다. 

 

 

 

 

- 단일 센서(single sensor)를 활용한 이미지 획득: 

 

아래 그림은 단일 센서의 구조를 보여준다. 아마 이 세상에서 가장 익숙한 형태는 포토다이오드(photo diode)일 것이다. 포토다이오드는 실리콘 물질로 만들어져 있고 출력 voltage 파형은 빛의 크기에 비례한다. 즉 더 많은 양(더 센)의 빛이 들어올수록 더 높은 출력 voltage가 나온다. 

센서 앞에 있는 filter는 빛을 band별로 걸러서 선택적으로 빛 압력을 받게끔 한다. 예를 들면 Green filter가 위치할 경우 이 filter에 의해 Green band영역의 빛만 대부분 들어오고 나머지 band(red, blue, ...)의 빛은 대부분 걸러진다. 결과적으로 이 센서의 출력은 가시광선 스펙트럼에서 다른 영역의 빛 보다 Green 대역의 빛에 더 민감해진다. 

이에 대한 자세한 내용은 다크프로그래머님 블로그에 잘 정리 되어 있으니 참고하시라. 링크: http://darkpgmr.tistory.com/97

 

단일 센서(single sensor)의 구조, 포토다이오드

 

 

 

이러한 단일 센서만 가지고도 이미지를 얻을 수 있다. 하지만 그러기 위해선 특별한 장치가 필요하다. 아래 그림은 단일 센서를 이용해 이미지를 획득하는 장치이다. Drum에 스캔할 필름이 부착되어있고, 이 필름(film)을 리드 스크류(Lead screw)에 부착된 센서가 drum의 축방향(x-direction)으로 스캔을 한다. 한 라인의 스캔이 끝나면 drum이 x축을 중심으로 회전하여 필름을 y축 방향으로 움직여서 다음 줄을 스캔하게 된다. 

 

 

 

센서를 1개만 사용한다는 점에서 저렴할 수는 있으나 속도는 굉장히 느리다. 오히려 센서의 가격이 저렴할 경우 기계 장치로 인해 더 비싸질 수 있다. 이와 비슷하게 drum이 아닌 평평한 bed를 사용해 x, y방향으로 스캔하는 장치도 있다. 이와 같은 장치를 microdensitometers라 한다. 사전의 해석으로는 미소 농도계라고 나와있으나 뭔가 적절한 해석은 아닌 것 같다.

 

 

 

- Sensor strip을 활용한 이미지 획득:

 

단일 센서는 적은 센서로 이미지를 얻을 수 있다는 장점이 있으나 너무 느리다. 이보다 더 잘 쓰이는 방식은 sensor strip을 사용하는 것이다. 이는 아래 그림과 같이 단일 센서 여러 개를 이어 붙여 하나의 Line sensor형태를 띈다. 한 번에 line 전체를 스캔하기 때문에 단일 센서 방식에 비해 훨씬 빠르다. 

 

 

아래 그림은 대부분의 flat bed scanner에 사용되는 sensor strip의 형태이다. 

 

 

 

이러한 In-line sensor strip방식은 항공 사진에 응용되기도 한다. Line sensor를 붙인 항공기가 일정한 고도에서 일정한 속도로 움직이며 특정 지역을 스캔한다. 한 번에 한 line의 이미지를 스캔하고, 스캔한 line을 합쳐 2차원 이미지를 완성시키는 방식이다. 

 

Sensor strip방식은 또한 의료분야나 산업현장에서 3차원 물체의 단면(cross-sectional)을 얻기 위해 사용되기도 한다. Ring 구조의 안쪽 벽면에 X-Ray와 같은 광원이 부착되고 반대 벽면을 포함한 나머지 면에 센서들이 부착되어 있는 구조다. 아래 그림은 이러한 장치의 구조를 나타낸다. 

 

 

 

Ring의 한쪽 벽면에 장착된 X-Ray source에서 X-Ray를 방출하고, 물체를 통과하여 반대편 센서에 다다른다. 이는 의료나 산업현장에서 사용되는 CAR(Computerized Axial Tomography)의 기본적인 형태이다. 이렇게 하나의 단면을 획득한 후 물체를 Ring의 축 방향으로 한 step 이동시킨 후 다음 단면 이미지를 얻는다. 이렇게 3차원 물체의 단면 스캔을 마친 후 이미지들을 정합하여 하나의 3D volume이미지를 얻기도 한다. 광원(illumination source)이나 센서의 타입은 다르지만 MRI(Magnetic Resonance Imaging), PET(Position Emission Tomography)과 같은 장치도 기본적인 매커니즘은 매우 비슷하다. 

 

 

 

- Sensor 배열을 활용한 이미지 획득:

 

아래 그림은 단일 센서 여러 개를 붙여 센서 배열을 만든 모습이다. 

 

 

다수의 전자기(Electromagnetic) 혹은 초음파(ultrasonic waves) 센싱 장치들이 이 구조를 사용한다. 대표적인 예가 디지털 카메라에 사용된 CCD(Charge-Coupled Device)센서 Array인데 보통 가로 세로 각각 4000개 이상의 센서들로 구성된다. 2-D Array 방식의 가장 큰 장점은 에너지 패턴 자체를 센서 Array에 집속시켜 이미지를 한 번에 획득하기 때문에 센서의 Motion을 위한 장치가 따로 필요 없다는 것이다. 아래 그림은 Array 센서를 활용해 이미지를 획득하는 모습을 나타낸 것이다. 

 

 

 

 

먼저 광원으로부터 빛 에너지(Illumination source)가 방출되어 나온다. 방출된 빛 에너지는 어떤 물체(Scene element)에 다다르게 되고 반사된다(앞서 언급했듯 물체의 특성, 혹은 광 에너지의 특성에 따라 일부는 물체를 투과하기도 한다). 반사된 빛이 Imaging system에 도달한다. Imaging system은 입사되는 에너지들을 모아 image plane에 집중시킨다. 

 

입사되는 에너지가 빛의 형태라면, 가장 먼저 마주하는 대상은 렌즈(lens)다. 렌즈(볼록 렌즈)에 다다른 빛은 한 점으로 모이게 되는데, 이 점을 focal point라 한다. 이 focal point를 지나면 image plane(focal plane)이 있고 여기에 상이 맺히게 된다. 여기 상이 맺히는 부분에 바로 CCD센서 Array가 있다. 이 CCD센서를 통해 대상 물체에 반사된 빛 에너지는 전기 신호(voltage)로 변환 되고 양자화(Quantization)과정을 거쳐 디지털 이미지(Digitized Image)가 생성되는 것이다. 

 

위에서는 간단히 설명했지만 실세계 장면을 디지털 이미지로 만드는 과정은 매우 복잡한 단계를 거쳐서 생성된다. 이를 위해선 핀홀 카메라 모델(pin-hole camera model)을 통한 World to Pixel coordinate의 변환 과정, 양자화(Quantization) 과정 등 보다 자세한 설명이 필요하다. pin-hole camera model을 통한 이미지 좌표 변환 과정은 향후 multiple view geometry책에 대한 포스팅을 할 때 좀 더 자세히 설명하도록 하고, 양자화에 관한 내용은 다음 포스팅에서 언급하도록 하겠다. 

 

 

 

2. 간단한 이미지 형성 모델(A Simple Image Formation Model)

 

앞서 실세계 장면을 디지털 이미지로 만드는 과정은 매우 복잡하다고 언급하였다. 이번 포스팅에서는 광원과 이미지 획득에 대한 내용을 다루고 있으므로 그 복잡하고 수많은 과정 중에서 에너지 관점에서 간단한 이미지 형성 모델을 이야기 할까 한다. 

 

우리는 지난 포스팅에서 아래와 같이 이미지를 x와 y좌표로 표현할 수 있는 2차원 함수로 정의 하였다. 

 

 

이 함수가 의미하는 f는 (x, y)좌표에 있는 어떤 값, 혹은 진폭(amplitude)이라 할 수 있는데, 항상 양수이고 이미지의 형성 과정에서 결정된다. 이 값은 이미지 형성 과정의 물리적 단계, 즉 광원에서 나온 빛이 물체에 반사 되고, 반사된 빛이 렌즈를 거쳐 센서에 도달 하여 전압(voltage)값이 출력 될 때 계산된다. 이때 이 전압 값은 센서로 방사되는 에너지(ex. electromagnetic waves)의 크기에 비례한다. 따라서 이 f값은 반드시 0보다 커야 하며 유한하다. 

 

 

 

함수 f(x, y)는 조명 성분반사 성분의 두 가지 컴포넌트들로 구성된다. 

조명 성분(illumination)은 카메라에 보이는 장면에 주사되는 광원의 총량을 의미한다. 

반사 성분(reflectance)은 카메라에 보이는 장면에 있는 물체에 반사되는 빛의 총량을 의미한다. 

이들 조명 성분과 반사 성분은 각각 i(x, y), r(x, y)로 표기하며, 함수 f(x, y)는 두 함수의 곱으로 표현한다. 

 

 

반사 성분 r(x, y)의 범위는 0 ~ 1 사이로 한정되는데, 0의 경우엔 대상 물체가 주사된 광원을 전부 흡수한 경우이고, 1의 경우엔 광원을 전부 반사한 경우이다. 조명 성분 i(x, y)는 광원(illumination source)에 의해 결정되고, 반사 성분 r(x, y)는 대상 물체의 특성에 따라 결정된다. 즉 조명을 강하게 할 수록 조명 성분 값이 커질 것이고, 대상 물체가 유리나 거울과 같이 빛을 많이 반사하는 물질인 경우 반사 성분 값이 커질 것이다. 

 

좀 더 실질적으로 설명하자면 디지털 이미지의 각 픽셀(pixel)의 밝기 강도는 조명 성분과 반사 성분으로 구성되어 있다고 말할 수 있다. 

이러한 법칙은 광원이 물체를 반사하는 것이 아닌 X-Ray와 같이 광원이 물체를 투과(transmission)하는 경우에도 동일하게 적용될 수 있다. 이때는 이미지 형성 모델을 물체의 반사율(reflectivity)이 아닌 투과율(transmissivity)을 본다. 즉 r(x, y)이 반사율이 아닌 투과율을 의미하게 된다. 값의 범위는 0~1사이로 같다. 

 

 

- Examples of illumination and reflectance values:

 

조명 성분과 반사 성분에 대한 예를 들어보겠다.  모든 값들은 절대적이지 않으며 평균적인 값들이다. 

먼저 조명 성분에 내한 예이며, 단위는 lumen이다. 

 

Situations  Value 
 
 날씨가 좋은 날 낮에 태양의 지구 표면에 대한 빛의 강도  
 날씨가 흐린 날 낮에 태양의 지구 표면에 대한 빛의 강도  
 날씨가 좋은 날 에 이 산출하는 지구 표면에 대한 빛의 강도  
 일반적인 사무실 내의 빛(조명)의 강도  

 

 

 

다음은 반사 성분 r(x, y)에 대한 예이다. 범위는 0~1사이의 값이며 1에 가까울 수록 반사율이 높다. 

 

 Material Name Reflectivity
 검은 벨벳(black velvet) 0.01 
 스테인리스 스틸(Stainless steel) 0.65 
 흰색 페인트가 칠해진 벽(flat-white wall) 0.80 
 은 도금된 금속(silver plated metal) 0.90 
 눈(snow) 0.93 

 

 

지난 포스팅(#디지털 영상 처리를 활용하는 분야의 예시)에서 전자기 스펙트럼(Electromagnetic Spectrum)을 잠깐 다루었다. 이번 포스팅에서 이를 좀 더 자세히 살펴보자. 


- 전자기 스펙트럼(Electromagnetic Spectrum): 


1666년 아이작 뉴턴(Issaac Newton)은 햇빛이 단순히 흰색 빛이 아니라 연속적인 컬러스펙트럼으로 구성된다는 것을 프리즘을 통과했을 때 보라색부터 빨간색까지 연속적인 컬러 스펙트럼이 만들어지는 현상을 통해 발견하였다. 아래 그림과 같이 이 보라색부터 빨간색까지의 범위를 가시광선이라 하는데, 우리 눈에 보이는 영역을 의미한다. 그림에 보여지는 것과 같이 이 가시광선 영역은 전체 전자기 스펙트럼에서 아주 작은 부분에 해당한다. 우측 끝엔 라디오(Radio)파가 위치해 있고 가시광선 역역에 비해 파장이 수십억배 길다. 반대로 좌측 끝엔 감마선(Gamma Ray)이 있으며 가시광선에 비해 파장이 수백만배 짧다. 아래 그림을 참고하자. 





전자기 스펙트럼은 파장(wavelength), 주파수(frequency) 로 표현된다. 이러한 파장과 주파수의 관계는 아래 식과 같이 표현된다. 람다는 파장을, 주파수는 v, c는 광속을 각각 의미한다. 




전자기 스펙트럼의 에너지는 주파수에 특정 상수를 곱하여 표현하는데, 아래 식과 같다. 




여기서 h는 Plank's 상수이다. Plank's상수는 입자의 에너지와 진동수의 비를 나타낸 상수로써 h=E/f로 정의 된다. 양자역학의 기본 상수 중 하나이다. (출처: 위키백과)


각 요소의 단위는 다음과 같다. 




전자기파는 사인파(sinusoidal waves)를 람다(lambda)길이 만큼의 파장으로 전파시키는 것으로 볼 수 있다. 혹은 질량이 없는 입자(particles)들의 흐름(stream)으로써 wave형태의 패턴으로 빛의 속도로 움직이는 것으로 생각할 수도 있다. 

람다(lambda)는 사인파의 주기를 뜻하는 것으로 사인파는 똑같은 패턴의 신호가 주기적으로 나타나는 형태이다. 즉 처음 나타난 패턴의 한 점이 다시 나오기까지 걸리는 시간을 의미한다. 




각 무질량 입자(massless particles)들은 어느 정도의 에너지 덩어리를 가지고 있는데, 각 덩어리 에너지를 우리는 광자(photon)라 부른다. 에너지에 대한 얘기를 해보자면 에너지는 식(2)에 정의되어 있는데, 에너지는 주파수에 비례함을 식(2)로부터 알 수 있다. 즉 주파수(frequency)가 높을 수록(주파수가 높으면 주기는 짧아짐) 광자가 더 많은 에너지를 갖게 된다. 따라서 라디오파는 가장 낮은 에너지를 가지고, 적외선(infrared), 가시광선(visible), 자외선(ultraviolet), X선(X-ray), 감마선 순으로 높은 에너지를 갖는다. 이를 통해 우리는 왜 감마선이 인체 조직에 위험한지를 알 수 있다. 높은 에너지를 가진 감마선이 인체를 투과하며 조직을 파괴하거나 변형시키는 등 인체에 위험을 초래할 수 있다. 




- 가시광선(Visible Ray):


빛은 우리 눈에 감지가 되는 특수한 형태의 전자기 방사(electromagnetic radiation)이다. 우리 눈에 보이는 빛 영역인 가시광선은 위 그림에서 색깔로 처리되어 확대하여 나타나 있다. 가시광선 영역은 파장의 길이가 약 0.43μm(보라색) ~ 0.79μm(빨간색)에 걸쳐 분포해 있다. 에너지가 강한 순서대로(주파수가 높고 파장이 짧은 순서) 나열해보면 보라, 파랑, 초록, 노랑, 오렌지색, 그리고 빨간색의 순으로 분포하며, 색의 변화는 연속적으로 변한다. 무지개 색을 떠올리면 쉽게 연상이 될 것이다. 



Image Reference: http://www.gridgit.com/post_light-reflection-diagram_14728/



인간은 눈으로 어떤 물체의 형태와 색깔을 인지할 수 있는데, 이러한 물체의 색깔은 물체가 반사하는 고유의 특성에 따라 인식된다. 쉽게 말해 물체의 표면 특성에 따라 전자기 스펙트럼의 영역에서 반사하는 정도가 다른 것이다. 예를 들어 초록색이 있다고 가정했을 때, 이 물체가 초록색으로 보이는 것은 공의 몸체가  500~570 nm 파장 영역의 빛을 주로 반사하는 반면, 다른 파장의 빛에너지는 대부분 흡수하기 때문이다. 위 그림에 보이는 사과가 빨갛게 보이는 까닭도 같은 이유에서다. 모든 파장의 빛을 고르게 반사하는 물체는 흰색으로 보인다. 



- 단색광(monochromatic light):


색깔이 없는 빛을 우리는 단색광(monochromatic light)이라 한다. 이러한 단색광이 가지는 유일한 속성은 바로 빛의 밝기 강도(intensity)이다. 단색광은 우리 눈에 검은색에서 점차적으로 회색, 그리고 흰색으로 변하는 것으로 인식되기 때문에 보통 gray level이라는 용어가 이 단색광의 밝기 강도를 나타내기 위해 사용된다. 결국 intensity와 gray level은 같은 의미이다. 이렇게 검은색에서 회색, 그리고 흰색으로 변하는 범위를 우리는 gray scale이라고 하며, 이러한 gray scale을 사용하는 흑백 이미지를 gray scale image라고 부른다. 



- 유색광(chromatic light):


유색광은 전자기 스펙트럼에서 대략 0.43μm(보라색) ~ 0.79μm(빨간색) 파장의 영역에서 분포한다. 유색광은 주파수와 함께 다음의 세 가지 요소들로 설명될 수 있다.


복사휘도(Radiance): 광원으로부터 흐르는 에너지의 실제 총량. 보통 와트(W, watts) 단위로 측정됨

발광휘도(Luminance): 관찰자가 감지할 수 있는 광원으로부터 흐르는 에너지의 양. 루멘스(lm, lumens) 단위로 측정됨

명도(Brightness): 인간이 느끼는 주관적인 빛의 밝기. 정확히 측정하기는 어렵다. 컬러 정보의 느낌을 기술하는데에 있어 핵심 요소임


위의 말을 토대로 판단해보자면 복사 휘도와 발광 휘도의 개념이 조금 헷갈릴 것이다. 이와 관련된 예를 들어보자. 


어떤 광원으로부터 얼마간의 적외선(infrared)이 방출되었다. 이 광원으로부터 나온 빛은 얼마의 에너지, 즉 복사휘도(Radiance) 에너지를 가지고 있다. 그러나 관찰자는 이를 감지할 수 없었다. 이때의 발광휘도(Luminance)는 거의 제로에 가깝다. 즉 복사휘도와 발광휘도를 나누는 기준은 관찰자(사람)가 감지할 수 있느냐 없느냐에 달려있는 것이다. 정리하자면 복사휘도는 방출한 빛 에너지의 실제 총량을, 발광휘도는 관찰자를 기준으로 관찰자가 감지할 수 있는 빛 에너지의 총량을 나타내는 것이다. 



- X선과 감마선(X-rays and Gamma radiation):


가시광선에 이어서 전자기 스펙트럼에서 높은 에너지를 가지는 영역을 살펴보자. 좌측 끝에는 X선(X-rays)과 감마선(gamma radiation)이 위치해 있다. 감마선은 의료, 우주, 원자력환경에서 중요한 역할을 한다. X선도 Hard(High energy)와 Soft(Low energy)의 경우로 나눌 수 있는데, Hard의 경우 산업현장에서, Soft의 경우 의료 분야에서 흉부나 치과 치료를 위한 이미지를 촬영하는데 사용된다. 


이 밖에도 전자레인지에 사용되는 마이크로파(Microwaves), TV와 라디오에 사용되는 라디오파(radio wave)등이 있다. 



비록 대부분의 이미지들이 전자기파에 의해 방출되는 에너지에 의해 형성된다곤 하지만, 어떤 이미지를 형성하기 위한 방법은 이것이 전부가 아니다. 예를 들면 물체로부터 반사되는 소리로부터 이미지를 형성하는 초음파 이미지(ultrasonic images)가 있다. 또한 전자현미경(electron microscopy)의 전자빔(electron beams)에 의해 형성된 이미지, 그래픽스(graphics)에 의해 합성된 이미지 등도 이러한 예 중 하나 이다. 


시각 인지의 요소(Element of Visual Perception)

 

비록 디지털 영상처리라는 학문이 수학과 확률론적 이론을 토대로 만들어 졌지만, 그 근간에는 인간의 직관과 분석력, 그리고 인지 매커니즘이 있다. 그러므로 인간의 시각적 인지 방법을 이해하는 것은 중요하다. 하지만 이 주제는 굉장히 방대하고 복잡하여 모든 부분을 다룰 순 없다. 따라서 이번 포스팅에선 이미지가 어떻게 형성이 되고 이를 인간이 어떻게 인지하는지에 대한 매커니즘을 공부해 보도록하자. 또한 인간의 시각 및 인지력의 물리적 한계를 디지털 영상처리와 관련하여 이해해보도록 하자. 

 

 

 

1. 인간 눈의 구조(Structure of Human Eye)

 

잠시 해부학 공부를 해보자. 아래 그림은 인간의 눈의 단면을 나타낸 것이다. 모양은 구체에 가깝고 평균 지름은 대략 20mm정도이다. 총 3개의 막이 눈을 에워싸고 있는데, 각막(cornea)공막(sclera)이 외부를 감싸고, 맥락막(choroid) 그리고 망막(retina)순으로 위치해 있다. 

 

 

 

 

각막은 앞쪽의 표면을 덮는 거칠고 투명한 조직이다. 각막과 이어져 눈의 나머지 전체를 덮고 있는 공막은 불투명한 막이다. 맥락막은 공막 바로 아래에 위치해 있으며, 눈에 영양분을 공급하는 혈관 조직을 가지고 있다. 이 맥락막은 아무리 작은 상처라도 눈에 혈액공급을 원할하게 하지 못하는 염증(inflammation)을 일으켜 눈에 손상을 입힐 수 있다. 맥락막은 두꺼운 색소층을 가지고 있어 관련없는 빛이 눈에 들어오는 것을 줄여주고 눈 안쪽 전체로 후방산란(backscatter)시킨다. 

 

이 막의 앞쪽 끝단에서 맥락막은 모양체(ciliary body)홍채(Iris)로 나뉜다. 홍채는 눈으로 들어오는 빛의 양을 늘리거나 줄이는 조절 기능을 한다. 홍채의 개방(동공: pupil) 정도는 대략 지름 2~8mm 범위에서 열리고 닫힌다. 홍채의 앞쪽 부분은 색소층을 가지고 있고 뒤쪽은 검은 색소를 띄고 있다. 

 

렌즈(lens)는 섬유세포(fibrous cell)들이 동심원을 이루어 여러층으로 이루어져 있으며 섬유질에 의해 모양체에 붙어있다. 60~70%의 물, 6% 정도의 지방, 그리고 눈의 다른 조직들에 비해 보다 많은 단백질로 구성되어 있다. 렌즈는 약간 노란색을 띄고 있으며 나이가 들 수록 노란 색소가 증가한다. 극단적인경우 백내장(cataract)에 의한 렌즈 혼탁이 와서 색깔 구분 능력을 떨어트리고 시야를 흐리게 만든다. 렌즈는 가시광선 스펙트럼 영역의 약 8%를 흡수하며 짧은 파장(wavelength)에서 상대적으로 높은 흡수율을 보인다. 적외선과 자외선 모두 렌즈 구조 내의 단백질에 의해 상당량 흡수 되며, 과도할 경우 눈에 손상을 입히게 된다. 

 

눈의 가장 안쪽에 존재하는 막은 망막(retina)으로써 안쪽 벽 전체를 차지하고 있다. 눈의 초점이 적절하게 맞을 경우, 외부 사물의 빛이 망막에 맺혀 이미지를 형성하게 된다. 망막의 표면엔 빛의 수용기(light receptor)가 다수 분포해 있어 패턴화된 시각(pattern vision)을 만들어 낼 수 있다. 눈의 망막에는 추상체(cones)와 간상체(rods)로 알려진 두 가지 종류의 빛 수용체가 있다.

추상체는 대략 600~700만개가 존재하며 주로 와(fovea)로 불리는 망막의 중심부에 위치해 있다. 추상체는 색깔에 굉장히 민감하며 인간은 주로 이 추상체를 이용하여 상세한 부분을 처리할 수 있다. 이는 각 추상체가 고유의 신경 말단에 연결되어 있기 때문이다. 

눈의 근육들은 눈의 회전눈의 회전을 제어하며 관심영역의 물체가 와(fovea)에 오도록 한다. cone vision을 명소시(photopic or bright-light vision)라고도 부른다. 

 

간상체(rods)의 수는 추상체에 비해 훨씬 많으며 7,500만개 ~ 1억 5천만개가 망막 표면에 분포해 있다. 간상체의 넓은 분포와 몇 개의 간상체가 하나의 신경 말단에 연결되어 있기 때문에 디테일한 부분의 처리 보다는 전체적인 이미지를 인식하는데 사용된다. 간상체는 색상 인지나 처리에는 관여하지 않고 저 조도에 민감하다. 예를 들어 햇빛에서는 다양한 밝은 색상으로 보였던 물체가 달빛 아래에서는 색깔이 없는 물체로 보이는 현상이 있는데, 이는 오직 저조도에 민감한 간상체만 자극받기 때문이다. 이러한 현상을 암소시(scotopic or dim-light vision)라 한다. 

 

 

아래 그림은 눈에서 시신경이 출현하는 지역에서 추상체와 간상체들의 밀도를 그래프로 나타낸 것이다. 

 

 

            (cones: 추상체, Rods: 간상체)

 

그래프를 보면 아예 없는 부분이 있는데 이를 blind spot이라 한다. 이 부분을 제외하곤 수용기들의 분포는 와(fovea)를 중심으로 반지름 방향으로 대칭이다. 수용기 분포는 fovea로부터 각도 단위로(degree)측정되었다. 그래프를 보면 추상체는 망막의 중심부인 와에서 가장 밀도가 높다. 간상체는 중심부로부터 약 20도 까지는 증가하다가 Blind spot을 제외하곤 바깥으로 갈 수록 줄어드는 경향을 보인다. 

 

와(fovea)는 망막에 있는 지름 1.5mm정도의 원형 자국이다. 하지만 앞으로는 이를 정사각형, 혹은 사각형 형태의 센서 배열(sensor array)로 간주하고 설명할 것이다. 그 편이 더 이해하기 쉽고 유용하다. 우리는 앞으로 이 와(fovea)를 1.5mm x 1.5mm 크기의 센서 배열로 생각하자. 추상체의 밀도는 망막의 중심부에서 대략 150,000/mm^2 이다. 이러한 수치를 기반으로 추정해 봤을 때 눈에서 가장 예민한 부분의 추상체의 개수는 약 337,000개 이다. 

이러한 원시분해능 측면에서 보면 CCD(Charge-Coupled Device) imaging chip의 센서 개수는 중간 정도의 분해능 성능의 경우 5mm x 5mm 크기에서 이 정도가 된다. 디지털 영상 처리를 위한 이미지 센서등은 결국 인간의 시각 장치의 매커니즘을 분석하여 만들어진 것이다. 

 

 

 

 

 

2. 눈에서의 이미지 형성(Image Formation in the Eye)

 

일반적인 카메라의 경우 focal length(렌즈와 Image plane사이의 거리)는 고정되어 있다. 우리가 focusing이라고 부르는 것은 바로 이 Image plane(film 혹은 Digital Camera의 경우 imaging chip)과 렌즈사이의 거리를 맞추는 것이고, 물체와 카메라로부터의 거리에 따라 우리는 이 focus를 맞추어 선명한 물체 영상을 얻는 것이다. 

인간의 눈의 경우엔 정 반대이다. 렌즈와 상이 맺히는 영역(imaging region, retina)은 고정되어 있고, focus를 맞추기 위한 작업은 렌즈의 모양을 변형시켜 맞추게 된다. 이때 모양체(ciliary body)에 있는 섬유질(fibers)이 렌즈의 모양을 평평하게 혹은 두껍게 변형시켜 멀거나 가까운 물체를 잘 볼 수 있도록 한다. 아래 그림은 우리 눈에 사물이 어떻게 투영되는지를 아주 간단하게 나타낸 그림이다.  

 

 

 

위 그림에서 C는 초점이 모아지는 렌즈의 중심점(optical center of the lens)이고, 이 렌즈의 중심점으로부터 상이 맺히는 망막까지의 거리는 대략 14~17mm정도이다. h는 외부의 이미지가 망막에 형성되었을 때 그 크기를 나타낸 것이다. 

 

다음과 같은 가정을 해보자. 어떤 사람이 100m 떨어져 있는 15m크기의 나무를 바라본다고 가정해보자. 이때 눈의 망막에 맺힌 나무의 크기는 얼마가 될 것인가? 결국 h를 알아내는 문제이다. 우리는 이 문제를 비례식을 이용해서 풀 수 있다. 렌즈 중심점 C를 중심으로 이미지가 맺히는 망막까지의 거리(focal length)를 17mm, 사물까지의 거리를 100m, 사물의 크기를 15m라고 하자. 이를 간단히 비례식으로 나타내면 15:100=h:0.017이다. 0.017은 mm를 m단위로 바꾸어 써준 것이다. 계산해보면 h는 2.55mm가 나오는 것을 알 수 있다. 

 

앞서 언급했듯이 이미지는 가장 먼저 와(fovea)에 맺히게 된다. 인지 과정은 빛 수용체의 상대적 전기 자극에 의해 일어나는데, 복사에너지(radiant energy)를 전기적 임펄스 신호로 과정이 먼저 이루어지고 이러한 전기 신호들은 최종적으로 뇌에 전달되어 그 의미를 해석하게 된다.

 

 

 

 

 

3. 밝기 적응과 식별력(Brightness Adaptation and Discrimination)

 

디지털 이미지는 이산적인 밝기 값들로 표현이 되기 때문에, 서로 다른 밝기 값을 구별해내는 눈의 능력은 영상 처리 결과를 표현하는데에 있어 고려할만한 요소이다. 인간이 적응할 수 있는 밝기 변화는 생각보다 엄청난데, 암소시 한계점(scotopic threshold)에서부터 대략 10의 10승 정도의 밝기 범위를 구분이 가능하다. 다시 말하면 가장 어두운 밝기에서 가장 밝은 단계를 부분할 수 있는 범위가 10의 10승이라는 소리다. 

 

실제 실험에 의해 검증된 인간의 시각 시스템에 의해 인지된 밝기, 일명 주관적 밝기(subjective brightness)는 로그 함수로 나타낼 수 있다. 아래 그림은 이에 대한 결과 그래프이며 빛의 실제 세기에 대해 인간이 인지한 주관적인 밝기의 정도(subjective brightness)를 나타낸 것이다. 

 

 

그래프에서 암소시(scotopic) 부분을 보면 로그 함수 그래프와 같은 형태를 보이는 것을 알 수 있다. 즉 실제 밝기 변화가 많이 일어났다고 하더라도 인간은 그것을 실제보다 더 작은 변화로 인지한다는 뜻이다. 다음으로 명소시(photopic)부분을 살펴보자. 명소시 부분만 놓고 봤을 때, 범위는 약 10의 6승 정도이다. 암소시에서 명소시로의 전환은 점차적으로 이루어지는데, 범위는 대략 0.001 ~ 0.1 mililambert(log scale로는 -3 ~ -1 mL이다)이고 두 개의 curve가 겹치는 부분이 이 변환 부분이다. 

 

여기서 한 가지 눈여겨 봐야 하는 것은 인간의 시각 시스템은 이렇게 동적으로 변환되는 범위에서 동시에 작동하지 않는다는 것이다. 오히려 전체 감각을 변화시켜 이러한 큰 변환을 달성한다. 즉 어두운 상황에서 암소시 시스템이 작동하다가 점점 밝아져서 명소시 시스템이 겹쳐서 발생하는 상황이 오면 그때는 명소시 시스템이 작동하게 된다. 이를 밝기 적응(brightness adaptation)이라 한다. 또한 어떤 주어진 조건하에서 시각 시스템의 현재의 감각 단계를 밝기 적응 단계(brightness adaptation level)라 한다.  

 

특정 적응 단계에서 밝기 강도가 변하는 것을 구분하는 눈의 능력 또한 중요한 것 중 하나이다. 이에 대한 전형적인 실험이 있다. 다음을 상상해보자. 피험자가 평평하고 똑같은 밝기로 발광하는 어떤 패널을 바라보는 것이다. 이 영역은 피험자의 시야(field of view)를 전부 커버할 정도로 충분히 크고, 재질은 불투명한 유리로 되어있으며 유리의 뒤쪽에서 밝기$I$의 크기로 빛을 변화시켜가며 비춘다. 여기에 기존 밝기 대비 변화량인 $\Delta I$가 짧은 순간동안 패널의 중심부에 원형 형태로 나타난다. 아래 그림은 이 실험에서 패널 부분을 나타낸 것이다. 

 

 

 

 

$\Delta I$가 작으면 피험자들은 밝기 변화를 인지하지 못하고, $\Delta I$가 커질 수록 피험자들은 밝기 변화를 감지하게 된다. 이렇게 변화를 감지하기 위해선 기존의 밝기 값 $I$로 부터의 변화량 $\Delta I$가 충분히 커야하는데, 이를 weber ratio라고 한다. 쉽게 말해 10cm의 막대가 있는데, 10.01cm로 길이가 늘었을 때 막대의 길이가 변화했다는 것을 알아차리기는 매우 어려울 것이다. 그렇다면 원래 길이 대비 얼마만큼 늘어야 길이 변화가 감지되는지를 알아내는 것이 weber ratio의 목적이다. 

 

 

 

 

${\Delta I \over I}$ 값이 작으면 작은 변화량이 요구되고, 반대로 값이 크면 큰 변화량이 요구되는 것이다. 아래 그림은 밝기 값 $I$에 대한 weber ratio의 그래프를 log scale로 그린 것이다. 어두울수록 weber ratio값이 크고 밝아질수록 그 값이 작다. 이 말은 어두울 땐 밝기 변화를 알아차리기 어렵고 밝을 수록 상대적으로 쉽다는 것이다. 그래프가 두 개인 것은 어두울 때는 rods에 의해(암소시), 밝을 때는 cones에 의해(명소시) 밝기 변화를 인지한다는 것이다. 

 

 

밝기 인지에 대한 약간 다른 얘기를 해보자. 다음의 두 가지 현상은 밝기 인식이 단순히 밝기에 대한 함수가 아님을 증면한다. 첫 번재는 인간의 시각 시스템이 밝기가 다른 경계면 부분에서 undershoot 혹은 overshoot가 일어난다는 것이다. 아래 그림에서 세 번째의 perceived intensity부분에서 보면 이러한 현상이 나타나있다. 경계선 부분의 밝기는 상수이지만 이러한 경계면 부분에서 우리 눈은 이를 좀 더 강력하게 자르는 것을 알 수 있다. 이렇게 외견상으로 잘린 것 같이 보이는 부분을 Mach bands라 한다. 1865년에 Ernst Mach가 처음 정의하였다. 

 

 

 

 

두 번째 현상은 simultaneous contrast라고 불리는 현상인데, 이는 사람이 감지하는 밝기가 단순히 해당 영역의 밝기값으로만 인지되는 것이 아님을 나타낸다. 아래 그림을 보면 모든 사각형의 안쪽 면은 같은 밝기 값을 가지고 있다. 그러나 주변 영역이 어두울수록 안쪽 사각형은 더 밝게 보인다. 

 

 

 

이러한 우리 눈의 착시(optical illusion)현상을 나타내는 그림이 몇 가지 더 있는데, 바로 우리 눈이 존재하지 않는 정보를 만들어 내거나 실제와는 다르게 기하학적 정보를 잘못 인지하는 경우다. 아래 그림에서 (a)는 실제 line은 없지만 중심부에 사각형이 있는 것처럼 보인다. (b)도 역시 가운데에 원이 보이는 것 같은 착각을 일으킨다. (c)에 그려진 두 개의 선은 실제로는 같은 길이지만, 양쪽 끝에 그려진 화살표 모양으로 인해 아래쪽 선이 더 길어보인다. (d)의 경우 모두 45도의 평행한 선이지만 주변에 그려진 작은 선들로 인해 다른 각도처럼 보인다. 

 

 

 

이러한 착시현상은 인간의 시각 시스템의 특성이며 아직 완벽히 이해된 영역은 아니다. 이처럼 인간의 시각 시스템은 아직까지 일부만 알려져 있으며 아직 더 연구해야 할 부분들이 많이 남아있다. 

 

+ Recent posts