인간의 시각 시스템 The Human Visual System은 가시광선(400nm~700nm) 영역에서 수십만 가지의 색상을 구별 할 수 있지만 회색 음영 변화의 경우 약 100가지 정도를 구별할 수 있습니다. 색상 정보 Color Information도 이미지에 다양하게 포함 될 수 있기 때문에 색상 정보에 기반하여 객체 식별 및 추출 등과 같은 이미지 분석에 활용할 수 있습니다.

 

그레이 이미지 Gray Image는 무채색으로 레벨의 크기 Intensity로 표현되므로 에너지에 의한 물리적 양으로 볼 수 있습니다. 반면 밝기 Brightness 와 휘도 Luminance는 색의 인식적 지각에 의해 결정되므로 심리적 특성에 가깝습니다. 예를 들어 파란색과 초록색이 동일하게 강렬한 경우 파란색은 초록색보다 훨씬 더 어둡게 인식됩니다. 색상은 주로 물체의 반사율 특성에 따라 달라지며 빨간색과 초록색을 모두 반사하는 물체는 녹색이지만 빛을 비추는 빨간색이 없을 때 초록색으로 보이고 반대로 녹색이 없을 때는 빨간색으로 보입니다.

 

색상 모델 Color Model은 3D 좌표계로 표현되며 특정 모델 내에서 구성 가능한 모든 색상을 정의하고 특정 색상을 지정할 수 있도록 합니다. 이미지 분석과 처리를 위한 색상 모델들에는 RGB, CMY, HSI, YIQ, HSV, Lab 등 다양합니다. 현 블로그에서는 일반적인 RGB 외 몇 모델을 살펴 보겠습니다. OpenCV 활용 부분에 색상 모델 좌표 변환 설명을 추가하니 참고해 보면 좋겠습니다.

 

RGB Model

그림에서 같이 직각 좌표계로 표현되는 RGB 모델은 Red, Green, Blue의 3개의 축으로 구성됩니다. 회색 Gray은 검정색 Black과 흰색 White을 잇는 선으로 Spectrum이 표현됩니다. RGB 모델은 실생활에 많이 활용되며 칼라 모니터와 대부분의 비디오 카메라에 사용됩니다.

CMY Model

CMY 모델은 Cyan, Magenta, Yellow를 축으로 하는 색상 모델로, RGB 모델의 경우 특정 색상을 얻기 위해 검정색에 무엇을 추가하는 가산 혼합 Additive Model인 반면 CMY는 흰색에서 무엇을 빼는 Subtractive Model 입니다. 주로 칼라 프린터 및 인쇄물에 사용됩니다. 아래 그림은 색상 인식에 대한 Tristimulus Theory로 좌측은 RGB, 우측은 CMY Model을 나타냅니다.

 

HSI Model

HSI 모델은 Hue 색상, Saturation 채도, 크기(세기) Intensity의 3가지 축에 의해 색상을 정의할 수 있습니다. 그림은 HSI의 색상 입체 공간을 나타내며, Red/Green/Blue는 [0,1]범위로 정규화 됩니다. Hue는 0~360도의 각도, Saturation은 0~1, Intensity는 0(Black)~1(White)로 설정할 수 있으며 RGB 모델 간 변환 관계는 아래와 같습니다.

(homepages.inf.ed.ac.uk 참조)

(docs.opencv.org 참조)

 

히스토그램은 이미지의 픽셀 크기별 분포를 그래픽으로 나타낼 수 있습니다. 히스토그램의 X축은 픽셀의 크기(Gray Image: 0~255)를 나타내며 Y축은 영상의 픽셀 수를 나타냅니다. 픽셀 수가 많을수록 특정 밝기 레벨의 피크가 더 높습니다. 히스토그램 균등화(평활화) Histogram Equalization(HE)는 이미지의 대조를 향상시키는데 사용되는 이미지 처리 기술입니다. 이는 가장 빈번한 픽셀값을 효과적으로 펼침으로써, 이미지의 밝기 범위를 확장함으로써 개선 효과를 얻을 수 있습니다. 이를 통해 낮은 국소 대조도의 영역이 더 높은 대조도를 얻을 수 있습니다.

그림에서처럼 픽셀값이 특정 범위의 값으로만 제한되는 이미지를 생각해 있습니다. 예를 들어, 밝은 이미지는 모든 픽셀이 높은 값으로 제한됩니다. 그러나 좋은 이미지는 이미지의 모든 영역에서 픽셀값을 가질 것입니다. 따라서 히스토그램을 끝까지 늘려야 이미지의 대비를 향상시킵니다. 원리를 활용한 이미지 개선 방법이 히스토그램 평활화 기술입니다칼라 히스토그램 평활화는 이미지의 색상 균형에 극적인 변화를 초래하기 때문에 이미지의 빨간색, 녹색 및 파란색 성분에 별도로 적용할 수 없습니다. 그러나 이미지를 HSL/HSV 색 공간과 같은 다른 색 공간으로 먼저 변환 후, 이미지의 색상 및 채도를 변경하지 않고 휘도값에 적용할 수 있습니다.

 

Adaptive Histogram Equalization

적응적 히스토그램 평활화(Adaptive Histogram Equalization) 그대로 적응적, 국소적으로 이미지 밝기를 변환한다는 점에서 일반적인 히스토그램 평활화는 다르며, 로컬 대비를 개선하고 영상의 영역에서 에지의 정의를 강화하는데 적합합니다.

적응적 히스토그램 평활화의 한 방법으로 CLAHE(Contrast Limited Adaptive HE)가 있습니다. CLAHE의 경우, 이미지 대비 제한 과정은 국소적으로 영역을 분할하여 적용하며 일반적인 히스토그램 균등화가 야기할 수 있는 노이즈의 과증폭을 방지하기 위해 개발되었습니다. 아래 첫번째 이미지는 원본 이미지이며, 두번째 이미지는 일반적 히스토그램 균등화(Histogram Equalization) 결과, 세번째는 CLAHE 결과를 나타냅니다. 일반 히스토그램 균등화에서 발생할 수 있는 밝기 포화 Saturation를 CLAHE를 통해 개선할 수 있습니다. 

 

OpenCV에서 createCLAHE 함수로 제공 됩니다. 아래는 Python Code 예입니다.

 

import cv2 as cv

img = cv.imread('input_img.jpg', cv.IMREAD_GRAYSCALE)

clahe = cv.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))

cl1 = clahe.apply(img)

cv.imwrite('output_img.jpg',cl1)

영상처리 도구에 설명된 OpenCV Template Matching 활용 시 선택할 수 있는 “Method”에 대한 추가 설명입니다. 아래 그림에서처럼 총 6가지 수식 중 하나를 사용할 수 있게 되어 있고, “Method” 중에 _NORMED 표시는 정규화 Normalization에 약자 정도로 보면 됩니다. 수학적 접근에 기반하여 각 수식들은 두 영상 간 같은지 또는 다른지 정도를 거리 Distance로 정의하고 있고 간단한 수식(1)에서부터 복잡한(6) 수식으로 표현하고 있습니다.

 

 

 

위 수식들에서 T Template, ISource Image로 보고, 실제 동작으로 I를 기준으로 T를 움직이면서 픽셀 Pixel 간 처리를 통해 Matching 정도를 분석하게 됩니다.

 

Method 1. CV_TM_SQDIFF은 차이값의 제곱합 Square Sum of Difference을 의미하고 수식에서처럼 픽셀 간 차이가 거리가 되며 결론적으로 가장 작은 값을 갖는 위치가 Matching 위치로 볼 수 있습니다.

Method 3. CV_TM_CCORR은 상관관계 Cross Correlation을 의미하고 픽셀 간 곱의 전체 합으로 Template 간 거리 정도를 나타내며 최종 가장 큰 값을 갖는 위치가 Matching 위치가 됩니다.

Method 5. CV_TM_CCOEFF는 상관계수 Cross Correlation Coefficient로 표현되고 위 방법들과 다르게 Template Source 에 픽셀 평균 Mean값을 제외한 곱에 전체 합을 거리로 나타내며 특징지도 Feature Map에 가장 큰 값을 갖는 위치가 Matching 위치가 됩니다.

 

Method 1 2와 다르게 수식(5)는 평균값이 추가되어 조금 복잡해졌죠. 일반적으로 수식이 복잡해지면 조금 더 외부요인에 강건해지는 효과가 있습니다. 실무에서 영상정합 시 잡음이나 밝기 변화 등에 외부요인을 고려해야 하고 수식(5) 상관계수는 영상 간 선형적 밝기 변화에 수식(1) (2)보다 강건한 효과가 있습니다. 더 나아가 _NORMED이 붙는 정규화 함수가 추가되면 Matching 성능이 더욱 향상됩니다.

 

정규화 관련해서는 위 수식에서처럼 Pearson correlation coefficient를 통해 통계학 Statistics적으로 유도해 볼 수 있습니다. 실무에서 패턴 정합은 많은 외부요인들을 고려해야 하며 OpenCV에 제공되는 방법 외에도 다양한 방법들이 존재합니다. 위 방법들에 기본 원리를 잘 이해하면 실무에서 응용하는데 상당한 도움이 될 수 있습니다.

영상처리 시스템 또는 컴퓨터 비젼 시스템(Computer Vision System)은 영상처리기술이 적용될 수 있는 영상획득부터 정보에 출력까지 전체를 포함하는 시스템을 의미합니다. 영상처리 시스템에 이해는 우리가 만들고자 하는 영상처리기술이 어떻게 응용이 되고 실무에 적용이 되는지 알 수 있고, 상세하게는 아니겠지만 어떻게 사용할 지 유추하기 위함입니다.

 

 

산업 전반에 사용되고 있는 영상처리 시스템을 단순화 시켜 보면 크게 세 부분으로 나뉘어지는데 첫 단계는 사람에 눈에 역할을 하는 센서에서 영상을 획득하고, 두 번째 단계에선 획득된 영상을 이용하여 프로세서에 의해 목적에 따라 영상처리를 하며, 마지막 단계에서 처리된 정보를 사용 또는 보여주는 과정으로 진행됩니다. 그림에서처럼 센서는 카메라, 프로세서는 컴퓨터 그리고 정보에 사용은 모니터 정도로 생각할 수 있습니다.

 

(See below for English version.) 

영상처리라는 기술 또는 학문을 어떻게 정의할 수 있을까요? 위키피디아(WIKIPEDIA)에서는 정지영상 또는 동영상을 입력으로 하고 신호처리에 한 부분으로 수학적 연산을 이용한 영상의 처리를 의미하며 결과물로는 하나에 영상 또는 영상에 관계된 특징에 집합이 될 수 있다라고 정의하고 있습니다. 다시 설명 하면 인간에 눈으로 보여지는 부분을 영상이라고 한다면 자동차가 어느 방향으로 움직이고 있는지 아래 그림에서처럼 꽃이 몇 개인지 등에 영상에서 필요로 하는 정보라면 이를 특징이라고 정의할 수 있고 이러한 특징들을 시각적 또는 수치적으로 구현해주는 제반 기술을 영상처리라고 말할 수 있습니다.

 

 

 

영상처리 기술들은 산업, 의료, 항공, 교통, 애니메이션 등 다양한 분야에 폭넓게 응용되고 있습니다. 제조 산업에 경우 영상을 이용한 자동화 검사에 주요하게 적용되고 있으며 의료분야에서도 PET, X-Ray, CT 영상 등에 처리를 통해 의학적 검사에 도움을 주고 있습니다. 더 나아가 3차원 가상 현실을 그려내는 그래픽 분야에서도 응용되며 빅 데이터 처리에 정보 추출을 위한 Deep Learning 분야에 연계하여 특징 추출에 사용되고 있습니다.

 

서두 정의에서 같이 일반적으로 영상처리는 디지털 신호에 대한 처리를 의미하며 영상이라는 2차원 공간에 디지털 신호 처리를 말합니다. 디지털 신호는 어떻게 정의할 수 있을까요? 실세계에 신호들을 아날로그 신호로 본다면 샘플링이라는 과정을 통해 디지털 형태로 변환된 신호로 볼 수 있습니다. 아날로그 신호를 연속된 하나에 선이라면 디지털 신호는 일정 시간 간격으로 선에서 떼어낸 점들에 집합이라고 생각할 수 있습니다. 다만 영상은 평면에 점들이 모였으니 2차원 디지털 신호라고 볼 수 있습니다.

 

영상처리에 필요한 기본지식들은 좋은 참고 서적들이 나와있고 수많은 강좌 블로그들을 통해 쉽게 습득할 수 있습니다. 따라서 본 영상처리 이야기에서는 자유롭게 난이도에 관계없이 기술과 응용 주제등 필요에 따라 내용을 연재해 나 갈 예정입니다.

 

How can we explain “Image processing technology”? WIKIPEDIA(KOR) descript “Image processing is a part of signal processing and means the processing of still or successive images using mathematical operation and the result can be a set of features related to the image”. In other words, the features are the information such as the direction of moving car and a number of flowers in above fig.

 

Image processing application has various areas such as industry, medical imaging, security, transportation, satellite, etc. Further, we can apply 3D graphics and machine learning for the big data analysis. Technically, Image processing means the processing of digital signal in 2D space. Digital signal can be representing by a sequence of digit values differently from Analog signal by continuous values.

 

We can easily find basic knowledge and information of image processing technologies through books and the other web sites. This blog will focus on some topics such as the algorithm, programming and library.

 

 

+ Recent posts