획득과 표현
샘플링과 양자화
- 핀홀 카메라는 복잡한 카메라의 역할을 아주 단순하게 표현하는데, 빛이 상자의 아주 작은 구멍을 통해 들어가면 영상 평면(image plane)(CCD 센서 또는 필름)에 맺히게 됩니다. CCD 센서는 영상을 가로 방향으로 N, 세로 방향으로 M개의 점으로 샘플링하고, 화소 (pixel, picture element)라고 부르는 각 점의 밝기를 L단계로 양자화합니다.
- 화소 하나에 0~255, 즉 256단계로 표현 가능하며, 하나에 8bit(1byte)의 데이터가 필요합니다.
- 디지털 영상의 품질은 화소가 얼마나 많이 있는가에 따라 좌우됩니다. 720p와 같은 영상 화질(HD)은 가로의 화소가 720개로, 16대 9의 비율을 가지고 있다는 뜻입니다. HD 급이 4개가 붙은 영상을 4K(1440p)라고 합니다. 즉 가로로, 1440개의 화소를 가지고 있습니다.
- 화소는 왼쪽 끝부터 (0.0)로 표현하며, f(y, x)가 의미하는 바는 곧 명암 또는 칼라값이 됩니다. 명암값은 0-255 사이의 값이며, 칼라값은 0-255로 이루어진 세 개의 채널(RGB)이 모여있는 값입니다.
칼라
- 칼라는 영상에서 아주 중요한 것이지만, 매우 주관적인 것이기 때문에 pattern recognition(패턴 인식)의 관점에서는 안 좋습니다. 예를 들어 실내와 실외에서 찍은 사진은 조명에 따라 달라지기 때문에, 일관성이 중요한 패턴 인식에서 좋은 성질은 아닙니다.
- 색상은 환경의 물리적 빛과 시각 시스템 간의 상호 작용의 결과입니다 / 색상은 물체와 빛을 바라볼 때 시각적 경험의 심리적 속성이지 물체나 빛의 물리적 속성이 아닙니다 -> 즉, 정해진 게 아니라 조명, 보는 사람 등의 환경에 따라 칼라는 다르게 인식될 수 있습니다. 예를 들어 빨간색은 식욕을 돋우는 색인데, 이것에는 사람의 주관적인 인식이 들어갑니다. 따라서 최근의 패턴 인식에서는 칼라는 거의 안 쓰이는 데이터입니다.
The Eye
- 우리 눈은 굉장히 반응이 좋고 빠르지만, 항상 빛의 영향에 대해 상대적으로 조절하기 때문에 절대적으로 값을 표현하는 데 있어서는 한계가 있습니다. (ex. 착시현상)
- 사람이 칼라값을 인지하는 시신경은 사람 눈의 cone으로, 빨간색 10, 녹색 5, 파란색 1의 비율로 시신경이 분포해 있습니다. 즉, 사람은 R, G, B 빛의 3원색 조합으로 색상을 인지하고 있습니다.
가장 중요한 것은 칼라값에 대해 우리가 어떻게 정량적으로 표현할 것인가?
모든 시청 조건에서 모든 조명의 인식되는 색상에 대한 간단한 설명은 없지만, 통계적으로 표현하는 두 가지 방법이 있습니다.
위 두 가지 방법 중 HSI(HSV)는 x는 가시광선(WaveLength), y는 빛의 양(Photons)의 정규분포를 이용하여 표현됩니다. 정규분포의 모양은 평균(mean)과 분산(variance)(혹은 표준편차), 영역(Area)에 의해 달라집니다.
정규분포 평균의 위치: Mean <-> Hue (색상)
- 가시광선의 평균이 왼쪽으로 가면 blue(파랑, 보라), 가운데면 green, 오른쪽으로 가면 yellow(노랑, 빨강)의 값을 가지게 됩니다.
정규분포 표준편차: Variance <-> Saturation (채도)
- 표준편차에 따라 hi, med, low의 모양을 가지게 됩니다.
- 우리가 일상생활에서 쓰는 레이저 포인터 같은 경우에는 빨간색의 평균값에서 hi의 값을 가지고 있습니다.
정규분포 영역: Area <-> Brightness (명도)
- 빛의 양(Photons), 즉 영역(Area)에 따라 bright, dark로 나누어집니다.
Linear color spaces
하지만 HSV 칼라 모델은 표현하기 복잡하기 때문에, 컴퓨터비전에서는 RGB를 가장 많이 사용합니다
- 사람의 시신경 cone에서도 RGB 모델을 사용하기 때문
- 계산 및 표현이 용이하기 때문
- color = αR + βG + γB라는 식으로 모든 칼라값 표현 가능 (α, β, γ는 각각 0~255 사이의 값)
- 우리가 볼 수 있는 칼라의 개수는 256 256 256개 (= 8bit 8bit 8bit)
RGB 모델
RGB color space
- R축과 G축과 B축을 세 개의 직교하는 축으로 표현하여 정육면체의 형태로 나타낸 것입니다.
- 실질적으로는 0~255 사이의 값을 가지고 있으나, 인공지능을 위해 처리할 때에는 255로 나누어 0~1 사이의 값으로 정규화하여 사용합니다.
- Black(0,0,0)과 White(255,255,255)를 잇는 대각선은 gray, 즉 명암을 뜻합니다. gray는 R+G+B/255의 식으로 구해집니다.
RGB 모델로 영상 표현: fr, fg, fb의 세 채널로 표현
f(i,j) = (n,n,n)
f(i,j,1) => R
f(i,j,2) => G
f(i,j,3) => B
즉, 영상은 height, width, channel로 이루어져 있습니다. height와 width가 존재하고, channel=3이면 칼라 영상이며 channel=1이면 흑백 영상입니다.
또한 영상에서 해당 값이 있으면 255이기 때문에 1로 밝게 보입니다. 예를 들어 빨간색은 R채널에서 1이므로 밝은 색으로 보이고, G와 B채널에서는 어둡게 보입니다.
참고. 1차원은 배열(vector), 2차원은 행렬(matrix), 3차원은 tensor
HSI 모델 (컴퓨터비전에서 많이 쓰이지는 않음)
- 이중 콘(꼬깔콘이 대칭 위아래로 붙어있는 모양)으로 색을 표현합니다.
- 원 둘레는 색상(Hue)값을 표현하며, 원 크기는 채도(Saturation)값, 꼬깔콘의 길이는 명도(Brightness)를 표현합니다. 원의 중심은 black, 꼬깔콘 끝은 white입니다.
우리의 궁극적인 목표: 어떤 컬러 모델이든 컬러값을 가지고, 패턴 인식에 활용하고자 함
Uses of color in computer vision: 컬러를 이용해 패턴 인식에 활용한 사례
- 방송국에서 상표를 가리기 위해 컬러 히스토그램을 뽑아 유사한 히스토그램을 가지고 있다면 자동으로 모자이크 처리가 되게끔 -> 하지만 컬러는 조명 환경에 따라 달라지기 때문에 잘 안 되었습니다. 따라서 최근에는 형태 정보를 이용해서 모자이크를 합니다.
- 컴퓨터비전에서 컬러 정보를 가장 많이 활용하는 곳은 image segmentaion으로, 주어진 영상을 영역 별로 분류하는 작업입니다. 최근에는 컬러 뿐만 아니라 text data를 추가하여 활용하고 있습니다.
- 사람의 피부색을 찾는 skin detectior에도 사용했지만, 정확도가 떨어져 해당 알고리즘은 더 이상 쓰여지지 않고 있습니다. 굳이 쓰인다고 하면 사람의 후보 영역을 찾는 데에는 사용합니다.
- robot soccer라는 로봇 강아지가 주황색 공을 컬러로 인식하여 가지고 노는데, 여기서 주황색이 사용된 이유는 일상생활에서 많이 쓰이지 않는 컬러라서 정확도를 보다 높이기 위해서입니다.
- 유니폼을 입는 경기에서 선수의 행동 정보를 분석하기 위해 컬러 정보를 활용하였습니다.
-> 컬러는 환경에 따라 달라지는 특성을 가지고 있기 때문에, 최근의 컴퓨터비전에는 잘 활용하지 않습니다.
영상의 저장 압축
RGB는 각각 8bit씩 필요하므로, 총 24bit(=3byte)입니다. 그렇다면 100만 화소는 3byte * 100의 저장공간이 필요합니다. 하지만 실질적으로 영상의 저장공간은 그렇게 활용하지가 않고 있습니다. 그 이유는 영상의 압축에 있습니다. 영상은 우리가 눈으로 봤을 때 별 차이가 없는 데이터들은 저장할 때 없애버리고, 우리가 볼 때는 복원해서 볼 수 있도록 압축하는 알고리즘을 사용합니다.