An Interdisciplinary Introduction to Image Processing
by Steven L. Tanimoto
1. Introduction
What's an image?
이미지는 장면, 그림, 디자인 등을 이차원 평면에 재현한 것.
일상 삶의 이미지는 프린트, TV 스크린의 빛, 회화 등. 컴퓨팅에 있어서는 이차원의 픽셀 어레이의 값을 갖고 있는 데이터 구조. 심리학에서는 뇌에서 일어나는 정신적인 구성.
이미지는 근본적으로 이차원의 정보 패턴으로 인간이 어떤식으로든 경험가능 한 것. 디지털 이미지는 이미지 중 하나로서, 숫자에 의해 재현되는 것이다.
What's a pixel?
이미지의 가시적 최소 단위. 픽셀은 이미지를 구성하는 특정 부분이라기보다는 추상적인 개념이다. 픽셀은 이미지의 시각적인 속성으로서 하나의 점 혹은 부분으로 재현될 수 있다. CRT 모니터를 확대해서 보면 픽셀이 한 가지 색이 아니라 작은 점의 희미한 집합으로 되어 있고 red, green, blue 각 색이 독립된 점으로 되어 있다는 것을 알 수 있다.
What's a function?
Function은 수학적 개념으로 'determining relation'을 뜻한다. double이라는 function이 있다고 하자, 5를 double하면 무엇인가? 답은 10. 이 function은 숫자 사이의 관계이다. Function은 프로세싱의 각 단계에서 인풋과 아웃풋 데이터 사이의 관계를 기술하는 것으로 프로세싱에 있어 필수적인 것이다. Function의 수학적 표준 정의는 값을 다른 값으로 매핑하는 것의 일종이다.
하나의 function이 과학적 문제의 해결이나 예술작품이 될 수 있나? 그렇다. 하나의 프로그램 전체를 function이라고도 할 수 있다. 하나의 이미지를 function이라 할 수도 있다. 사진을 인상주의 그림으로 바꾸는 function도 디자인할 수 있다.
What's a program?
컴퓨터 프로그램은 일반적으로 컴퓨터로 하여금 어떤 문제를 풀거나 기능을 수행하도록 하는 연속적인 지시.
이미지는 픽셀일 수 있고, 픽셀은 이미지일 수 있다. 이미지는 function이고, 픽셀과 function은 숫자를 사용해서 재현할 수 있다. 프로그램은 function에 의해 기술되고, 이미지는 프로그램일 수 있다. 프로그램은 이미지를 생산할 수 있고, 이미지를 통해 재현될 수도 있다 .따라서 픽셀, 숫자, function, 프로그램은 같은 정보를 다른 방식으로 보는 것이라고 할 수 있다.
Human Vision
인간의 시각의 작동 방식을 아는 것은 이미지 프로새싱을 공부하는 데 있어 중요하다. 이미지는 인간의 눈에 보여지기 위한 것이므로 그것이 인간의 눈에 어떻게 보여지는지 이해할 필요가 있다. 눈 앞의 장면이 우리 뇌에서 재현되는 것도 하나의 이미지이고, 그것이 어떤 방식으로 이루어지는지 알 필요가 있다. 마지막으로 컴퓨터 비전은 인간의 시각 시스템을 모델로 하기 때문에, 컴퓨터 비전을 공부하기 위해서는 인간 시각을 이해해야 한다.
눈은 인간의 시각 시스템을 위한 감각 기관이다. 광선은 처음에 각막(cornea)를 지나 홍채(pupil)를 거처 수정체(crystalline lens)를 통과한다. 그리고 눈알을 채우고 있는 투명한 유리체(vitreous humor)를 지나 망막(retina)의 감각 레이어에 맺힌다. 망막에는 rods, cones라고 불리는 감광 세포가 있다. 수정체의 형태는 망막에 맺히는 이미지의 초점을 컨트롤 하는 근육에 의해 모양이 바뀐다. 망막은 감광세포로 부터 오는 신호를 수집하고 분석하는 신경 세포도 갖고 있다.
인간의 눈과 디지털 카메라와 다른 점은 공간적 해상도(spatial resolution)에 있다(포착 가능한 가장 작은 디테일의 크기). 4메가 픽셀의 디지털 카메라는 2000 x 2000 픽셀을 갖고 있다. 그런데 인간의 눈은 rods와 cones가 분포된 양이 일정하지 않다. 시계의 정중앙에 중심와(fovea)라고 불리는 망막의 좁고 둥근 부분이 있는데, 여기서는 이미지의 세밀한 디테일을 구분할 수 있다. 시계의 바깥쪽 주변부의 해상도는 낮다. 그런데 그 주변부를 처리하는 망막의 부분은 움직임에 매우 민감하다.
이미지에 대한 정보는 시신경(optic nerve)이라 불리는 신경 섬유 가닥을 따라 떠난다. 시신경은 blind spot이라는 망막의 한 지점을 떠나 머리 뒤의 시신경교차(optic chiasm)와 슬상체(lateral geniculate body)로 간다.
Blind spot이 이렇게 이름지어진 것은, 망막의 이 특정 위치에는 rods나 cones가 없어서 여기서는 이미지가 지각되지 않는다. 대부분의 사람들이 이것을 인지 못하는 것은 뇌가 그 빈 정보를 채워넣기 때문이다.
망막을 떠난 정보는 시신경을 지나 시신경교차로 가는데, 시신경교차는 왼쪽눈과 오른쪽 눈의 신경이 만나고 각각은 두 부분으로 나뉘어져 반은 좌뇌에 반은 우뇌에 연결되어 있다. 그 결과 양쪽 눈의 정보는 모두 선조피질(striate cortex)라 알려져 있는 양쪽 뇌로 전달된다. 선조피질은 다층적으로 구성되어 있다. 명암 구분과 같은 낮은 수준의 프로세싱은 여기서 일어난다. 선조피질은 뇌의 다른 부분에 연결되어 있는데, 정보가 선조피질을 지난 후에 무신일이 일어나는지에 대해 현재 많은 연구가 진행되고 있다.
Illusions
illusion은 인간의 시각이 어떻게 작동하는지에 대한 질문을 야기시킨다: 어떻게 세계를 있는 그대로 보지 않는가? 또 인간의 시각의 한계를 이해하는 데 도움을 주고 따라서 이미지 프로세싱과 비전과 관련한 인공적인 방식을 디자인하는 데도 도움을 준다.
동시대비(simultaneous contrast)을 통해, 인간은 빛의 강도를 주위의 강도의 컨텍스트에 따라 인식한다는 것을 알 수 있다. 이것은 공간적, 시간적 근접성에도 똑같이 적용된다. sun illusion과 subjective-contour illusion은 인간이 존재하지 않는 외곽선을 보고 외곽선 내부의 영역은 배경보다 더 밝게 인식한다는 것을 보여준다.
일반적인 타입의 illusion은 구름, 차잎 등과 같은 시각적 노이즈나 무작위로 배치된 요소들에서 어떤 물체나 형태를 인식하는 것이다. 이러한 illusion은 아포페니아(apophenia)라 불린다. 아포페니아는 위험요소나 사냥의 대상이 숨거나 위장하고 있을 때 이를 인지할 수 있도록 진화한 인간의 시각 시스템의 결과로 알려져있다. 아포페니아는 우연한 패턴이나 자연의 패턴에서 단순히 재밌는 해석을 하는 것이다. 하지만 어떤 경우에는 이것이 지각에 상당한 영향을 끼치기도 하는데, 이것을 신의 계시나 외계인의 위협으로 보게 되는 것이다. 이러한 아포페니아를 파레이돌리아(pareidolia)라고 한다.
아포페니아는 컴퓨터 비전 시스템에서도 일어날 수 있다. 컨베이어 벨트의 변색된 부분을 자동차 부품으로 인식할 수 있는 것이다. 심한 경우, 컴퓨터 비전 시스템이 환각을 볼 수도 있다.
What can we do with all these pixels?
넘쳐나는 픽셀에서 어떻게 가치를 얻어내는지 아는 것은 중요하다. 정보를 추출하는 것. 아름다운 예술을 만드는 것. 만약 가치를 얻거나 더할 수 없다면, 우리는 물론 이미지를 지우거나 압축해서 메모리 용량을 확보할 수 있을 것이다. 그러면 우리는 어떻게 가치를 더하거나 공간을 절약할 수 있을까?하는 것이 이 책에 나와있다.
2. Getting Started
이 챕터에서는 디지털 이미지가 컴퓨터에서 어떻게 재현되는지 알아보고 PixelMath라는 프로그램을 이용해서 이를 활용하는 방법을 알아본다.
Representation of Digital Images
디지털 이미지 재현에는 두 가지 중요한 것이 있다. sampling, quantization. Sampling은 이미지를 특정 숫자나 순자들의 집합으로 표현하기 위해 점이나 지역을 선택하는 것을 의미한다. Quantaization은 숫자가 밝기나 색상값에 어떤식으로 매칭시키는 방법을 의미한다.
Sampling
디지털 이미지는 두 가지 방식으로 만들 수 있다: 실제 세계 캡쳐 그리고 합성. 캡쳐에서 가장 중요한 것은 장면으로 부터 픽셀을 만드는 방식이다. 오리지널 이미지의 위치나 영역에 픽셀을 할당하는 것이 sampling이다. 디지털 카메라의 해상도가 높을 수록 실제 장면을 더 많이 샘플링해서 이미지를 만든다. 더 많이 샘플링하면 이미지의 질은 높아지지만, 메모리, 처리시간 등 많은 비용이 발생한다. 따라서 적절한 수의 픽셀을 사용해서 이미지를 만드는 것이 필요하다. 이를 두 가지 방법으로 할 수 있는데 하나는 똑같은 장면을 다양하게 샘플링해서 눈으로 비교하는 것, 그리고 이론에 따라서 하는 것. 그 이론은 나이키스트 판정법 Nyquist criterion.
The Nyquist Criterion
어느 정도 샘플링을 해야 신호를 충분히 재현할 수 있는가? 이미지도 신호의 일종이다. 답은 디지털화에 있어서 유지해야 하는 최소 디테일의 크기가 얼마냐에 달려있다. 만약에 그 최소 디테일이 지름이 'd'인 점들이고, 'd'이하의 간격을 유지해야한다고한다면, 샘플링의 간격은 'd'보다 작은 범위에서 이루어져야 한다. 이것이 Nyquist criterion의 한 형태이다. 진동(oscillations)과 관련한 용어-Nyquist criterion은 파동(wave), 주파수(frequency), 사이클(cycle), phase, 진폭(amplitude)-를 이용해서 표현하는 것이 일반적이다.
파동은 수학 함수(mathematical functions)로 표현한다. 두 가지 중요한 파동 함수로는 square wave와 sine wave가 있다. square-wave 함수의 x축은 시간 혹은 가로 위치를 나타낼 수 있다. 여기서 y축 값은 1 혹은 -1이 되고 사이클이 반 돌때마다 y값이 변한다. 사이클의 길이는 보통 2파이이다. sine-wave 함수는 square-wave 함수처럼 반복적인 패턴을 포함한다. 각 반복은 사이클이라 불리고, 사이클의 길이는 2파이이다. 그러나 이것은 더 부드럽고 커브로 이루어져있다. 이 두 함수는 이미지 프로세싱에 있어 중요하다.
이런 반복 패턴 함수에서는 각각의 기본적인 패턴의 발생이 사이클이다. 사이클의 길이는 파장(wavelength)이고 항상 2파이일 필요는 없다. 주파수(frequency)는 x 축에 일어나는 사이클의 비율이다. 예를 들어 1인치당 5사이클, 픽셀당 0.01사이클 등. 파장과 주파수는 장면을 정확하게 재현하는 데 필요한 픽셀 수를 결정하는 데 중요하다.
phase는 특정한 점이 사이클의 어느 지점에 위치하는가 혹은 어떤 점을 함수와 맞게 맞추기 위해 사이클의 시작점에서 함수 전체를 얼마나 이동시켜야 하는가 하는 것으로 이해할 수 있다. phase는 degree(360도), radians(2파이) 등으로 표시한다.
샘플을 사용해서 wave 함수를 재현하기 위해 필요한 샘플의 수는 우리가 얼마나 정교하게 함수를 재현하느냐에 달려있다. 함수의 모양을 정확하게 재현하기 위해서는 많은 샘플링이 필요하지만, 대부분의 경우 함수의 주파수에 집중한다. 주기적인 함수를 정확하게 재현하기 위해서는 적어도 사이클 당 두 번의 샘플링을 해야한다. 그리고 그 두 번의 샘플링은 서로 다른 것으로 하나는 파동의 높은 지점, 또 하나나는 파동의 낮은 지점이어야 한다.
Picket Fence Examples
샘플링을 위한 Nyquist criterion은 우리가 highest-frequency oscillation의 한 사이클에서 최소 2번 이상 샘플링을 해야한다는 것이다. 따라서 샘플의 주파수는 highest-frequency oscillation의 주파수보다 최소 두 배 이상이어야한다는 것을 의미한다. highest-frequency oscillation의 값보다 정확하게 두배인 주파수를 Nyquist rate라 한다. 샘플링은 Nyquist rate보다는 많이 되어야한다.
3. Brightness and Contrast
Brightness
밝기는 한 픽셀이 나타내는 빛의 양.
보통 RGB의 평균값으로 표현이 되는데, 밝게 하려면 각각의 R, G, B 값에 수치를 더하거나 곱하면 된다. 그런데 두 방법 모두 desaturation을 야기할 수 있다.
Contrast
이미지의 가능한 밝기 값 범위 내에서, 밝기 값의 분포. (어떤 이미지가 0~100의 밝기값을 가지고 있다고 치면, 이 범위 내에서 실제로 값들이 어떻게 분포되어 있는가)
검은색과 흰색만으로 표현되는 이미지는 컨트라스트가 가장 높다. 눈에 잘 띄지만, 음영의 디테일이 없다.
컨트라스트를 높이려면 각 RGB에 1이상의 값을 곱하면 되는데 이는 밝기에도 영향을 끼친다. brightening과 desaturation을 피하려면 처음에 일정 값을 뺀다음 값을 곱하면 된다.
Histogram
히스토그램은 개체에서 다른 종류의 아이템이 생기는 숫자를 그래프로 표현한 것.
Histogram Equalization
히스토그램 이퀄라이제이션을 통해 이미지를 향상시킬 수 있다. 이것은 픽셀 분포를 고르게 만드는 것이다.
Thresholding
모든 색을 검정, 흰색으로 바꾸는 것. 특정 값 이하는 검정, 그 이상은 흰색으로 한다고 할 때, 그 값이 threshold 값.
Quantization
thresholding을 하면 픽셀을 검정, 흰색 두 가지로 만들기 때문에 한 픽셀에 1bit가 필요. bit는 정보의 단위로 쌍방향 선택을 재현한다.
Bits and Bytes
Bit는 정보의 단위이자 선택의 표현(이거냐 저거냐).
Binary number system은 0, 1로만 숫자를 표현하는 체계.
1바이트는 8비트. 256가지 값을 가짐. RGB각각 256가지 값을 가지려면 1픽셀에 3바이트 필요.
18. Pattern Recognition
Pattern Recognition은 Feature Analysis한 것으로부터 이미지의 내용을 판단하는(decision making) 것.
Pattern recognition의 두 가지 단계.
-learning patterns: 각각의 카테고리를 나누는 것.
-recognizing patterns: 이미지를 카테고리에 넣는 것.
Learning의 두 가지 타입.
-supervised learning: training이라고도 불린다. training을 위한 예시 이미지(training set)가 필요한데, 각 예시 이미지의 카테고리는 주어진다. 예를 들어 의자 이미지 세트를 주고 의자인지 아닌지 판단하게 한다. 만약 틀리게 판단하면, 피드백으로 고쳐준다. 이 피드백 때문에 supervised라고 하는 것.
-unsupervised learning: 인풋을 어떻게 구분할지 피드백을 주지 않는다. 카테고리도 스스로 정한다. 보통 인풋을 클러스터 그룹으로 나누는 식이다.
K-Nearest-Neighbor Classification
classification하는 방법 중 하나.
learning이 됐다고 가정하고. distance function이 주어졌을 때 . (K는 비교할 이웃 이미지의 개수)
새로운 이미지가 들어오면, 이미 classified 된 이미지들과 거리를 계산한다. 그리고 거리가 가장 짧은 K 개의 classified된 이미지를 찾는다. 그 K개 이미지들이 어느 카테고리에 가장 많이 속해있는지 본다. 새로운 이미지는 그 카테고리에 속하게 된다.
그런데 새로운 이미지가 들어올 때마다, preclassified 이미지들을 거리에 따라서 분류를 해야 하는데 이게 시간이 많이 걸릴 수 있다.
Perceptrons
신경망에 영감받아 만든 classifier.
인풋 이미지의 각 요소에 가중치를 곱하고 그 모두를 더한다음 그 값이 thredhold값을 넘어가면 yes 안 넘어가면 false. 그 결과 값의 참, 거짓에 따라 피드백을 줘서 가중치를 조절해서 classifier를 완성.
Perceptron Demo
K-Means Clustering Method
Classify를 하기 위해 cluster를 나누는 방법 중 하나.
1. N 개의 데이터가 있고, 그것을 몇 개의 클러스터로 나눌지 K 값을 지정한다.
2. 처음에 각 클러스터의 센터 값이 임의로 주어진다.
3. 다음의 스탭을 반복한다.
3.1 각 데이터는 가장 가까운 클러스터에 들어간다.
3.2 각 클러스터에 속한 데이터들의 센터를 클러스터의 센터로 정한다.
클러스터 센터 값에 대한 데이터들의 거리의 합이 가장 적은 것이 최적의 카테고리가 된다.
K-Means Clustering Method Demo
No comments:
Post a Comment