Instroduction to Video Coding
Video Coding 이란?
- Video Coding
- 카메라에서부터 비디오가 캡처되면 인코더를 통해서 압축을 하여 bitstream으로 만든 후 전송해서 디코딩 과정을 거친 후 영상이 재생된다
- Encoder와 Decoder로 구성된다
- Encoder와 Decoder를 합쳐서 Video CODEC 이라고 한다
- Video Coding이 중요한 이유
- 비디오 데이터가 방대하고, Video Traffic이 증가하고 데이터 양이 계속 늘어나고 있기 때문에 Compression하는 것이 Visual Communication Service에서 핵심적인 구성요소이다
Video Coding and Standard
- interoperability 통신 응용같은 경우 상호운용성이 필수적으로 요구되기 때문에 Video Coding은 표준, 특히 국제 표준 기술을 이용해 코덱이 활용되고 있다
Scope of Video Coding Standard
흐름
- Input(image/video) - Pre-Processing - Encoding - Decoding - Post-Processing & Error Recovery - Output(image/video)
- 위 과정 중 Decoding이 Scope of Standard(표준의 범위)가 된다
Scope of Standard(표준의 범위)
- bitstream format
- 전송되는 bitstream format을 임의의 디바이스에서 해석을 해야 하기 때문에 bitstream format 해석을 하려면 Syntax가 무엇이고 각각의 Syntax의 Element의 의미가 무엇인지를 Standard로 define해야 한다
그런 Syntax bitstream을 받았을 때 bitstream Element를 이용해서 어떻게 Decoding을 해라를 알려주는 decoding process가 normative 표준이 된다
- 표준의 범위를 주로 normative part라고 부른다
- 디코딩 파트를 최소한의 범위 내에서 표준해서 규정한다
Video coding standard bodies
- ISO/IEC JTC 1/SC 29/WF 2/4/5/7 MPEG(Moving Picture Experts Group)
- 방송과 엔터테인먼트를 위한 비디오 코덱 표준에 집중하고 있다
- ITU-T SG 16/Q.6 VCEG(Video Coding Experts Group)
- 유선 통신을 위한 비디오 코덱 표준을 만들어 오고 있다
- Joint Teams-JVT, JCT-VC, JVET
- ISO/IEC MPEG과 ITU-T VCEG이 같이 만들었다
- 비디오 표준을 만드는 두 개의 대표적인 표준 바디 : MPEG과 VCEG
간단한 표준화 역사
- H.261 (1990), MPEG-1(1993)
- MPEG-2/H.262
- MPEG-4 AVC/H.264
- HEVC/H.265
- VVC/H.266
- 압축률 400:1
- UHD, HDR을 위한 표준
- Video : 이미지들의 시퀀스
- Frame : 이미지 한 장
- 해상도 : Frame 내에서 가로, 세로에 화소의 개수
- Frame rate : 몇 개의 frame이 전송되느냐
- 아날로그 신호의 한 줄을 스캔하면 밝기 변화의 신호가 나오는데 이를 Time을 축으로 Sampling을 할 수 있다
- Video Scanning
비디오 스캐닝에서 '필드(Field)'는 비디오 프레임을 구성하는 두 부분 중 하나를 의미합니다. 일반적으로 비디오는 여러 개의 정적 이미지인 프레임들이 빠른 속도로 연속적으로 표시되는 것으로, 이를 통해 움직이는 영상을 생성합니다.
전통적인 아날로그 TV 시스템에서는 '인터레이스 스캔(Interlaced Scan)' 방식이 사용되었습니다. 이 방식에서는 각 비디오 프레임이 두 개의 필드로 나뉘어, 하나는 홀수 라인을, 다른 하나는 짝수 라인을 스캔합니다. 이 두 필드가 교차되어 표시되므로 '인터레이스(Interlaced)'라는 이름이 붙었습니다. 이 방식은 화면의 깜빡임을 줄이고 동일한 대역폭에서 더 많은 데이터를 전송할 수 있게 해줍니다.
그러나 현대의 디지털 비디오 시스템에서는 '프로그레시브 스캔(Progressive Scan)' 방식이 더 많이 사용됩니다. 이 방식에서는 각 프레임이 하나의 완전한 이미지로 처리되므로 필드 개념이 적용되지 않습니다. 이 방식은 화질이 더욱 선명하다는 장점이 있습니다.
ITU-R. 601[ITU-R, BT601]
- 아날로그 TV 신호를 Video 신호로 바꾸는 표준
- 디지털 비디오를 샘플링하고 표현하는 방법에 대한 규정
- 색공간: YCbCr 색공간을 사용
- 샘플링: 이 표준은 4:2:2 및 4:1:1 크로마 서브샘플링을 정의
- 해상도: ITU-R BT.601은 525 라인(NTSC, 북미 및 일부 아시아 국가에서 사용)과 625 라인(PAL/SECAM, 대부분의 유럽 및 아시아 국가에서 사용) 시스템에 대한 해상도를 정의
YCbCr Color Model
- 아날로그
- YUV를 아날로그에서 사용
- R, G, B로 부터 행렬 연산을 통해 YUV를 구한다
- 디지털
- 디지털에서는 축을 돌려서 YCbCr을 쓴다
- R, G, B로 부터 행렬 연산을 통해 YCbCr을 구한 뒤 추가로 offset을 더하여 구한다
- CbCr은 YUV의 U와 V의 변형으로 만들어 진다
- Luminance
- Y에 해당함
- 대역이 더 넓은 high frequency성분까지 있다
- 다른 부분보다 더 많은 정보를 가지고 있다
- Chrominance
Color Subsampling
Color Subsampling은 보통 4:4:4, 4:2:2, 4:2:0 등의 형식으로 표기됩니다. 첫 번째 숫자는 루미넌스의 샘플링 레이트를 나타내고, 두 번째와 세 번째 숫자는 크로마의 샘플링 레이트를 나타냅니다. 예를 들어, 4:2:2는 크로마 데이터가 루미넌스 데이터의 절반만큼 샘플링되었음을 의미합니다.
따라서 Color Subsampling은 비디오 데이터를 효과적으로 압축하면서도 사람 눈에는 거의 차이가 느껴지지 않게 하는 중요한 기술입니다.
- 4:2:2 : 주로 스튜디오에서 주로 사용
- 4:2:0 : 비디오 압축할 때 주로 사용
Basic Concept of Video Coding
Video compression
- Remove redundancy
- 데이터의 중복을 없앤다
- 중복된 정보를 잘 찾으려면 predictoin을 잘해야 한다
- Discard information
- 중복된 정보를 찾기도 어려울 뿐더러 중복제거 만으로도 부족할 수 있다
- 정보가 있어도 사람이 보지 못하는 정보를 없앤다
Basic techniques
- Spectral redundancy (스펙트럼 중복성)
- Spatial redundancy (공간 중복성)
- Predictive coding, Transform coding, Quantization을 통해 중복성 제거
- Temporal redundancy (시간적 중복성)
- Statistical redundancy (통계적 중복성)
Basic techniques
- Predictive coding
- Spatial prediction, intra prediction
- Temporal prediction, intra prediction
- Statistical prediction
- Spatial prediction and Temporal prediction
- Transform coding and Quantization
- Quantization based on HVS(Human Visual System)
- Entropy coding
Coding Artifact Reduction
- 디지털 비디오나 이미지를 압축하고 인코딩할 때 발생하는 비원본적인 효과, 즉 '아티팩트'를 최소화하는 과정을 의미
- 이 아티팩트는 데이터의 압축률을 높이는 과정에서 발생하며, 이는 종종 이미지의 품질을 저하시킨다
- Deblocking filter
- 디지털 비디오나 이미지에서 블록화 현상을 줄이는 데 사용되는 기술
- 블록화 현상 : 미지나 비디오를 작은 블록 단위로 압축하고 인코딩할 때 발생하는 시각적인 아티팩트
- Sample adaptive offset(SAO)
- 고효율 비디오 코딩(High Efficiency Video Coding, HEVC) 표준에 포함된 기술로, 비디오의 품질을 향상시키기 위해 사용된다
- Adaptive loop filter(ALF)
- 효율 비디오 코딩 (High Efficiency Video Coding, HEVC) 표준에 사용되는 기술 중 하나
- 이 기술은 디지털 비디오의 인코딩과 디코딩 과정에서 발생하는 예측 오차를 감소시키는 데 도움이 된다
Coding Efficiency Evaluation
- Coding Efficiency : 압축이 얼마나 잘 되었느냐
= 동일한 화질에서 빛을 얼마나 적게 쓰느냐
= 동일한 빛에서 화질이 얼마나 좋느냐
- R-D(rate-distortion) : 율과 왜곡
- Rate metrics(비트율) - BPP(bits/pixel), BPS(bits/second)
- Quality metrics(화질) - PSNR, MS-SSIM, MOS
- bjontegaard Delta (BD) - rate, BD-PSNR
- 비디오 코딩 표준 간의 성능을 비교하는 데 사용되는 방법입니다. 이 방법은 시각적 품질과 비트레이트, 즉 압축 효율 사이의 관계를 측정합니다
- Complecity evaluation(복잡도)
PSNR(peak signal-to-noise ratio)
- Objective quality : PSNR
- 피크 신호 대 잡음비
- 지털 이미지나 비디오의 품질을 측정하는 데 사용되는 지표
- 원본 이미지나 비디오와 압축되거나 잡음이 추가된 이미지나 비디오 사이의 차이를 측정
- 높은 PSNR 값은 이미지나 비디오의 품질이 높음을 의미
- Subjective quality
- MOS(Mean Opinion Scale)
- 음성, 비디오, 멀티미디어 품질을 평가하는 데 사용되는 척도
- 1(매우 나쁨)에서 5(매우 좋음)까지의 범위를 가진다
BD-Rate, BD-PSNR
- BD-Rate(평균 비트율 증가, %)
- 두 비디오 코딩 표준 간의 비트레이트 차이를 측정
- BD-rate 값이 작을수록, 해당 코딩 표준의 압축 효율성이 더 높다는 것을 의미
- BD-PSNR(평균 화질 증가, dB)
- 두 비디오 코딩 표준 간의 시각적 품질 차이를 측정
- BD-PSNR 값이 높을수록, 해당 코딩 표준의 비디오 품질이 더 높다는 것을 의미
Video Coding Technologies
Intra Prediction
- 비디오 인코딩 과정에서 사용되는 기술 중 하나로, 현재의 픽셀 블록이나 프레임 내에서 다른 픽셀들의 패턴을 참조하여 특정 픽셀 블록의 값을 예측하는 방법
- 이미지 또는 비디오 프레임 내에서의 상관 관계를 이용
- 예를 들어, 특정 픽셀은 주로 주변 픽셀과 유사한 색상 또는 밝기 값을 가질 가능성이 높습니다. 인트라 예측은 이러한 패턴을 인식하고 이를 기반으로 현재 블록의 픽셀 값을 예측한다
- 인트라 예측은 다양한 방향(예: 수평, 수직, 대각선 등)과 모드를 사용하여 예측을 수행하며, 가장 낮은 에러를 가지는 예측 모드를 선택한다
- 이렇게 예측된 픽셀 값과 실제 픽셀 값 간의 차이(잔차)만 인코딩하고 전송하므로, 비디오 데이터의 압축 효율을 크게 향상시킬 수 있다.
Inter Prediction
- 현재 프레임의 픽셀 값을 이전 또는 이후의 프레임들로부터 예측하는 방법
- 이 기술은 주로 비디오에서 시간적 연속성을 이용하여 데이터를 효율적으로 압축하는 데 사용된다
- 모션 추정(Motion Estimation)과 모션 보상(Motion Compensation) 두 단계로 이루어진다
- 모션 추정: 현재 프레임과 참조 프레임 간의 움직임을 추정합니다. 이는 현재 프레임 내의 각 블록에 대해 가장 비슷한 블록을 참조 프레임에서 찾는 과정으로 이루어집니다.
- 모션 보상: 추정된 움직임 정보를 이용하여 현재 프레임의 픽셀 값을 예측합니다. 이는 참조 프레임의 해당 블록 값을 현재 프레임의 해당 위치로 복사하여 이루어집니다.
- 이렇게 예측된 픽셀 값과 실제 픽셀 값 간의 차이(잔차)만을 인코딩하고 전송하므로, 비디오 데이터의 압축 효율을 크게 향상시킬 수 있습니다.
Prediction block size
- 작은 블록 크기를 사용하면 더 상세한 움직임을 추정하고 더 정확한 예측을 수행할 수 있지만, 인코딩 복잡도가 증가하고 더 많은 메타데이터를 필요로 합니다. 반면, 큰 블록 크기를 사용하면 인코딩 복잡도가 감소하고 메타데이터의 양이 줄지만, 움직임의 상세 정보를 잃을 수 있습니다.
- 벡터 공간의 두 개의 점이 있을 때 서로 직교하는 축을 바꾸면 값도 바뀌게 된다
- 축을 잘 설정하면 본래의 벡터 값(에너지)가 변환 후에는 특정 값에 에너지가 몰리도록 할 수 있다
- Orthogonal Transform
- Transform 의 종류
- KLT(Karhunen-Loeve Transform) : 이상적인 Transform
- DFT(Discrete Fourier Transform) : signal processing
- DCT(Discrete Cosine Transform) : 이미지/비디오 compression 표준
- DST(Discrete Sine Transform)
- DHT(Discrete Hadamard Transform) : 간단한 형태
- DWT(Discrete Wavelet Transform)
Quantization
- 양자화 과정
- Temporal 방향으로 샘플링
- 연속적인 신호를 유한하게 샘플링 -> 양자화
- 양자화
- 샘플링한 신호를 시간에 따른 주파수 축을 유한 개의 양자화 레벨로 나눈 후 연속적인 아날로그 값을 나눈 양자화 레벨에 Mapping하는 것이라고 할 수 있다
- bit depth
- 디지털 시스템에서 색상, 오디오, 비디오 등의 데이터를 표현하는 데 사용되는 비트 수를 의미
- bit depth를 조절하는 것도 양자화를 거친다
Entropy Coding
출처 및 참조
- MPEG뉴미디어포럼/한국방송∙미디어공학회 2023 Summer School
- 김재곤, Media Communication Laboratory, 한국항공대학교