Photo by DeepMind on Unsplash

 

 

디지털 이미지는 사진이나 그림을 디지털 형태로 표현한 것을 말한다. 이러한 디지털 이미지는 최소 단위의 점인 화소로 구성되며, 각 화소에는 밝기나 색상 등을 나타내는 값이 부여되어 있다. 일반적으로 화소의 수가 많을수록 해상도는 높아지지만 대신 저장되는 데이터의 용량은 커지게 된다. 따라서 이러한 디지털 이미지를 효율적으로 저장하고 전송하기 위해서는 데이터의 용량을 줄여 주는 디지털 이미지 압축 기술이 필요하다.


디지털 이미지 압축 기술에는 ㉠무손실 압축과 ㉡ 손실 압축이 있다. 무손실 압축은 압축 과정에서 데이터를 손실시키는 방법을 사용하지 않고 압축이 진행되기 때문에 압축 효율은 떨어지지만, 원본과 동일한 이미지로 복원이 가능하다. 반면 손실 압축은 중복되거나 필요치 않은 데이터를 제거하여 원본과 동일한 이미지로 복원하기는 어렵지만, 무손실 압축에 비해 수 배에서 수천 배 이상의 높은 압축 효율을 얻을 수 있어 보편적인 압축 기술로 활용되고 있다.


우리가 일반적으로 사용하는 JPEG는 손실 압축 기술이 적용된 대표적인 디지털 이미지 파일 형식이다. JPEG 형식의 압축은 크게 전처리, DCT, 양자화, 부호화 과정을 거친다.


첫째, 전처리 과정에서는 색상 모델 변경과 ‘샘플링’이 이루어진다. 우선 디지털 이미지의 색상 모델을 RGB에서 YCbCr로 변경한다. RGB 모델은 빛의 삼원색을 조합하여 화소의 색과 밝기를 함께 표현하는데, 변경된 YCbCr 모델에서는 밝기 정보를 나타내는 Y와 색상 정보를 나타내는 Cb, Cr로 분리하여 화소의 정보를 표현한다. 색상 모델이 RGB 모델에서 YCbCr 모델로 변경되면, 화소들에서 일부 값만을 추출하는 샘플링이 진행된다.


인간의 눈은 밝기의 변화에는 민감하고, 색상의 변화에는 상대적으로 덜 민감하다. 그래서 샘플링에서는 밝기 정보를 나타내는 Y는 모두 추출되고, 색상 정보를 나타내는 Cb와 Cr은 인간의 눈이 색상의 변화를 인식하지 못하는 범위 내에서 일부만 추출된다. 이러한 샘플링은 화소들을 일정한 단위로 묶은 블록에서 J:a:b의 비율로 화소의 정보를 추출하는 방식으로 진행된다. 이때 J는 화소 블록의 가로 화소 개수를, a는 화소 블록 첫 번째 행에서 추출하는 화소의 정보의 개수를, b는 두 번째 행에서 추출하는 화소의 정보의 개수를 의미한다. 예를 들어 4:2:0의 비율로 색상 정보를 샘플링하면, 가로 화소의 수가 4개인 화소 블록 중 첫 번째 행에서는 색상 정보가 2개 추출되고, 두 번째 행에서는 색상 정보가 추출되지 않는다. 결국 4×2 블록에 있는 여덟 개의 색상 정보 중 두 개의 정보만 추출되어 데이터의 용량은 줄어든다.


전처리 과정 후에는 DCT라고 불리는 변환 과정이 진행된다. DCT란 샘플링한 화소의 정보들을 주파수로 변환하여 주파수 영역에 따라 규칙적으로 분리된 데이터로 나타내는 과정이다. DCT는 효율성을 고려하여 가로 8개, 세로 8개의 화소로 블록화된 행렬을 기본 단위로 진행된다. DCT가 수행되면, 인접한 화소들 간의 정보 차이가 작다는 것을 나타내는 저주파 성분은 행렬의 왼쪽 위로, 차이가 크다는 것을 나타내는 고주파 성분은 행렬의 오른쪽 아래로 모여 주파수 영역에 따라 분리된 행렬값으로 표현된다. 이렇게 분리된 저주파 성분의 절댓값은 고주파 성분의 절댓값보다 크다.


다음으로 양자화 과정을 거치게 된다. 양자화 과정에서는 DCT로 얻은 행렬값을 미리 설정된 특정 상수로 나눈 뒤 반올림하게 된다. 이때 저주파 성분의 행렬값은 작은 상수로 나눈 뒤 반올림하지만, 고주파 성분의 행렬값은 0의 값으로 만들기 위해 큰 상수로 나눈 뒤 반올림한다. 이는 인간의 눈은 저주파 성분에는 민감하지만 고주파 성분에는 덜 민감하다는 특성을 고려하여, 저주파 성분의 절댓값은 줄이고 고주파 성분은 제거해 데이터의 용량을 줄이기 위한 것이다.


마지막으로는 부호화 과정을 거친다. 부호화는 양자화를 거친 행렬값을 이진수의 부호로 표현하는 것이다. 이 과정에서는 대표적으로 허프만 부호화가 사용된다. 허프만 부호화는 빈번하게 발생되는 데이터를 표현할 때는 적은 수의 비트*를 할당하고, 드물게 발생되는 데이터를 표현할 때는 더 많은 수의 비트를 할당하는 방식으로 진행된다. 그 결과 허프만 부호화 과정에서 는 데이터를 손실시키지 않으면서도 디지털 이미지의 데이터의 용량을 줄일 수 있게 된다.


* 비트: 컴퓨터에 의해 처리되거나 저장되는 정보의 최소 단위로서 0이나 1로 표현됨.

 

 

― (출전) 신종홍 외, <디지털 영상처리 입문>

@ 2021학년도 4월 고3 전국연합학력평가, 30~34번.