소개
이미지는 다양한 색상 공간의 메모리에 저장됩니다. 아마도 Windows가 많이 사용하는 RGB 색상 공간에 대해 들어 보셨을 것입니다. 이미지 처리 목적으로, 어떤 것들은 자주 어플리케이션의 목적에 더 잘 맞는 다양한 색상 공간들이 필요합니다.
이 기사에서는 RGB 및 HSI 색상 공간을 자세히 살펴보고 Y'CbCr 색상 공간을 간단히 알아보도록 하겠습니다.
이미지는 정확히 어떻게 저장되는가?
색상 공간에 대해서 알아보기 전에, OpenCV (또는 다른 프로그램 / API)가 이미지를 RAM에 저장하는 방법을 정확히 알아야 합니다.
그레이스케일 이미지들
그레이 스케일 이미지로 간단하게 시작할 것입니다. 그레이 스케일 그림은 강도(intensity) 정보를 필요로합니다 - 특정 픽셀이 얼마나 밝은가?의 문제이죠. 값이 높을수록 강도(intensity)가 커집니다. 현재 디스플레이는 256 가지의 회색 음영을 지원합니다. 각 각 픽셀 밝기는 앞선 것보다 조금 밝습니다!
따라서 그레이 스케일 이미지의 경우 각 픽셀에 대해 단일의 한 바이트 만 있으면 됩니다. 1 바이트 (또는 8 비트)는 0에서 255까지의 값을 저장할 수 있으므로 가능한 모든 회색 음영을 처리 할 수 있습니다.
따라서 메모리에서 회색 음영 이미지는 2 차원 바이트 배열로 표현됩니다. 배열의 크기는 이미지의 높이와 너비와 같습니다. 기술적의미로, 이 배열은 "채널"입니다.
따라서 그레이 스케일 이미지에는 하나의 채널 만 있습니다. 그리고 이 채널은 흰색들의 강도(intensity)를 표현합니다.
그레이 스케일 이미지의 예 :
컬러화 이미지들
색상을 추가한다면, 골치가 아파집니다. 더 많은 정보를 저장해야만 하죠. 단순히 음영이 가진 것아니라 "어떤 색상"의 음영이 가지는 것입니다.
비 투명 이미지는 지원 16,581,375 (약 16million) 별 색상들을 지원합니다. 다양한 음영들을 구분할 수 있으려면 각 픽셀 당 3 바이트가 필요합니다 (3 바이트 또는 24 비트, 255.255.255까지 값을 저장할 수 있으며 ... 이는 16,581,375 가지가 됩니다).
이에 대해서 생각 해보죠. 색상의 음영를 다양하게 지정하기 위해서는 1,600 만 개의 수가 있어야 할당이 음영 할당이 된다는 것입니다. 각 숫자에 무작위로 색상을 지정하면 사태가 더욱 심각해 질 것입니다. (예 : 1 = 가장 밝은 빨간색, 2 = 가장 밝은 녹색, 45780 = 가장 어두운 노란색 등).
그래서 사람들은 엄청난 수의 색상들에 체계적으로 번호를 할당하기 위해서 다양한 "색상 공간"을 알아내게 되었습니다.
컬러 공간들
RGB 컬러 공간
간단하게 가장 일반적인 색상 공간 인 RGB 대해서 알아보도록 하겠습니다.
RGB 는 각 픽셀의 3 바이트 데이터는 3 개의 다른 부분으로 나누어 집니다 : 빨간색의 개수 1 바이트, 녹색의 개수 1 바이트, 그리고 나머지 청색의 개수 1 바이트가 그것입니다.
빨강, 초록, 파랑의 기본 색상을 혼합하여 다양한 형태의 컬러 수를 나타낼 수 있습니다.
우리는 빨강, 녹색 및 파랑의 256 가지 다양한 음영들을 가질 수 있습니다 (1 바이트는 0에서 255까지의 값을 저장할 수 있음). 따라서 이 색상들을 다른 비율로 혼합하면 원하는 색상을 얻을 수 있습니다. 이 색상 공간은 매우 직관적입니다. 아마도 우리는 어떤 것이 사용되어 변하는 지 알지 못하고, 항상 사용해오고 있습니다.
그리고 각 픽셀의 1 바이트를 빨간색, 두 번째 바이트는 초록색으로, 마지막 바이트는 파란색 "전용" 으로 했으므로 ...이 바이트들을 한데 묶는 것이 일반적입니다.
즉, 모든 "전용 빨간색"바이트를 한데 모으고 ... "전용 녹색"바이트가 다른 위치에 한데 모으고 ... 파란색 위치가 그 다른 위치에 모아서 보면, 빨간색 초록색 파란 색 채널을 가지는 것을 볼 수 있습니다. !!
다음은 이 점을 더 잘 설명 할 수 있는 그림입니다.
각각의 채널들
빨강, 녹색 및 파랑 채널을 보이나요? 빨간색 영역에는 0 개의 "파란색 컨텐츠"를 가집니다. 그래서 순수한 빨강입니다. 그리고 채널들은 그레이 스케일 이미지입니다 (각 채널은 각 픽셀마다 1 바이트가 있기 때문에).
이상.
'이것저것' 카테고리의 다른 글
IIS 모니터링 도구로 메트릭 수집하기 (0) | 2023.02.26 |
---|---|
nodejs 설치 및 grunt 설정 (0) | 2023.02.23 |
모니터링 용 주요 IIS 메트릭 (0) | 2023.02.16 |
에지 AI와 클라우드 AI - 어떤 것이 비즈니스 더 적합할까요? (0) | 2023.02.09 |
GitHub의 수십억 개의 불필요한 파일 (0) | 2023.02.08 |