매크로블록
1. 개요
매크로블록은 비디오 코덱에서 사용되는 이미지 또는 비디오의 기본 처리 단위이다. 매크로블록은 선형 블록 변환의 입력으로 사용되는 변환 블록으로 분할되며, 예측 블록으로도 분할될 수 있다. 초기 비디오 코덱에서는 8x8 크기의 고정된 변환 블록을 사용했지만, H.264/AVC와 같은 최신 표준에서는 변환 블록의 크기를 다양하게 조정할 수 있다. 매크로블록은 모션 보상 및 변환 코딩을 사용하여 비트스트림으로 표현되며, 이미지 내 블록 주소, 매크로블록 유형, 양자화 값, 모션 벡터, 부호화된 블록 패턴 등의 구성 요소를 포함한다. 매크로블록킹은 블록 코딩으로 인해 발생하는 압축 아티팩트를 의미한다.
| 정의 | 디지털 영상의 압축과 부호화를 위한 기본적인 처리 단위 |
|---|---|
| 구성 | 여러 개의 화소로 구성된 사각형 블록 |
| 크기 (일반적) | 16x16 화소 |
| 사용 목적 | 영상 데이터를 더 효율적으로 처리하고 압축하는 데 사용 |
| 휘도 성분 | 16x16 화소 블록 (Y) |
|---|---|
| 색차 성분 | 8x8 화소 블록 (Cb, Cr) |
| 총 블록 수 | 4개의 휘도 블록과 2개의 색차 블록으로 구성 (총 6개의 블록) |
| 움직임 예측 | 현재 매크로블록과 가장 유사한 블록을 이전 프레임에서 찾음 |
|---|---|
| 움직임 벡터 | 움직임의 방향과 크기를 나타내는 벡터 생성 |
| 변환 부호화 | DCT를 사용하여 주파수 영역으로 변환 |
| 양자화 | 변환된 계수를 양자화하여 데이터 양을 줄임 |
| 엔트로피 부호화 | 허프만 부호화 또는 산술 부호화를 사용하여 최종 압축 |
| 주요 표준 | H.261 H.262/MPEG-2 H.263 H.264/AVC H.265/HEVC |
|---|---|
| 역할 | 비디오 압축 표준에서 중요한 역할을 수행 |
| 높은 압축률 | 영상 데이터를 효율적으로 압축하여 저장 공간 및 전송 대역폭 절약 |
|---|---|
| 움직임 예측 | 영상 내 움직임을 효과적으로 추정하고 보상하여 압축 효율을 높임 |
| 다양한 부호화 기술 | 다양한 부호화 기술을 활용하여 영상 품질을 유지하면서 압축률 향상 |
| 계산 복잡도 | 부호화 및 복호화 과정이 복잡하여 높은 계산 리소스 요구 |
|---|---|
| 블록 현상 | 과도한 압축 시 블록 경계가 눈에 띄는 현상 발생 가능 |
| 다양한 분야 | 비디오 회의 디지털 TV 방송 영상 저장 장치 인터넷 스트리밍 |
|---|
-
영상 압축 -
데이터 압축
데이터 압축은 디지털 데이터의 크기를 줄여 저장 공간을 절약하고 전송 속도를 향상시키는 기술로, 모르스 부호에서 시작하여 ZIP, JPEG, LZ77 등 다양한 방식으로 발전해 왔으며, 무손실 압축과 손실 압축으로 나뉘고 최근에는 인공지능 기술을 활용하여 효율성을 높여 다양한 분야에서 활용되고 있다. -
영상 압축 -
VP9
VP9는 구글이 개발한 오픈 소스 비디오 코덱으로, VP8보다 압축 효율을 높이고 HEVC보다 나은 성능을 목표로 개발되었으며, WebM 형식으로 사용되고 주요 웹 브라우저와 넷플릭스, 유튜브 등에서 지원했으나 AV1의 등장으로 개발이 중단되었다. -
화상 압축 -
JPEG
JPEG은 정지 화상의 디지털 압축 및 코딩을 위한 국제 표준이자 이를 만든 위원회의 이름으로, 1992년 최초 표준 발표 이후 웹 환경에서 널리 사용되는 이미지 형식이 되었다. -
화상 압축 -
PNG
PNG는 GIF의 단점을 보완하여 개발된 무손실 압축 방식의 그래픽 파일 형식이며, 높은 색상 표현과 투명도를 지원하고, 8바이트 시그니처와 이미지 정보를 담은 청크들로 파일 구조가 구성된다.
2. 기술적 세부 사항
매크로블록은 비디오 코덱에서 압축 효율을 높이기 위해 영상을 작은 블록으로 나눈 것이다. 매크로블록은 더 작은 변환 블록으로 분할되어 이산 코사인 변환(DCT)과 같은 선형 블록 변환의 입력으로 사용된다. 또한, 예측 블록으로 분할되어 움직임 보상 및 인트라 예측에 사용된다.
2.1. 변환 블록
매크로블록은 이산 코사인 변환(DCT)과 같은 선형 블록 변환의 입력으로 사용되는 더 작은 변환 블록으로 분할된다. 매크로블록 기반 최초의 비디오 코덱인 H.261에서 변환 블록은 8x8 샘플의 고정 크기를 갖는다.
YCbCr 색 공간에서 4:2:0 크로마 서브샘플링을 사용하는 경우, 16x16 매크로블록은 16x16 루마(Y) 샘플과 8x8 크로마(Cb 및 Cr) 샘플로 구성되며, 4개의 Y 블록, 1개의 Cb 블록, 1개의 Cr 블록으로 분할된다. 이 설계는 JPEG, MPEG-1 Part 2, H.262/MPEG-2 Part 2와 같이 변환 블록 크기가 고정된 대부분의 매크로블록 기반 비디오 코덱에서 사용된다. 다른 크로마 서브샘플링 형식(4:0:0, 4:2:2, 4:4:4 등)에서는 매크로블록의 크로마 샘플 수가 달라지며, 크로마 샘플을 블록으로 그룹화하는 방식도 달라진다.
H.263, H.264/AVC와 같은 최신 매크로블록 기반 비디오 코딩 표준에서는 변환 블록의 크기가 8x8 샘플이 아닐 수도 있다. 예를 들어, H.264/AVC 메인 프로파일에서는 변환 블록 크기가 4x4이다. H.264/AVC 하이 프로파일에서는 변환 블록 크기를 매크로블록 단위로 4x4 또는 8x8로 조정할 수 있다.
2.2. 예측 블록
매크로블록은 변환 블록으로의 분할과는 별개로, 예측 블록으로 분할될 수 있다. H.261, MPEG-1 파트 2, H.262/MPEG-2 파트 2와 같은 초기 표준에서는 매크로블록당 하나의 움직임 벡터로 움직임 보상이 수행되었다. H.264/AVC와 같은 더 현대적인 표준에서는 매크로블록을 파티션이라고 하는 여러 개의 가변 크기 예측 블록으로 분할할 수 있다. H.264/AVC의 인터 예측 매크로블록에서는 각 파티션에 대해 별도의 움직임 벡터가 지정된다. 마찬가지로, 인접 블록의 가장자리에서 외삽하여 샘플을 예측하는 인트라 예측 매크로블록에서는 예측 방향이 파티션별로 지정된다. H.264/AVC에서 예측 파티션 크기는 인터 예측(움직임 보상) 및 인트라 예측 모두에 대해 4×4에서 16×16 샘플까지 다양하다.
3. 비트스트림 표현
비디오 코덱에서 매크로블록의 가능한 비트스트림 표현은 모션 보상과 변환 코딩을 사용하며, H.261에서 사용되는 형식과 유사하다.
3.1. 구성 요소
비디오 코덱에서 매크로블록의 비트스트림 표현은 모션 보상과 변환 코딩을 사용하며, H.261에서 사용되는 형식과 유사하다.
| ADDR | TYPE | QUANT | VECTOR | CBP | bN |
|---|---|---|---|---|---|
| 이미지 내 블록 주소 | 매크로블록 유형 식별 (인트라 프레임, 인터 프레임, 양방향 인터 프레임) | 양자화를 변경하기 위한 양자화 값 | 모션 벡터 | 부호화된 블록 패턴(Coded Block Pattern), 계수가 존재하는 블록을 나타내는 비트 마스크 | 블록 (4 Y, 1 Cr, 1 Cb) |