Sunwoo Kim's Computer Vision, Machine & Deep Learning Blog search

Digital Image Processing - DIntensity Transformations and Spatial filtering_1 (chapter3)

|

3. Intensity Transformations and Spatial filtering

3.1 Background

여태까지 앞에서 다루었던 이미지 처리 방식은 Spatial domain(공간도메인)에서 처리 되었다고 볼 수 있다. 뒤에 4장에서는 이와 다르게 주파수 도메인(frequency domain)에서 이미지를 처리하는 방법을 배우게 된다.

공간 도메인에서 이미지를 다루는 방법에 대해서 더 자세히 배워보자.

이번 챕터에서 다루는 공간 도메인에서의 처리 과정은 다음 식으로 표현된다.

g(x,y) = T[f(x,y)]

g(x,y)는 변환된 영상에서 (x,y)의 화소값이며, 연산T는 원본영상의 (x,y)위치의 픽셀에 대한 변환을 나타낸다. 이 게시물을 보는 사람이라면, CNN구조를 보았을때 filtering이라는 것을 보았을 것이다. 해당 연산을 생각해보고 아래 그림을 보자.

영상 f의 위치(x,y)에 해당하는 픽셀을 기준으로, 해당 픽셀의 3x3영역에 해당하는 이웃 픽셀들로 연산하여, g(x,y)를 얻어낸다. 인터넷에 cnn convolution이라고 치고, 이미지나 설명을 보면 바로 이해가 갈 것이다. 이것이 공간도메인의 대표적인 연산중 하나 이다.

위의 예시처럼, 해당 픽셀을 기준으로 주변 이웃 픽셀들의 값들을 이용하여 연산을 할 수도 있고, 해당 위치의 픽셀만 이용하여 연산을 할 수도 있다. 바로 그 예시중 하나가 Contrast stretching 과 thresholding이다. 아래 그림을 살펴보자.

s=T(r)

그림a에 해당하는게 contrast stretching이고, 그림b에 해당하는게 thresholding이다. contraset stretching을 그림a를 보고 이해해보자. x축에서 보면, $k~r_0$에 해당하는 밝기 범위가, y축을 봤을때 해당 범위가 더 넓어진 것을 볼 수 있다. 즉 예를 들어, 20~50의 밝기 범위 안에 있는 픽셀을 30~100범위로 맵핑을 한 것이다. 이것이 바로 contrast stretching이다. threholding은 어떤 화소값k를 기준으로 그 이하면 0, 그 이상이면 255로 화소값을 바꾼다. 물론 이 값들은 사용자의 편의에 따라서 바꿀 수 있다.

3.2 Some basic Intensity Transformation Functions

이미지를 반전시키려면 어떤 연산을 사용하면 될까? 이미지의 화소 범위가 [0.L-1]이라고 할 때, 그 방법은 다음과 같다.

s - L -1 -r

즉 최대 픽셀범위 값에서 현재 픽셀값을 빼주는 것이다.

하지만, 위 방법을 쓰면 명도 대비만 되는 것이다.영상의 밝기가 전반적으로 어두울 때, 밝게 나타낸다거나, 밝을 때, 조금 더 어둡게 나타내고 싶을때 는 어떤 방법을 써야할까? 위에서 나왔던 contrast stretching이다.

아래 그래프를 봐보자.

그리고 contrast stretching을 떠올려보자. Identity function을 기준으로 위에 있는 그래프들은, 영상을 상대적으로 밝게 만들어주고, 아래 있는 그래프 들은 영상을 상대적으로 어둡게 만들어준다. 그 이유는 가능하다. 위에있는 그래프들은 상대적으로 화소값이 낮은 영역에 있는 픽셀들을 화소값이 높게 맵핑시켜주고, 아래 있는 그래프들은 넓은 영역의 화소값들을 본래 화소값보다 낮게 맵핑시키기 때문이다.

위와 같은 원리를 이용하여 다음과 같은 처리가 가능하다.

log에 해당하는 식으로 변환을 수행하면 log-transformation, n-th power에 해당하는 식으로 변환하면 Gamma-transformation이라 한다. 식은 다음과 같다.

Log transformation : s = clogr
Gamma transformation : s = $cr^{\gamma}$

Gamma에 따른 그래프는 다음과 같다.

다음은 Gamma transformation의 예시이다.

원하는 목적에 따라서 gamma값을 적절히 선택해야 함을 보여준다. gamma값이 너무 작다면 이미지가 너무 밝게, 너무 크다면 이미지가 너무 어둡게 변환될 것이다.

위의 함수들 말고도, 우리가 다음 그림과 같이 임의의함수, 임의의 영역을 만들어 줄 수 있다.

Thresholding도 예외는 아니다. 아래 그림을 보자.

또한 이미지를 Bit plane에 따라서 분리할 수 있다. grayscale : [0-255]라면, 8비트로 표현된다. 최상위 비트는 128, 그 다음비트는 64 이런 식으로 각각의 비트가 1로 활성화 됬을때 해당값이 더해진다는 것을 알 수 있다. 그렇다면 비트 평면(bit palne)은 해당 이미지를 8개의 평면으로 나타낸 것이다. 각 평면은 비트에 해당되는 하나의 값만 가진다. 위 grayscale에서는 8개의 비트 평면이 생기며, 각각 (128or0),(64or0),(32or0),…,(1or0)의 값만 가진다. 8개의 평면을 모두 더하면, 원본 영상이 된다고 생각하면 된다. 아래 그림을 봐보자.

위 그림이 비트플레인을 나타낸 것이다. 본문에서 MS는 most significant, LS는 least significant를 의미하며, 최상위 비트를 나타내는 평면이 더 중요한 평면 즉, 정보를 더 많이 가지고 있는 평면이다. 아래 그림을 보면 그 이유를 알 수 있다.

그렇다면, 위 달러 이미지의 비트플레인을 합친다(더한다)고 생각해보자. 그랬을때의 그림은 아래와 같다.

위 그림의 Figure3.15의 설명을 읽어보면 그림a는 평면8,7, 그림b는 8,7,6 , 그림c는 8,7,6,5를 합친 그림이다. 그런데 보았을 때 별 차이가 없다. 왜냐하면, 최상위 비트에 해당하는 평면이 전반적인 정보를 가지고 있고, 하위 비트에 해당하는 평면은 디테일에 해당되는 정보를 가지고 있기 때문이다.

Comment  Read more

Digital Image Processing - Digital image fundamental_4 (chapter2)

|

2.6 An Introduction to the Mathematical Tools Used in Digital Image Processing

2.6.3 산술 연산(Arithmetic Operations)

영상간에도 연산이 이루어질 수 있다. 아래의 사진을 참고하자.

영상간의 사칙연산을 통해서, 우리가 원하는 영상을 얻어낼 수 있다. 원래의 이미지에서 노이즈를 추가하거나 빼거나, 원하는 부분을 추출하거나, 패턴 등을 마스킹 할 때 등 영상의 사칙연산은 중요한 역할을 한다. 예시를 살펴보자.

$g(x,y) = f(x,y) + \eta(x,y)$라 하자. 이 때, f(x,y) : 노이즈가 없는 영상, $\eta(x,y)$ : 노이즈, g(x,y) : 노이즈가 첨가된 영상이다.

덧셈(Addition)

위 그림은 노이즈가 첨가된 영상과, 원본 영상, 노이즈간의 관계를 나타낸 식이다. 식의 의미를 살펴보면 이렇다. 노이즈가 낀 영상들의 평균은 원본 영상이라는 것이다. 다만, 이 경우 노이즈가 낀 영상이 1개, 2개 있다고 해서 되는 것이 아니고, 수 많은 노이즈가 낀 영상들이 필요하다. 그렇게 되면, 노이즈끼리의 상충작용이 일어나서, 원본영상에 가까워 진다는 것이다. 그리고 노이즈가 낀 영상들의 평균은 원본영상 이었으므로, 당연히, 노이즈가 낀 영상들은, 원본영상을 중심으로 노이즈만큼 차이가 날테니까, 노이즈가낀 영상들의 분산은 노이즈들의 분산들과 같다는 것을 알 수 있다. 이렇게, 노이즈가낀 영상들 수십, 수백개를 평균내어서, 노이즈가 없는 원본영상을 찾으려고 하는 과정을 영상 평균화(image averaging) 이라 한다. 다음 그림은 영상평균화의 예시를 나타낸다.

뺄셈(Substraction)

먼저 위 그림을 살펴보자. 위 그림은 의학분야에서 혈관을 관측하기위한 예시이다. 우리가 만약에 혈관들을 보고 싶을때 어떻게 영상을 얻을까? 먼저, 혈액에 들어가면 특수한 파장을 내뱉는 액체를 집어넣는다. 그렇게 그 액체게 우리몸의 혈관에 들어가게 되고 그 후 영상기기로 영상을 얻어내면, 기존 영상에서 특수한 파장이 추가된 영상이 나올 것이다. 그렇다면, 혈관영상을 이제 어떻게 얻어낼지 생각해보자. 바로 뺄셈을 이용하는 것이다.

특수한 액체를 집어넣은 후 얻어낸 영상에서 원본영상에서 을 빼게되면, 특수한 액체는 혈관에 있고, 혈관에서 나오는 빛의 파장에만 영향을 줬기 때문에, 혈관부분만 보이는 영상을 얻어낼 수 있을 것이다. 그 그림이 바로 위 그림에서 c=b-a를 한 과정이다. d는 c영상을 다른 알고리즘을 통하여 개선시킨 영상이다.

곱셈, 나눗셈(Multiplication, Division)

위 그림을 살펴보자. 위 그림에서 영상a=영상bx영상c를 통하여 얻어진 영상이다. 영상b는 원본영상이고, 영상c는 음영패턴영상이다. 만약에 우리가 이러한 음영해턴을 사전에 알고있다고 하면, 원본영상에 음영패턴을 첨가하는것도 가능하고 반대로, 음영진영상을 음영패턴으로 나누어 원본영상을 얻어내는 일도 가능할 것이다. 실제상황에서는 이러한 음영패턴을 사전에 모르기 때문에, 알고리즘을 통하여 음영패턴을 근사화하여 얻어낸다.

영상들의 연산 후 화소값 스케일링

다음 절로 넘어 가기전에 한 가지 알고 가야할 것이 있다. 바로 연산 후 영상의 화소값의 스케일링이다. 만약 화소값의 범위가 0-255인 두 영상 f, g가 있다고 하자. 그렇다면, f+g연산후 화소값의 범위는 $-510<= f+g <=510$이 될것이다. 그렇게 되면, 기본 영상의 화소값 표현 범위인 0-255를 벗어나기 때문에, 표현이 불가능하다. 이때 필요한 것이 화소값을 스케일링 하는 과정이다. 스케일링 하는 과정은 다음과 같다.

또한 추가적으로, 나눗셈 연산을 할 때에는, 0인 화소값으로 나누는일이 없도록 주의해야한다.

Comment  Read more

Digital Image Processing - Digital image fundamental_3 (chapter2)

|

2.5 화소 이웃, 인접성, 영역, 경계(Neighbors, Adjacency, Region and Boundary)

화소 이웃(Neighbors of a pxiel)

화소 간에는 몇 가지 중요한 관계들이 있다. 영상은 f(x,y)로 표현된다. 특정좌표를 가리킬때는 p나 q라는 소문자를 이용한다. 픽셀p가 (x,y)에 위치할때, 주변픽셀들간에 관계를 표현할 수 있다.

위 그림을 보자. 그림을 보면, 4-neighbors가 뭔지, 8-neighbors가 뭔지 확 감이 올 것이다. 픽셀P를 기준으로 상하좌우 위치에있는 4개의 픽셀을 픽셀P의 4-neighbors라 한다. 또한, 픽셀P를 기준으로 4-neighbors의 픽셀들을 포함하여 대각의 위치에 존재하는 픽셀들을
픽셀P의 8-neighbors라 한다.

인접성(Adjacency)

바로 인접성(adjacency)이다. 인접성을 판별할 때 우리는 픽셀의 위치뿐 아니라, 픽셀의 화소값까지 고려할 것이다. 영상을 구성하는데 필요한 화소값의 집합을 V라 하자. 이때 예를들어 V는 다음과 같은 집합이 될 수 있다. 만약에 우리가 아는 gray scale의 이미지를 구성하려면 V={0,1,…,255}가 될 것이고, 이진이미지를 구성하려면 V={0,1}이 될 것이다. 인접성 판별만을 위한 예시로 V={1,3,5}와 같이 만들어 볼 수도 있겠다.

위 그림과 설명에 나와있는것 같이, 화소값의 집합 V에 속하는 화소값을 지니는 두 픽셀p,q가 $N_4$의 관계를 가질 때, 두 픽셀p, q는 4-adjacency이다. 그리고, 두 픽셀p,q가 V에 속하는 화소값을 지니고, $N_8$의 관계를 가진다면, 8-adjacency이다. 당연히 알 수 있듯이, 두 픽셀이 8-adjacency라면, 4-adjacency라는 것을 알 수 있다. 4-adjacency는 8-adjacency에 포함된다.

여기서 잘 이해가 안가는것이 m-adjacency일 것이다. m-adjacency의 판별과정을 아래와 같이 설명할 수 있다.

  1. 픽셀p,q의 화소값은 화소깂의 집합 V에 포함된다.

  2. 픽셀p,q이 서로의 $N_D$ 위치에 존재 해야한다.

  3. 픽셀p,q의 $N_4$의 위치에 해당하는 공통된 픽셀들의 화소값이 화소값의 집합V에 포함되지 않는다.

위 세가지 조건을 만족하면, 픽셀p,q는 m-adjacency를 갖는다고 말할 수 있다.

영역(Region)

그 다음, 새롭게 영역(Region)이라는 개념이 나온다. 영역이라는 개념을 알기 전에 또 연결성(Connectivity)이라는 것에 대해서 짚고 넘어가야한다. 다음 그림을 살펴보자.

사람 모양그림이 있는 영상이 있다. 그 중, 일부 영역, 부분집합 S, 를 가져와서 생각해보자. 그 때, 한 부분집합은 사람의 팔 만, 다른 부분집합은 사람의 팔 다리의 일부분 을 같이 가져왔다. 그랬을 때, 각 부분집합에는 검은색으로 인접한 픽셀들이 존재한다. 이렇게 인접한 픽셀들을 모아서 경로(path)라고 하며, 이 때, 경로가 존재한다고 한다. 이 때 4-adjacency, 8-adjacency등 어떤 인접성을 사용해도 상관없다. 용도에 따라 목적에 따라 다를 뿐이다. 그리고, 이 경로에 있는 모든 픽셀들의 집합을 연결성분(connected component)라고 한다. 이 때, 부분집합 안에, 연결성분이 1개 밖에 존재하지 않는다면, 그 부분집합을 연결집합(connected component) 또는 영역(Region)이라고 한다.

다음 개념을 하나 더 짚고 넘어가자. 어떤 영상이 관심있는 K개의 분리영역 $R_k, k=1,2,3,…K$를 포함한다고 하자. 예를들어 픽셀값이 1인 영역, 픽셀값이 123인 영역등 이라고 할 수 있다. 그랬을때, 관심있는 K개의 영역들의 합집합을 $R_u$라 하며, 전경(foreground)이라 하고 그 여집합$(R_u)^c$를 배경(background)라고 한다.

경계(Boundary)

위 그림에서 그림d를 봐보자. 그림d에거 각각의 영역은 8-adjacency를 사용하였을때, 연결된다. 이럴때, 두 영역은 인접한다고 말한다.

그림e를 보자. 그림e를 화소값이1인 영역, 화소값이 0인 영역으로 나누어보자. 이 때, 화소값이 1인 영역에서 가운데 점선원에 있는 1을 제외하고는 모두 화소값이 0인 픽셀과 맞닿아 있는 것을 볼 수 있다. 즉, 영역R의 경계는 영역R의 여집합($R^c$)에 맞닿아 있는 픽셀들이라고 할 수 있다.

그림e,f를 보자. 지금 부터, 경계에대해서 얘기를 할 것이다. 그림e를 보게되면 화소값이 1인영역, 화소값이 0인 영역으로 두 영역으로 나눌 수 있다. 이 때, 화소값이 1인영역을 전경이라고 할 때, 점선원 안에 1을 제외한 나머지 1은 내부경계(inner border) 그리고, 1인 영역을 감싸고 있는 화소값이 0인 픽셀들의 집합을 외부경계(outer border)이라고 한다. 만약에 우리가, 경계추적(border following)을 한다면, 내부경계를 찾아야할까, 외부경계를 찾아야할까? 답은 바로, 외부경계를 찾아야한다. 그 이유는 그림f를 보면 알 수 있다. 그림f를 보면 1인영역 자체가 내부경계이다. 그러므로, 내부경계를 찾을 경우, 1과 0의 경계를 잘 표시하지 못한다. 이 처럼 내부경계를 찾을 경우 경계를 잘 표시하지 못하는 결과가 생길 수 있다. 그렇기 때문에 일반적인 알고리즘은 외부경계를 찾는다.

위 경계개념을 보면서, 엣지(edge)를 찾는게 아닌가 라는 생각이 들었을 것이다. 하지만, 이 두 개념은 다르다. 우선, 경계추적은 전역적(global)한 탐색이고, 엣지를 찾는 과정은 지역적(local)탐색이다. 그 이유는 다음과 같다. 경계추적에서 경계를 찾는 것은 각 영역끼리의 경계를 찾아나가는 것이다. 화소값이 1인영역, 화소값이 100인 영역 등, 영역은 영상 전체적으로 분포하기 때문에, 영상 전체에 대한 탐색이 이루어진다. 반면에, 뒤에서 다루겠지만, 엣지 탐색은 현재 픽셀을 기준으로 할 때, 화소값이 주변 픽셀에 비해서 얼마나 변했는지 미분값을 계산해서 이루어진다. 그렇기 때문에, 지역적인 값들을 보고 탐색이 이루어지기 때문에, 지역적이라고 할 수 있다.

2.5.2 거리 척도(Distance measures)

영상에서 픽셀간의 거리는 어떻게 측정해야 할까? 거리 측정에 관해서 간략하게 3가지 가장 일반적이고 쉬운 방법을 소개하려한다.

  1. Euclidean distance 가장 흔하게 사용하고, 많이 사용해봤을 거리측정 방식이다. 바로 각 픽셀 하나를 좌표평면의 점으로 생각하고, 점과 점 사이의 거리를 직교좌표계에서 계산할때 사용하는 그 방식이다. l_2 norm이라고도 불린다.
픽셀p = (x,y), 픽셀q=(s,t) 일때, $D_e = \sqrt{(x-s)^2 + (y-t)^2}$
  1. Manhattan distance 유클리디안 거리가 l_2 norm이라면, 이 거리는 l_1 norm으로 불리는 거리측정 방식이다. 계산 방법은 다음과 같다.
픽셀p = (x,y), 픽셀q=(s,t) 일때, $D_m=D_4=|x-s| + |y-t|$
  1. Chebyshev distance $D_8$거리 라고 하면 확 감이 올지 모르겠다, 즉 픽셀p에 대하여 $N_8$의 픽셀에 대해서는 모두 거리가 같은 거리 측정 방식이다.

식으로 적으면 다음과 같다.

D_cheb=D_8=max(|x-s|, |y-t|)

위 세가지 방식을 그림으로 표현하면 다음과 같다.

출처

https://slideplayer.com/slide/8214857/

Comment  Read more

Digital Image Processing - Digital image fundamental_2 (chapter2)

|

2.3 영상 감지 및 획득(Image sensing and acqusition)

2.3.1 Image acquisition using a single sensor

위 그림은 단일 영상화 센서이다. 필터를 통과한 빛이 감지 물질에 의하여 감지되고 파워에 의하여 전압으로 변하여 시스템으로 전달되는 구조이다. 그렇다면 단일 센서로 어떻에 영상을 얻을 수 있을까?

바로 위 그림과 같이 단일 센서롤 x축으로 움직이면서, 필름이 있는 통을 회전시키면, 필름의 xy평면의 모든 곳에 기록을 남길 수 가 있게 된다. 하지만 이러한 방법은 시간이 오래걸린다, 또한 내 생각으로는, 단일 센서로 인지하기 때문에, 전체적인 이미지를 기록하기 위해서 모든 영역을 센서 하나가 스캔해야 하므로, 이미지의 픽셀끼리 관측된 시간 차가 있어서 화질도 그렇게 좋지 않을 것 같다.

2.3.2 Image acquisition using sensor strips

센서 띠를 이용해 영상을 얻는 예시가 위 그림에 나와있다. 먼저 왼쪽위의 그림을 보자. 왼쪽 위의 그림에 가운데 길다란 판자 같은게 보이는가? 그것은 바로 단일 센서를 일 자로 여러개를 모아놓은 것이다. 만약에 이러한 센서가 상공을 날고있는 비행기의 밑에 붙어있는 모습을 상상해보자. 그렇다면, 비행기가 다니면서 그 일대의 영역을 스캔하는 것이 가능할 것이다.

오른쪽 그림을 보면 무엇이 떠오르는가? 바로 MRI 또는 X선 장치가 떠오를 것이다. 오른쪽 그림에서 가장 큰 원통 반지 모양의 물체가 바로 센서이다. 이 센서는 물체가 들어오면 물체의 한 단면을 촬열할 수 있을 것이다. 만약에 MRI라고 생각해보자. 반지 모양의 센서는 계속 센싱을 하고있고, 사람이 머리부터 차례대로 안쪽으로 들어간다. 그러면 순간순간, MRi는 사람의 한 단면 단면을 촬영한다. 이 후 촬영이 끝나면, 컴퓨터 안의 소프트웨어를 통하여, 단면을 모두 모아 3D로 결과를 변환하여 사람에게 보여주게 된다.

2.3.3 Image acquisition using sensor arrays

위 그림은 센서 배열이다. 일반적으로 우리가 상상했던 센서의 모습이 아닐까 싶다. 이 센서는 어디에 쓰일까? 가장 바로 생각나는 예시는 디지털 카메라이다. 사진을 찍었을때 바로 그 시간 그 장면의 모습이 한 장면으로 센싱될 수 있다. 앞서 봤던 센서들 처럼 불필요한 이동 없이 한 장면을 센싱할 수 있다.

2.3.4 A simple image formation model

위 그림은 영상 형성 괴정이다. 광원에서 빛이 쏘아지면, 어떤 사물에 빛이 반사된다. 그렇게 되면, 광원의 빛과, 사물에 반사된 빛이 센서에 인식되고 결과적으로 영상이 형성되게 된다. 그렇다면 센싱되는 밝기값들은 어떻게 계산될까? 바로 아래와 같이 계산된다.

r(x,y)가 0인 경우는 완전 흡수, 1인 경우는 완전 반사를 의미한다. 즉 일반적인 사물에 대해서 r(x,y)는 반사율을 의미한다.

그런데 X-ray같은 경우에서는, 투과된 빛의 에너지양을 측정하므로 r(x,y)는 이때 투과도를 의미한다.

2.4 Image sampling and quantization

2.4.1 Basic concepts in sampling and quantization

샘플링이란 좌표 값을 디지털화 하는것, 양자화란 진폭 값들을 디지털화 하는 것을 의미한다.

위 그림을 보면 이미지를 샘플링하고 양자화 시키는 과정을 볼 수 있다.

먼저 그림a 는 연속적인 이미지, 그림b는 그림a에서 선분 AB에 존재하는 그림a의 연속적인 진폭값을 나타낸 것이다. 그림c 에서는 어떤 기준으로 샘플링과 양자화를 할 지 보여주고 있다. 그림d는 샘플링과 양자화를 완료한 모습이다. 그림을 보면 쉽게 알 수 있듯이, 샘플링은 해당 좌표에서만 진폭값을 측정하겠다는 것이다. 양자화는 어떤 구간 안에 있는 진폭값들을 모두 하나의 진폭값으로 여기겠다는 것이다.

2.4.2 Representing digital images

위 그림처럼 영상은 컴퓨터에서 2차원 평면으로 기록될 수 있다. 이러한 실수평면을 공간 도메인(Spatial domain)이라 하며, xy좌표들을 공간좌표(spatial variables or spatial coordinates)라고 한다. 위 그림에서 컴퓨터에서 공간도메인의 원점이 왼쪽 상단에 위치하고, xy축이 왼쪽, 상단에 위치한다는 것을 알고 있어야한다. 위 사실을 알았다면 좌표표시가 다음과 같이 된다는 것을 바로 이해할 수 있을 것이다. (또한, 거의 대부분 픽셀값이 정수로 표현된다는 것을 알아두자.)

위 그림은 영상표현을 하기위한 비트수를 나타내는 그림이다.

2.4.3 Spatial and Intensity resolution

우리가 흔히 말하는 해상도는 무엇을 의미할까? 흔히 DPI(Dots Per Inch)의 단위로 쓰인다. 여기서 dots는 pixels을 의미하는데, 즉, 인치당 얼마나 많은 픽셀이 존재하는가를 의미한다. 인치당 픽셀이 많이 존재할 수록 해상도가 높아서 영상이 더욱 말끔하게 보이게 된다. 이해가 안된 다면 다음 예시를 생각해보자. 어렸을 적 미술시간에, 점묘화 라는것을 본적이 있을 것이다. 이는 수많은 점을 콕콕콕 찍어서 그린 그림이다. 이 그림을 보면, 점이 적을 때는 어떤 물체인지 구별이 잘 안가지만, 점이 많아질 수록 어떤 물체인지 구별이 되기 시작하며, 더욱 선명하게 보이기 시작한다. 컴퓨터의 영상도 이 원리와 같다.

위 그림을 보고 어떤 이미지가 해상도가 높고 어떤 이미지가 해상도가 낮은지 생각해보자.

또한, 그레이 레벨 이미지에서, 비트수는 얼마나 명암을 자세하게 표현할 것인지를 나타낸다. 비트수가 커질수록 검정색과 흰색 사이를 아주 정밀하게 나타내며, 비트수가 1비트라면, 오직 검정색과 흰색만을 표시할 수 있게된다. 만약 1비트로 영상을 표현하게 된다면, 그레이 레벨 구간이 [0, 255]일 때, [0, 127]=검정, [128, 255]=흰색 으로 표시될 것이다. 다음 그림은 그레이 레벨을 표현하는 비트수를 차례차례 낮췄을 때 나타난 그림들이다.

Comment  Read more

Digital Image Processing - Digital image fundamental_1 (chapter2)

|

시각적 인지의 요소(Elements of visual perception)

우리 눈의 구조는 위와 같이 생겼다. 위 그림에서 사물을 인지 하는데 있어서 중요한 역할을 하는 조직들이 있다.

Cornea(각막) : 빛을 모으는 역할

Iris(홍채) : 빛의 양을 조절하는 역할

Lens(각막) : 빛을 굴절 시켜, 빛을 한 점으로 모으는 역할

Retina(망막) : 빛이 도달하는 지점

다음 영상을 보면, 눈에 상이 맺히는 과정을 이해할 수 있을 것이다.

즉, 물체의 한 지점을 통과한 다양한 각도의 빛이 눈으로 들어와서, 각막을 통과 하여, 망막의 한 지점에 맺히게 되면 뚜렷하게 보이게 된다. 이와 반대로, 망막보다 앞이나 뒷 지점에서 빛이 한 점에 모이게 되면, 정작 망막에 맺히게 될때에는 빛이 퍼져서 맺히게 되므로, 물체의 한 지점이 망막의 한 지점에 맺히는게 아니고, 여러 지점에 퍼져서 맺히게 되므로, 물체가 흐릿하게 보여지게 되는 것이다.

책에서는 카메라와 우리의 눈을 비교하여 설명해 놓은 부분이있다. 카메라는 렌즈의 위치를 조절하여 상이 맺히는 지점을 조절하지만, 사람은 각막의 위치를 움직일 수 업식 때문에, 각막의 두께를 조절하여, 빛이 꺽이는 정도를 조절하여 초점을 조정한다.

카메라의 초점조절에 관한 영상은 다음영상을 참조하자.

망막에 상이 맺히고 난 후, 눈에 있는 시신경 세포를 통하여 뇌에 정보가 전달되어 우리는 사물을 인지할 수 있게된다. 그러므로 중간 다리 역할을 해주는 시신경세포에 대해서 알아볼 필요가 있다. 시신경 세포는 원뿔세포(Cone cell)간상세포(Rod cell)로 이루어져있다.

원뿔세포는 색깔에 민감하며, 세세한 것들을 식별할 수 있다. 원뿔세포가 세세한 것들을 식별할 수 있는 이유는 각 원뿔세포 하나가 신경 하나에 일대일로 연결되어있기 때문이다. 마치 기계식 키보드가 멤브레인 키보드에 비해서 동시 입력이 더 잘되는 것과 비슷하다.

간상세포는 원뿔세포보다 그 수가 많다. 하지만, 원뿔세포와는 반대로, 밝은 상황에서 색에 민감하기 보다, 어두운 상황에서의 조도에 민감하다. 그리고, 간상세포는 일대일이 아니고, 다대일로 신경세포에 연결이 되있어서, 세세한 식별을 하기보다는 전체적인 형상을 식별한다.

다음 그래프는 빛의 세기에 따른, 인지한 주관적 밝기의 변화 정도를 나타난다.

scotopic vision(암소시), photopic vision(명소시)는 각각 간상세포, 원뿔세포가 주로 인지에 관여하는 영역이다. 즉, 빛의 세기가 낮을때는 간상세포가, 빛의 세기가 높을때는 원뿔세포가 관여하는 것을 알 수 있다. 그리고 중간단계의 빛의 세기에서는 두 세포가 모두 관여하는 모습을 볼 수 있다.

위 그래프를 보면, $B_a$, $B_b$라고 나와있는 지점이 있다. 두 지점의 의미는 다음과 같다. 우리의 눈이 빛의 세기가 $B_a$인 지점에 적응하고 있을 때, 한 순간(갑자기) 빛의 세기를 낮추거나 높혔을 떄 우리는, 짧은 $B_a$를 지나는 짧은 그래프로 밝기를 인식한다는 것이다. 그러나 짧은 그래프의 임계치를 아래인, $B_b$아래로 빛의 세기가 낮아진다면, 우리의 눈은 아무것도 없는 흑색배경으로 인지하고, 임계치보다 빛의 세기를 높힌다면, 아무것도 없는 백색배경으로 인지할 것이다.

이와 같이 생각해보면 편할것이다. 만화에서 어떤 킬러가 건물안의 사람들을 죽이기 위해, 미리 눈을 감고있어서 어둠에 적응해 놓는다. 그 후 조력자가 그 장소의 불을 끈 후, 킬러는 눈을 뜨고 사람들을 암살하려고 한다. 건물안에 있던 다른 사람들은 눈을 떠도 아무것도 안보이겠지만, 눈을 미리 감아놓은 킬러는 사람들의 전체적인 형상이 보이게된다. 이는 위에 설명한 것 처럼 킬러는 빛의세기가 낮은 지점에 눈이 적응해 있었고, 다른 사람들은, 빛의 세기가 높은지점에 눈이 적응해 놓았기 때문에, 불이 꺼졌을 때, 건물에 있는 사람들은 빛의 세기가 인지할 수 있는 임계치를 넘어서 아무것도 안보인 것이다. 빛의 세기가 상위 임계치를 넘기는 경우는 섬광탄의 경우를 생각해보면 바로 이해가 갈 것이다.

위 그림은 Mach bands라고 한다. 각 색의 경계에서, 인지하는 밝기의 그래프를 보면 경계에서 살짝 씩 튀는 모습이 관측된다. undershoot와 overshoot가 관측된다고 할 수 있다.

위 그림을 보면, 가운데 회색 사각형은 같은 밝기인데도, 주변 영역의 색깔이 어떤지에 따라 선명하게 보이거나 , 더 흐릿하게 보인다.

위 그림을 보면 첫 번째 그림에는 사각형이 없는데 사각형이 있는 것처럼, 두 번째 그림에서는 마치 원이 있는 것 처럼, 세 번째 그림에서는 꺽새 사이에 있는 두 선분의 길이가 같지만, 밑에있는 선분의 길이가 더 길어보이고, 네 번째 그림에서 평행한 직선들이 마치 평행하지 않은 것 처럼 눈에 보이게 된다.

사람의 눈은 실시간으로 변하는 주변환경, 연속적인 빛의 입력, 시신경들의 상호작용 등으로 인하여 이러한 시각적 인지의 오류를 발생시키게 된다.

Comment  Read more