본문 바로가기
과학/영상처리

[영상처리] 영상의 압축과 Jpg(Jpeg)로의 변환 과정

by 원쓰원 2023. 1. 9.

1. 압축(Compression)의 정의

압축이란, 이를 나타내는 영어 단어에서도 알 수 있듯이 'Compression', 무엇인가를 누른다는 것입니다. 가방에 물건을 최대한 많이 담고 싶을 때 혹은 부피를 줄이고 싶을 때 우리는 압력을 가해 그 부피를 줄이게 됩니다. 이와 같은 과정을 우리는 압축(Compression)이라 일컫습니다. 압축 과정은 결과적으로 데이터의 손실이 있느냐, 없느냐에 따라 크게 손실 압축과 비손실 압축으로 구분됩니다.

1) 손실 압축(Lossy Compression)

손실 압축은 말 그대로, 압축 과정에서 데이터의 손실이 발생함을 의미합니다. 일반적으로, 주요 데이터를 양자화(Quantization) 한 후, 중요한 정보들을 최대한 보존하는 것을 목표로 합니다. 이를 위해 사람들이 잘 느끼지 못하고, 그나마 둔감한 정보를 손실시킵니다. 영상 압축에서는 사람들이 잘 파악하지 못하는 고주파 성분 혹은 색차(Color difference) 정보를 손실시키는 방식을 주로 사용합니다. 음성(audio)의 경우에는 사람에게 잘 들리지 않는 성분을 손실시키는 방법을 사용합니다.

2) 무손실 압축(Lossless Compression)

무손실 압축은 손실 압축과는 반대되는 개념으로, 원래 정보 그대로를 보존해야 하므로 정보 엔트로피의 한계가 그대로 반영됩니다. 일반적으로, 파일 데이터의 압축에 사용하는 gzip을 비롯한 알고리즘들이 이에 해당합니다. 주로, 의료 영상이나 설계 도면과 같이 그 데이터에 사소한 손실이라도 생기면 큰 문제가 생기는 경우에 사용하게 됩니다.

2. Jpg(Jpeg) 변환 과정

1) YCbCr 변환 및 서브 샘플링(Sub sampling)

색 공간을 이와 같이 변환하는 이유는 1차적인 압축을 위해서입니다. 사람의 눈은 색상보다 휘도에 더 민감하다는 것에서 착안되었습니다. 따라서, 밝기 정보를 가지는 Y성분은 유지하되, 휘도 즉, 색상 간의 차이 정보를 가지는 Cb, Cr 성분을 줄여 압축하는 것입니다. 이를 다운 샘플링(down sampling) 혹은 크로마 서브 샘플링(Chroma subsampling)이라고 합니다. 일반적으로 이 비율에는 4:2:0이 많이 사용됩니다.

2) Block splitting(8x8)

다운 샘플링 이후 각각의 채널을 8x8크기의 블록으로 분할합니다. 엄밀히 말하자면 Y채널은 8x8 블록으로, CbCr채널은 다운 샘플링 방식에 따라 각각 8x8(4:4:4), 16x8(4:2:2), 16x16(4:2:0)으로 분할합니다. 우리는 이를 매크로 블록(Macro Block)이라 합니다.

3) 이산 코사인 변환(DCT, Discrete Cosine Transform)

영상에서 인접한 픽셀과의 차이가 적은 경우 일반적으로 낮은 공간 주파수(저주파)를 가집니다. 반대로, 인접한 픽셀과의 차이가 큰 경우 높은 공간주파수(고주파)가 나타납니다. 사람의 눈은 작은 변화보다 큰 변화에 민감합니다. 즉, 고주파 성분의 변화보다 저주파 성분의 변화에 민감한 것입니다. 저주파 성분과 고주파 성분을 분리하기 위해, 해당 영상을 공간 영역에서 주파수 영역으로 변환해야 합니다. 이를 직교변환이라 하는데, 그중 가장 많이 사용되는 방법이 이산 코사인 변환(DCT) 방법입니다.

4) 양자화 수행(Quantization)

양자화는 고주파 성분을 제거하기 위한 방법입니다. 주파수 영역의 각 계수에 대해 양자화 행렬의 상수로 나눈 후 반올림합니다.

5) 지그재그 스캐닝(Zig-zag scanning)

행렬을 지그재그(zigzag) 형태로 읽어 일차원 배열로 나열하는 것을 의미합니다. 지그재그 형태로 읽었기 때문에 유사한 값이 연속으로 나타나게 됩니다.

지그재그 스캐닝(Zigzag scanning)

6) 런렝스 부호화(Run-length Encoding)

런렝스 부호화(Run-length Encoding)

0(zero)를 기준으로 위와 같은 형태로 부호화됩니다. Symbol1의 run-length는 앞에 0이 몇 개 있는지를 뜻합니다.

댓글