본문 바로가기
멀티미디어/코덱(Codec)

H.264 비디오 압축 표준 소개

by 주호파파 2025. 6. 16.
728x90
반응형

I – 서론

비디오 감시와 같은 H.264의 일반적인 적용 분야에서는 카메라의 비디오가 H.264를 사용하여 인코딩되어 H.264 비트스트림을 생성합니다.

이 비트스트림은 네트워크를 통해 디코더로 전송되고, 디코더는 원본 비디오의 특정 버전을 재구성합니다.

이 표준은 시간 상관관계와 공간 상관관계를 모두 활용하여 비디오 시퀀스의 픽셀 중복성을 제거합니다. 또한, 각 구문 요소 간의 높은 상관관계를 이용하여 대상 구문 요소를 예측하고 표현합니다. 따라서 각 구문 요소 간의 상호 의존성은 매우 큽니다.



II – H.264 비트스트림 구조

부호화된 영상은 일련의 부호화된 매크로블록으로 구성된 하나 이상의 슬라이스로 구성됩니다. 다음 섹션에서는 H.264 비트스트림 구조에 대한 개요를 설명합니다.


A. GOP

 

픽처 그룹(GOP)은 키 픽처[1]로 시작하는 연속적인 픽처 세트로 구성됩니다.

폐쇄형 GOP 코딩 구조에서 키 픽처는 하나 이상의 IDR 슬라이스로 구성된 순간 디코딩 리프레시(IDR) 픽처이거나 특수 유형의 인트라 코딩 슬라이스일 수 있습니다.

 

디코더에서 IDR 픽처가 수신되면 디코딩된 픽처 버퍼(DPB)에 저장된 모든 픽처는 즉시 "미사용"으로 표시됩니다.

따라서 코딩 순서에서 IDR 픽처보다 앞선 픽처는 더 이상 예측에 사용할 수 없습니다.

 

계층적 P 코딩 구조(즉, 코딩 순서가 출력 순서와 동일)에서는 이미 인코딩된 영상들로부터 P개의 영상이 예측됩니다.

이 구조는 저지연 연산이 요구되는 시나리오를 위해 설계되었습니다. 그림 1은 계층적 P 코딩 구조의 예를 보여줍니다.






B. 네트워크 추상화 계층 단위(NALU)

 

H.264 코딩된 비디오 시퀀스는 일련의 네트워크 추상화 계층 단위(NALU)로 구성됩니다.

각 NALU에는 매개변수 집합, 추가 정보, 코딩된 영상 전체 또는 코딩된 영상의 일부가 포함될 수 있습니다.

VCL NALU는 NALU 페이로드 내 정보를 정의하는 데 사용되는 1바이트 NALU 헤더로 구성됩니다. NALU 헤더에는 세 개의 필드가 있습니다.

 

1. 1비트 forbidden_zero_bit(F): 디코더에서 오류 은폐를 트리거하는 데 사용할 수 있는 데이터 손실을 나타냅니다.

2. 2비트 nal_ref_idc(NRI): NALU의 중요성을 나타냅니다.

3. 5비트 nal_unit_type(NUT): NALU의 캡슐화된 바이트 시퀀스 패킷(EBSP) 유형을 신호로 전달합니다.

 

가장 일반적인 NALU는 표 1에 나열되어 있습니다. 디코더는 NALU 헤더에서 NALU 유형을 감지하여 다양한 프로세스를 수행할 수 있습니다.






C. 매크로블록 레이어

 

비디오 코딩 계층(VCL) NALU의 구성은 그림 2에 제시되어 있습니다. 매크로블록은 영상 코딩 과정의 기본 단위입니다.

영역 크기는 16×16 픽셀이며, 4:2:0 YUV 포맷으로 16×16 휘도 샘플 하나와 8×8 색차 샘플 두 개를 포함합니다.



그림 2: VCL NALU의 구성, 그림 속의 슬라이스 하나.





매크로블록 정보는 데이터 비트 문자열(SODB)을 구성하는 많은 구문 요소로 표현됩니다.

SODB는 바이트 정렬될 수도 있고 그렇지 않을 수도 있으므로, 사양 요건을 충족하기 위해 바이트 정렬된 원시 바이트 시퀀스 페이로드(RBSP)로 SODB를 전송해야 합니다.

 

NALU 페이로드에서 zero_byte(즉, 0x00)와 start_code_prefix_one_3bytes(즉, 0x000001)가 발생하는 것을 방지하기 위해, 0x0000이 발생할 때 에뮬레이션 방지(즉, 0x03)가 비트스트림에 삽입됩니다.

 

그림 3은 일반적인 H.264/AVC 인코더 아키텍처를 보여줍니다. 관련 인코딩 프로세스는 다음과 같습니다. 원시 영상은 여러 개의 비중첩 매크로블록으로 분할되고, 그 후 인트라 또는 인터 예측을 통해 예측 매크로블록을 생성하고 대상 매크로블록에서 빼서 잔여 매크로블록을 형성합니다. 그런 다음, 잔여 매크로블록은 선택된 양자화 매개변수(QP)에 따라 변환 및 양자화됩니다. 마지막으로, 잔여 매크로블록은 엔트로피 코딩을 통해 비트스트림으로 코딩됩니다. H.264/AVC에서는 두 가지 엔트로피 코딩 모드가 허용됩니다. 하나는 컨텍스트 기반 적응 가변 길이 코딩(CAVLC)이고, 다른 하나는 컨텍스트 기반 적응 이진 산술 코딩(CABAC)입니다. 베이스라인 프로파일에서는 CAVLC 엔트로피 코딩 도구만 지원됩니다.



그림 3: H.264/AVC 인코더 아키텍처





1. 내부 예측

 

인트라 매크로블록(I-매크로블록)은 공간 상관 관계를 사용하여 부호화됩니다. 슬라이스 그룹 번호가 같은 슬라이스는 I 픽처에서 인트라 예측을 위한 예측 참조로 사용될 수 있습니다.

그림 4는 H.264에서 사용 가능한 4×4 내부 예측 모드 세트를 보여줍니다. 여기에는 DC 예측과 8개의 각도 예측이 포함되어 다양한 예측 조합을 구성할 수 있습니다. 이러한 예측 모드는 복잡한 영역에 적합합니다.



그림 4: 4×4 내부 예측 모드.






그림 5: 16×16 내부 예측 모드.






그림 5는 4개의 16×16 내부 예측 모드를 보여줍니다. 빨간색 선으로 강조된 픽셀은 현재 블록에 대한 예측을 구성하는 데 사용됩니다. 예측 블록 크기가 클수록 정확도는 떨어지지만, 예측 모드를 코딩하는 데 필요한 비트 수는 줄어듭니다.

 

그림 6은 Elecard StreamEye 소프트웨어의 인트라 4×4 매크로블록에 대한 예를 보여줍니다.

디코딩된 매크로블록은 예측된 매크로블록과 잔여 매크로블록의 조합입니다. 강조된 빨간색 블록은 원본 텍스처에 수직 텍스처가 포함되어 있으므로 인트라 4×4 수직 예측 모드로 코딩됩니다. 인코더는 레이트 왜곡 최적화(RDO) 모드 선택 과정에서 최적의 모드를 선택하려고 합니다. 매크로블록의 최적 코딩 모드는 양자화 파라미터(QP)에 의해 제어되는 비트레이트와 왜곡 비용 간의 균형에 따라 결정됩니다. 양자화 파라미터가 작을수록 왜곡이 가장 적은 모드가 선택되어 더 높은 비트레이트를 사용할 수 있습니다.



그림 6: 4×4 내부 매크로블록의 예. (a) 예측된 매크로블록. (b) 잔여 매크로블록. (c) 재구성된 매크로블록.





2. 인터 예측

 

인터 매크로블록(P-매크로블록)은 시간 상관 관계를 이용하여 부호화됩니다. 예측 블록은 DPB에 저장된 이전에 부호화된 영상들로 구성됩니다. H.264/AVC에서는 다양한 파티션 크기를 선택할 수 있습니다. 궁극적인 목표는 모션 벡터 부호화에 사용되는 총 비트 수와 잔여 데이터, 그리고 왜곡 비용 간의 균형을 찾는 것입니다.

 

그림 7에서 볼 수 있듯이, 참조 프레임에서 동일 위치에 있는 블록과 가장 일치하는 블록(즉, 자동차 타이어) 사이의 오프셋을 모션 벡터라고 합니다.



그림 7: 적합한 예측 블록 찾기.






3. 잔여 데이터

 

예측 프로세스의 출력은 현재 블록에서 예측 블록을 빼서 생성된 잔여 블록과, 인트라 예측 유형을 나타내거나 모션 블록의 추정 방식을 설명하는 매개변수 집합입니다. 그림 8은 YUV 4:2:0 샘플링을 위한 인트라 4×4 매크로블록의 잔여 블록을 보여줍니다. 블록에 표시된 번호는 전송 순서를 나타냅니다.



그림 8: 4:2:0 샘플링을 사용한 4×4 매크로블록 내 잔여 블록.






그림 9: 16×16 내부 매크로블록의 잔여 블록, 4:2:0 샘플링.






잔여 데이터는 비트스트림의 비트율에 가장 큰 영향을 미칩니다. 비트율을 제어하는 ​​한 가지 방법은 출력 비트율을 측정하여 QP 제어에 피드백함으로써 코딩된 프레임당 일정한 비트 수를 강제로 적용하는 것입니다. QP를 높이면 코딩된 비트율이 감소하고, QP를 낮추면 코딩된 비트율이 증가합니다.

 

D. 프로필

 

H.264 표준은 광범위한 잠재적 비디오 시나리오를 포괄하는 많은 구문 및 디코딩 알고리즘을 지정합니다. 프로파일은 H.264 디코더에 필요한 알고리즘 기능에 제한을 둡니다. 각 프로파일은 특정 클래스의 애플리케이션에 유용하도록 설계되었습니다. 따라서 H.264의 메인 프로파일을 준수하는 디코더는 메인 프로파일에 포함된 도구만 ​​지원하면 됩니다. 예를 들어, 베이스라인 프로파일은 비교적 낮은 연산 요구 사항을 가진 화상 회의와 같은 저지연 또는 대화형 애플리케이션에 유용할 수 있습니다. 메인 프로파일은 SD TV 서비스와 같은 기본적인 TV 애플리케이션에 적합할 수 있습니다. 하이 프로파일은 메인 프로파일에 도구를 추가하여 특히 HD TV와 같은 고해상도 서비스의 압축 효율을 향상시킬 수 있습니다.

표 II는 베이스라인, 확장, 메인, 하이 프로파일에서 지원하는 코딩 도구를 나열합니다. 특수 시나리오에 적합한 프로파일을 선택할 수 있습니다.



표 II





III – 실제 스트림 분석

 

그림 10에서 볼 수 있듯이, IP 카메라에서 실제 스트림을 캡처하고 Elecard의 StreamEye 분석 소프트웨어를 사용하여 스트림을 분석합니다. 이 경우, IDR 슬라이스(빨간색 막대)로 시작하여 P 슬라이스(파란색 막대)로 이어지는 주요 프로파일 시퀀스가 ​​있습니다. IDR 영상의 비트율이 P 영상의 비트율보다 높은 것을 알 수 있습니다. 또한, 엔트로피 코딩 방식은 CABAC이고 프레임 속도는 30입니다.






IV – 결론

본 논문에서는 H.264 비디오 압축 표준에 대한 개요를 제시했습니다. H.264는 기존 표준에 비해 레이트-디스토션 효율이 크게 향상되었습니다. 또한, 저장 또는 전송 시 용량을 줄이는 압축 효율의 비약적인 발전에 대해 설명합니다. H.265와 AV1이라는 두 가지 매력적인 비디오 압축 표준이 있지만, 제조업체와 고객의 요구를 충족하기 위해서는 아직 갈 길이 멉니다.



참고문헌

1. M. Wien, 고효율 비디오 코딩: 코딩 도구 및 사양, 베를린: Springer-Verlag, 2015.
2. IE Richardson, H.264 고급 비디오 압축 표준, 2판, 뉴욕: Wiley, 2010.
3. Y. Wang, J. Ostermann, YQ Zhang, 비디오 처리 및 통신, Prentice Hall, 2001.

728x90
반응형