디지털 이미지 기초 / 이미지 대비 향상
컴퓨터 비전(Computer Vision) 분야에서 디지털 이미지는 모든 분석의 시작점이자 핵심 데이터이다. 일상적인 사진부터 의료 영상, 산업 검사 이미지에 이르기까지, 다양한 정보가 디지털 이미지 형태로 표현되고 처리된다. 이번 글에서는 이러한 디지털 이미지의 가장 기본적인 개념부터 비트 심도(Bit Depth)와 색상 표현의 관계, 그리고 널리 사용되는 이미지 파일 형식인 PNG와 JPG의 차이점까지 깊이 있게 정리해 본다. 이후 이미지의 시각적 품질을 높이고 분석을 용이하게 하기 위한 방법인 대비 향상(Contrast Enhancement)까지 알아보고자 한다.
디지털 이미지, 픽셀로 이루어진 2차원 배열
컴퓨터 내부에서 이미지는 기본적으로 2차원 배열(array) 형태로 저장된다. 이 배열을 구성하는 각 원소(element)를 우리는 '픽셀(pixel)'이라고 부른다. 모든 디지털 이미지는 가로축(X 좌표)과 세로축(Y 좌표)을 가지며, 각 픽셀의 위치에는 해당 지점의 밝기(brightness) 또는 색상(color) 정보를 나타내는 '강도 값(intensity value)'이 저장된다.
image array |
비트 심도(Bit Depth)에 따른 이미지의 차이: 강도 값의 표현 범위
각 픽셀에 저장되는 강도 값이 표현할 수 있는 범위는 해당 이미지의 '비트 심도(bit depth)'에 따라 결정된다. 비트 심도는 하나의 픽셀 데이터를 표현하는 데 사용되는 비트(bit)의 수를 의미하며, 이는 곧 해당 픽셀이 나타낼 수 있는 고유한 값(예: 명암 단계 또는 색상)의 총 개수를 결정한다.
- 8비트 이미지(8-bit Image): 가장 흔하게 접하는 이미지 형태로, 각 픽셀은 8비트(\(2^{8}\))를 사용하여 0부터 255까지 총 256개의 서로 다른 강도 값을 표현할 수 있다. 이는 흑백(Greyscale) 이미지의 명암 단계 또는 컬러(Color) 이미지의 각 색상 채널(Red, Green, Blue)이 표현할 수 있는 범위를 나타낸다. 인간의 눈이 약 17개 정도의 명암 단계(약 6%의 명암 변화)를 구별할 수 있다는 점을 고려하면, 8비트는 일반적인 시각 정보를 표현하기에 충분한 수준이다.
- 16비트 이미지(16-bit Image): 의료 영상 표준인 DICOM(Digital Imaging and Communications in Medicine) 등 전문 분야에서 주로 사용된다. 각 픽셀에 16비트(\(2^{16}\))를 할당하여 0부터 65,535까지 훨씬 넓고 세밀한 범위의 강도 값을 표현할 수 있다. 이는 미세한 강도 차이가 중요한 의미를 갖는 의료 영상 분석 등에서 매우 중요한 장점이다. 일반적인 디스플레이 환경에서는 인간의 눈으로 8비트 이미지와 16비트 이미지의 차이를 명확히 구분하기 어렵지만, 정밀한 분석이 필요한 경우에는 16비트의 풍부한 정보량이 큰 역할을 한다.
(참고로 의료 전문가들의 경우, normalization을 거쳐 사람이 볼 수 있는 수준으로 강도를 조절하여 16 비트 이미지를 분석한다)
이미지의 비트 수와 표현 가능한 색상의 관계
이미지가 표현할 수 있는 총 색상의 수는 이미지의 종류(흑백, 회색조, 컬러)와 각 색상 채널(channel)에 할당된 비트 수에 따라 결정된다.
- 이진 이미지(Binary Image): 각 픽셀은 단 1비트만 사용하여 0(보통 검은색) 또는 1(보통 흰색) 두 가지 값 중 하나만 가진다.
- 회색조 이미지(Greyscale Image): 각 픽셀은 특정 비트 수(예: 8비트)를 사용하여 밝기의 정도(명암 단계)만을 표현한다. 8비트 회색조 이미지는 256단계의 명암을 표현할 수 있다. 이는 컬러 이미지에서 세 가지 색상 채널(RGB) 값이 모두 동일할 때 나타나는 결과와 같다. 즉, 단색 이미지(Monochromatic image)에 해당한다.
- 컬러 이미지(RGB Image): 가장 일반적인 컬러 이미지는 빛의 삼원색인 Red, Green, Blue 세 가지 기본 색상 채널의 조합을 사용하여 다양한 색상을 표현한다. 각 채널은 독립적인 비트 심도를 가질 수 있다.
- 24비트 트루 컬러(24-bit True Color): 각 RGB 채널에 8비트씩 할당하여, 픽셀당 총 24비트(8비트 x 3 채널)로 색상을 표현하는 방식이다. 이는 \(2^{24}\) (약 1,677만) 가지의 서로 다른 색상을 표현할 수 있으며, 현재 대부분의 컴퓨터 모니터, 휴대폰 디스플레이 및 이미지 저장 형식에서 표준으로 사용된다. (참고: 인간의 눈은 최대 천만 가지 색상을 구별할 수 있다고 알려져 있다.)
- 32비트 컬러(32-bit Color): 24비트 트루 컬러에 추가로 8비트의 알파 채널(Alpha Channel)을 포함하는 형식이다. 알파 채널은 픽셀의 투명도(Transparency) 정보를 저장하는 데 사용된다. 따라서 실제 표현 가능한 색상의 수는 24비트와 동일하지만, 투명도 표현이 가능하다는 차이가 있다. (때로는 알파 채널 대신 사용되지 않는 8비트가 추가되기도 한다.)
컬러 이미지를 회색조 이미지로 변환하는 방법은 여러 가지가 있는데, 가장 일반적인 방법은 각 RGB 채널 값에 인간의 시각적 민감도를 고려한 특정 가중치를 곱하여 합산하는 것이다. SDTV 표준인 Rec. 601에서는 Y = 0.299R + 0.587G + 0.114B
공식을 사용하고, HDTV 표준인 Rec. 709에서는 Y = 0.2126R + 0.7152G + 0.0722B
공식을 사용한다. 이는 인간의 망막에 있는 원뿔 세포(cone cell)가 녹색(약 33%)과 빨간색(약 65%)에 비해 파란색(약 2%)에 훨씬 민감하게 반응하는 생물학적 특성을 반영한 결과이다.
PNG와 JPG의 차이점
디지털 이미지를 저장하고 공유하는 데 널리 사용되는 두 가지 대표적인 파일 형식은 PNG(Portable Network Graphics)와 JPG(Joint Photographic Experts Group)이다. 이 두 형식은 이미지 압축 방식과 주요 특징에서 뚜렷한 차이를 보인다.
- PNG:
- 무손실 압축(Lossless Compression) 방식을 사용한다. 이는 이미지를 압축했다가 다시 해제했을 때 원본 이미지의 모든 데이터가 100% 그대로 보존된다는 의미이다.
- 따라서 글자, 로고, 아이콘, 선 그림 등 날카로운 경계선과 세밀한 디테일 정보가 중요한 이미지 저장에 적합하다.
- 알파 채널을 지원하여 이미지의 특정 부분을 투명하게 처리(투명도)할 수 있다는 중요한 장점이 있다. 웹 디자인 등에서 배경이 없는 이미지를 구현할 때 유용하다.
- 일반적으로 무손실 압축 방식의 특성상, 동일한 이미지라도 JPG의 손실 압축보다 파일 크기가 더 커지는 경향이 있다.
- JPG:
- 손실 압축(Lossy Compression) 방식을 사용한다. 이는 이미지를 압축할 때 인간의 눈이 잘 인지하지 못하는 세부 정보(주로 고주파 색상 정보)를 일부 제거하여 파일 크기를 효율적으로 줄이는 방식이다.
- 압축률을 사용자가 조절할 수 있으며, 압축률을 높일수록 파일 크기는 작아지지만 이미지 품질은 저하된다(열화 현상 발생).
- 자연 사진과 같이 부드러운 색상 변화와 복잡한 톤을 가진 이미지에 매우 효율적이며, 웹사이트 이미지 로딩 속도 개선이나 저장 공간 절약을 위해 널리 사용된다.
- 압축 과정에서 원본 데이터가 손실되므로, 반복적인 편집 및 저장을 하거나 원본의 완벽한 보존이 필요한 경우에는 적합하지 않다.
- 투명도를 지원하지 않는다. (투명 영역은 보통 흰색으로 채워진다.)
Contrast 향상의 필요성
Image histogram |
이미지 히스토그램은 이미지의 강도 분포를 나타내는 데 사용된다. 히스토그램은 형태의 이산 함수이며, 여기서 rk 는 k번째 강도 값이고 nk 는 강도 rk 를 갖는 픽셀의 수이다. 히스토그램을 통해 이미지의 밝기, contrast 등을 분석할 수 있으며, 이를 바탕으로 이미지 향상이 가능하다.
낮은 품질의 이미지는 어둡거나, 밝거나, 낮은 대비를 가질 수 있다. 이러한 경우, 이미지의 시각적 품질을 개선하고 분석을 용이하게 하기 위해 contrast 향상이 필요하다.
Contrast 향상 기법
다양한 contrast 향상 기법이 존재하며, 각각의 기법은 이미지의 특정 특성을 개선하는 데 사용된다.
- 정규화 (Normalization):
- 정규화는 스케일링과 이동(translation)을 통해 이미지의 contrast를 조정하는 방법이다. 형태의 변환을 사용한다.
- Min-Max 정규화:
- Min-Max 정규화는 이미지의 강도 값을 특정 범위로 조정한다.
- 수식: X_정규화 = (X - X_min) / (X_max - X_min) * (new_max - new_min) + new_min
- X는 원본 값
- X_min은 원본 데이터의 최소값
- X_max는 원본 데이터의 최대값
- new_min과 new_max는 정규화된 데이터의 범위 경계값
- 이미지에서 원본 데이터(왼쪽)를 분석:
- 최소값(X_min) = 0
- 최대값(X_max) = 3
- 정규화된 데이터(오른쪽)의 범위:
- new_min = 0
- new_max = 9
- 적용된 공식:
- X_정규화 = (X - 0) / (3 - 0) * (9 - 0) + 0
- = X / 3 * 9
- = X * 3
- 각 원본 값에 적용:
- 0 → 0 * 3 = 0
- 1 → 1 * 3 = 3
- 2 → 2 * 3 = 6
- 3 → 3 * 3 = 9
example |
- Z-Score 표준화 (Z-transformation):
- Z-Score 표준화는 이미지의 강도 값을 평균과 표준 편차를 사용하여 정규화한다.
- 수식: (여기서 σ 는 표준 편차)
- Window/Level 조정:
- Window/Level 조정은 특정 강도 범위(window)를 선택하고, 이를 디스플레이 강도 범위(level)에 매핑하는 방법이다.
- Window (창폭, W): Window는 영상에서 표현될 Intensity 값의 범위를 정의한다. 즉, 원본 이미지의 Intensity 값 중 Window에 해당하는 범위 내의 값들만이 화면에 Grayscale로 매핑되어 표시된다. Window의 폭이 좁을수록 특정 Intensity 값 주변의 미세한 차이를 더 잘 구별할 수 있어 Contrast가 증가하는 효과를 가져온다. 반대로, Window의 폭이 넓을수록 넓은 범위의 Intensity 값을 한 번에 볼 수 있지만, Contrast는 감소하여 Intensity 값 차이가 미미한 조직 간의 구별이 어려워질 수 있다.
- Level (창중심, L): Level은 Window가 Intensity 값 축에서 어느 위치에 놓이는지를 결정한다. 즉, Window의 중심 Intensity 값을 나타낸다. Level을 조절하면 화면에 표시되는 전체적인 밝기가 변한다. Level을 높이면 더 높은 Intensity 값 영역이 중간 밝기로 표시되어 영상이 밝아지고, Level을 낮추면 더 낮은 Intensity 값 영역이 중간 밝기로 표시되어 영상이 어두워진다.
- 수식:
. - 히스토그램 평활화 (Histogram Equalization):
- 히스토그램 평활화는 이미지의 히스토그램을 균등하게 분포시켜 contrast를 향상시키는 방법이다.
- 히스토그램은 로 정의되며, 여기서 MN은 이미지의 총 픽셀 수, nk 는 강도 rk 를 갖는 픽셀의 수, L은 가능한 강도 레벨의 수이다
. - 히스토그램 평활화 변환 함수는 다음과 같이 정의된다:
- 이산 형태: (여기서 k = 0, 1, 2, ..., L-1)
example - 원본 이미지 히스토그램 계산:
- 값 0: 8개 픽셀
- 값 1: 10개 픽셀
- 값 2: 5개 픽셀
- 값 3: 2개 픽셀
- 총 픽셀 수: 25개 (5×5 행렬)
- 누적 분포 함수(CDF) 계산:
- CDF(0) = 8
- CDF(1) = 8 + 10 = 18
- CDF(2) = 18 + 5 = 23
- CDF(3) = 23 + 2 = 25
- 공식 적용(L=10, 전체 픽셀=25):
- 원본값 0 → 9 * 8 / 25 ≃ 3
- 원본값 1 → 9 * 18 / 25 ≃ 6
- 원본값 2 → 9 * 23 / 25 ≃ 8
- 원본값 3 → 9 * 25 / 25 ≃ 9
결론
디지털 이미지는 픽셀이라는 기본 단위의 2차원 배열로 구성되며, 각 픽셀이 담을 수 있는 정보의 양(색상 또는 명암 단계)은 비트 심도에 의해 결정된다. 비트 심도는 이미지의 시각적 품질과 분석 가능한 정보의 정밀도에 직접적인 영향을 미친다. 이미지를 저장하는 대표적인 형식인 PNG와 JPG는 각각 무손실 압축과 손실 압축이라는 다른 압축 전략을 사용하여 효율성을 제공하며, 투명도 지원 여부와 적합한 사용 사례에서 차이를 보인다. 따라서 이미지의 특성과 최종 사용 목적을 고려하여 적절한 파일 형식을 선택하는 것이 중요하다. 또한 이미지의 contrast는 시각적 품질과 분석 용이성에 중요한 영향을 미치며, 정규화 및 히스토그램 평활화와 같은 다양한 기법을 통해 향상될 수 있다. 이러한 디지털 이미지의 기본 원리에 대한 깊이 있는 이해는 컴퓨터 비전 기술을 효과적으로 배우고 활용하는 데 있어 가장 중요한 첫걸음이 될 것이다.
추천글: