1. 영상 압축의 개요
영상 압축은 기본적으로 영상 데이터 내에 존재하는 중복 요소를 발견하고, 이를 해소하는데 바탕을 두고 있다. 본 절에서는 영상에 존재한 중복 요소들을 종류별로 살펴본다. 또한, 데이터를 압축하는 기법의 일반적 분류 기준인 무손실 압축과 손실 압축에 대하여 정의해 본다.
1.1 영상 압축의 필요성
□ 압축(compression) : 주어진 원본 데이터를 적은 수의 비트로 줄여서 표현하는 것
□ 하드웨어 및 통신 기술의 발전으로 더 많은 양의 데이터를 보다 낮은 비용으로 저장하거나 전송하는 것이 가능해 졌으나, 데이터의 양도 따라서 증가하여, 데이터 압축 필요성이 제기된다.
□ 특히 압축을 하지 않은 비디오는 데이터의 양이 매우 방대하다.
▷ (예) ITU-R BT.601-5 4:2:2 형식의 디지털 비디오 영상
→ 1초 분량 비디오의 비 압축 비트량은 216Mbits이다. (유효 데이터는 약 166Mbits)
▷ 영상 부호화 표준 전송률
¤ 저전송률 영상전화(H.261) : p×64Kbps, p=1~30
¤ MPEG-1 : 1.5Mbps
¤ 국내 지상파 HDTV 데이터 전송 속도 : 19.39Mbps
□ 이와 같이 비디오 데이터를 저장/전송하기 위해서는 적절한 화질을 유지하면서 데이터를 압축하는 것이 필요하다.
1.2 영상 압축의 원리
□ 영상 데이터 압축의 기본 원리
▷ 중복 요소(redundancy)의 제거
¤ 중복 요소 : 동일하거나 유사한 데이터가 반복되어 불필요한 정보 성분을 의미한다.
¤ 데이터에 중복 요소가 많이 포함되어 있다면 그 데이터에 포함된 실제 정보의 양은 적으며, 적은 양의 데이터로 동일한(또는 유사한) 표현을 할 수 있다.
▷ 인간의 시각적 특성을 고려한 압축
¤ 시각적 정보에 따라서는 인간의 눈에 잘 민감하게 관찰되는 것도 있고, 그렇지 않은 것도 있다.
¤ 이러한 시각 특성을 활용하여 눈에 잘 띄지 않는 정보보다는 시각적으로 민감한 정보 중심으로 영상을 표현함으로써 데이터를 압축할 수 있다.
□ 비디오 데이터에 존재하는 중복 요소의 종류
▷ 공간적 중복
¤ 인접한 위치의 픽셀 값은 유사하다.
¤ [그림4]는 주어진 영상에서 (x, y) 좌표의 픽셀과 (x+1, y) 좌표의 픽셀에 대한 휘도를 각각 u, v 축의 값으로 하여 점을 찍어 인접 픽셀의 관계 분포를 그려 본 것이다. u=v 직선 부근에 점들이 밀집되어 있으며, 이는 두 인접 픽셀의 상관관계가 높다는 것을 의미한다.
¤ 이와 같이 어떠한 픽셀이 다른 픽셀과 유사하다는 것은 픽셀의 값을 예측할 수 있다는 것을 의미하며, 이는 예측 부호화의 기본 원리가 된다.
▷ 시간적 중복
¤ 동영상을 담고 있는 비디오의 경우 현재의 화면은 이전 화면과 유사한 부분이 많다. 특히 고정된 카메라로 촬영한 비디오라면 인접한 프레임들에서 배경 영역은 변화가 없고, 움직임이 있는 부분에만 차이가 발생한다.
¤ 현재 화면과 이전 화면의 차를 구한 오차 화면을 보여주고 있는데, 움직임이 있는 손 부분에 큰 값이 있고, 그 외의 화면 영역은 대부분 0이다.
¤ 따라서 인접 화면 사이에는 중복 요소가 많이 존재하며, 이를 이용하여 영상 압축을 할 수 있다.
□ 인간의 시각 특성을 고려한 압축
▷ 영상에 존재하는 시각 정보에 따라 눈의 민감도가 다르므로 이를 이용하여 데이터 압축을 할 수 있다.
¤ 주관적 중복 요소 : 보는 사람이 직관적으로 느낄 수 있는 화질에 큰 영향을 주지 않으면서 제거할 수 있는 요소
▷ 이용할 수 있는 시각 특징의 예
① 수직/수평 방향에 비해 대각선 방향의 신호 변화에 둔감하다.
② 낮은 주파수 성분에 비해 높은 주파수 성분에 대해 둔감하다.
③ 움직이는 물체에 대한 감도는 정지되어 있는 물체에 비해 낮다
④ 휘도신호에 비해 색도 신호에 대한 민감도가 낮다.
1.3 압축 기법의 종류
□ 압축 기법은 압축된 데이터를 복원했을 때 원래와 동일한 데이터를 완전히 복원할 수 있는가에 따라 무손실(lossless) 압축과 손실(lossy) 압축으로 구분할 수 있다.
(1) 무손실 압축
▷ 압축된 데이터로부터 원본 데이터를 완전하게 복원할 수 있는 압축 기법이다.
▷ 이 방법은 원본 데이터에 존재하는 통계적 중복 요소를 줄이는 방식으로, 데이터가 발생할 확률이 값에 따라 크게 다를 경우 확률이 균일한 경에 비해 실제 정보량에 해당되는 엔트로피(entropy)가 작다는 점을 이용한다. 따라서 무손실 압축 부호화 방법은 엔트로피 부호화(entropy coding)라고도 한다.
▷ 텍스트나 부호 데이터, 수치 데이터 파일 등은 무손실 압축 방법을 사용해야 한다.
▷ 무손실 압축 방법은 높은 압축률을 얻을 수는 없다. 일반적인 영상에서 무손실 압축 방법으로 얻을 수 있는 압축률은 약 3~4배 정도이다.
(2) 손실 압축
▷ 무손실 압축은 원본 데이터를 완전 복원할 수 있다는 장점은 있으나, 압축률이 낮기 때문에 무손실 압축방법만으로 영상 및 비디오를 압축하는 것은 충분하지 않다.
▷ 이 때문에 원본 영상이 어느 정도 훼손되더라도 압축률을 훨씬 높일 수 있는 방법들을 사용 하는데, 이러한 압축 방법들을 손실 압축이라고 한다.
▷ 비디오 데이터는 어느 정도 데이터에 손실이 있더라도 그 차이를 시각적으로 느끼지 못하거나, 응용이 허용하는 범위에서 차이를 수용할 수 있기 때문에 손실 압축 방법을 채용하고 있다.
2. 비디오 코덱
영상 서비스나 통신을 위한 단말기에는 영상을 압축하여 비트 스트림을 만들어 내거나 이로부터 원래의 영상을 복원하기 위한 장치가 필요하다. 본 절에서는 이러한 장치를 일컫는 부호기와 복호기, 그리고 이들을 결합하여 부르는 코덱에 대하여 살펴보고, 코덱의 구성 요소들을 간략히 살펴 보려고 한다.
2.1 비디오 코덱이란?
□ 영상을 압축하는 장치를 영상 부호기(encoder)라고 부른다. 부호기는 어떠한 신호나 데이터가 입력으로 전달되면 그 신호 또는 데이터에 해당되는 부호로 변환해 주는 장치이다. 영상에 대해서 이러한 부호화 과정은 원영상 데이터를 압축하여 약속된 비트열의 시퀀스를 만들어 낸다. 그러므로 앞으로 영상 부호기 또는 영상 인코더라고 하면 그 안에 영상 압축 모듈을 담고 있는 부호기를 생각하면 된다.
□ 마찬가지로 압축된 영상 비트열로부터 원래의 영상을 복원하는 것을 영상 복호기(디코더;decoder)라고 부른다.
□ VOD나 디지털 TV와 같은 경우 서비스를 제공하는 측에서는 원영상을 비트 스트림으로 변환하는 부호기가 사용되며, 서비스의 이용자(즉, 수신자) 측에서는 비트 스트림을 다시 영상 화면으로 변환하기 위해 복호기가 사용된다.
□ 영상전화나 영상회의 시스템과 같은 쌍방향 통신 장치에서는 통신에 참여하는 단말에 부호기와 복호기가 모두 필요하다. 이러한 경우 코덱(codec)이라는 용어를 사용한다.
□ 비디오 코덱은 가능한 적은 비트로 부호화하여 최대한 원본에 충실하게 영상을 표현하여야 한다. 그러나 비트량을 줄이려는 목표와 원본에 충실하게 영상을 표현한다는 목표는 일반적으로 상충되며, 적절한 트레이드오프가 필요하다.
2.2 비디오 코덱의 구성
□ 비디오 부호기는 시간적 모델(temporal model), 공간적 모델(spatial model), 그리고 엔트로피 부호기의 세 가지 주요 부분으로 구성되어 있다.
(1) 시간적 모델
▷ 연속적인 비디오 영상 입력에서 시간적으로 인접한 비디오 프레임 사이의 유사성을 이용하여 시간적 중복 요소를 제거한다.
▷ 부호화 대상 프레임을 ‘현재’ 프레임이라 할 때, 이전 프레임, 미래 프레임, 또는 이 둘 모두로부터 대상 프레임을 예측한다.
▷ 인접한 프레임에서 장면의 전환이 발생하지 않았다면 두 화면에는 큰 차이가 발생하지 않으므로 프레임간 예측을 통해 얻은 예측 프레임은 원본 프레임과의 오차가 크지 않을 것이다.
▷ 프레임 내의 객체나 배경이 이동하는 경우 이를 고려하지 않고 예측 프레임을 구하게 되면 오차가 크게 발생한다. 움직임을 추정하고 보상하는 움직임 보상 예측을 사용하면 이러한 오차를 줄일 수 있다.
▷ 시간적 모델의 입력 : 압축되지 않은 비디오 프레임(현재 프레임과 예측의 기준이 되는 과거 또는 미래의 프레임)
▷ 시간적 모델의 출력 : 오차 프레임(현재의 원본 프레임에서 예측된 프레임을 뺀 오차 값들로 이루어진 프레임), 움직임 벡터와 같은 일련의 모델 파라미터
(2) 공간적 모델
▷ 한 프레임 내에서 인접한 픽셀들 사이의 유사성을 이용하여 공간적 중복 요소를 제거한다.
▷ 시간적 모델을 적용하여 구한 오차 프레임은 공간적 유사성이 더욱 커져서 공간적 모델의 적용 효과를 증대시킨다.
▷ 보통 DCT와 같은 변환을 통해 입력 프레임에 대한 변환 계수를 구한다.
▷ 변환 계수는 각각의 계수가 인간 시각에 미치는 효과를 고려하여 양자화된다. 양자화 결과 변환 계수가 가지게 되는 값의 단계수가 줄어들어 데이터가 압축된다. 그러나 이러한 양자화 과정은 원본 데이터와의 차이(양자화 오차)를 유발하게 되어, 손실 부호화가 된다.
▷ 공간적 모델의 입력 : 시간적 모델에 의해 계산된 오차 프레임
▷ 공간적 모델의 출력 : 일련의 양자화된 변환 계수
(3) 엔트로피 부호기
▷ 시간적 모델의 파라미터(움직임 벡터)와 공간적 모델의 양자화된 변환계수에는 통계적 중복 요소가 존재한다. 이러한 중복 요소는 엔트로피 부호화를 통해 제거된다.
▷ 엔트로피 부호화된 비트열과 함께 복호화에 필요한 여러 가지 헤더 정보가 결합되어 부호화된 비디오 데이터 비트 스트림이 만들어진다.
3. 시간적 모델 - 움직임 보상
움직임 보상은 인접한 화면들 사이에 존재하는 움직임을 검출하여 보다 정밀한 화면 예측을 할 수 있도록 하기 위한 기술이다. 본 절에선 이와 같은 화면간 부호화의 개념을 살펴보고, 움직임 추정 및 보상을 통한 화면 예측 과정에서 고려할 여러가지 사항들에 대해 고찰한다.
3.1 이전 비디오 프레임으로부터의 예측
□ 화면 간 예측 부호화
▷ 동영상은 매우 짧은 시간 간격으로 연속하여 취득한 정지화면들의 집합이라고 할 수 있다.
예를 들어 프레임률이 초당 30프레임인 동영상은 1/30초 간격으로 표본화된 연속적인 화면들의 집합이다.
▷ 이러한 짧은 시간간격으로 인하여 인접한 프레임 사이에는 매우 높은 유사성이 있다. 이러한 특성을 이용하여 현재 화면의 픽셀 값들을 이전 화면을 기준으로 하여 예측한다면 오차가 그다지 크지 않을 수 있다.
▷ 이와 같이 인접한 화면의 유사성을 이용하여 부호화 대상 화면을 예측하고, 그 오차를 부호화하는 방식을 화면 간 예측 부호화(interframe predictive coding)라고 한다.
▷ 복호기 측에서는 역의 과정을 실행한다. 즉, 전송받은 오차 화면에 기 복호화된 이전 화면을 더하면 현재 화면을 구할 수 있다.
□ 오차 화면은 오차가 0인 부분을 회색으로 하고, 오차가 양인 경우 그 크기에 따라 더 밝게, 오차가 음인 경우 그 크기에 따라 더 어둡게 표현한 것이다. 이러한 오차의 주 요인은 화면 사이에 존재하는 움직임이다.
□ 대개의 경우 이와 같은 간단한 화면 간 예측 부호화만으로도 화면 내에 존재하는 중복성만을 제거하는 화면 내 부호화에 비해 훨씬 높은 압축 효율을 얻을 수 있다.
3.2 움직임 추정과 움직임 보상 예측
□ 인접 화면의 변화 발생 요인
▷ 객체의 움직임 : 형체가 변하지 않는 견고한 물체(예 : 자동차), 변형될 수 있는 객체(예 : 사람의 팔)
▷ 카메라의 움직임 : 팬, 틸트, 줌 인/웃
▷ 노출되는 영역 : 객체가 움직임에 따라 그 객체에 가려져 있던 배경이나 다른 객체가 보이게 된다.
▷ 빛의 변화
▷ 장면의 전환
□ 움직임 추정 및 보상
▷ 만약 현재 화면의 화소가 이전 화면의 어느 위치에 대응되는가를 구할 수 있다면 보다 우수한 예측을 할 수 있다.
▷ 이를 위해 기준 화면과 부호화 대상 화면 사이의 움직임을 구하는 것을 움직임 추정(motion estimation)이라고 한다.
¤ 현재(t) 화면의 점(또는 영역)에 대해 움직임 추정을 통해 이전(t-Δt) 화면에서의 대응 위치를 추정함으로써 움직임 벡터 D=(Δx, Δy)T를 구한다.(그림10)
▷ 또한 움직임 추정의 결과를 이용해서 예측 화면을 구하여 예측 오차를 계산하는 일련의 과정을 움직임 보상 예측 (motion compensated prediction)이라고 한다.
¤ 현재 화면의 예측은 각각의 점(또는 영역) 별로 움직임 벡터 D 만큼 역으로 계산한 위치의 점(또는 영역)의 값이다.
f˜(x, y, t) = fˆ(x−∆x.y−∆y, t−∆t)
¤ 이와 같이 예측된 화면을 원 화면에서 뺀 것이 예측 오차가 된다.
e(x, y, t) = f(x, y, t) − f˜(x, y, t)
▷ 움직임 추정과 움직임 보상을 통해 부호기가 전달하는 내용은 e(x, y, t)와 각각의 움직임 예측 단위에 대한 움직임 벡터 D이다.
▷ 움직임 보상에 의한 예측 오차 e(x, y, t)의 정보량 감소가 움직임 보상에 의해 추가되는 움직임 벡터들을 표현하기 위한 정보량 증가에 비해 더 작다면 효과가 없으므로, 이러한 문제가 발생하지 않도록 하는 움직임 보상 알고리즘을 개발한다.
3.3 블록 기반 움직임 추정 및 보상
□ 현재 프레임을 M×N 크기의 블록(일반적으로 정사각형 블록)으로 분할하고, 각 블록 단위로 움직임을 추정하여 보상하는 것이 가장 일반적인 방법이다. 이와 같은 블록 단위 움직임 보상을 하는 이유는
① 움직임 벡터로 인해 추가되는 정보가 움직임 보상에 의한 압축 효과를 상쇄해 버리지 않도록 적절한 크기를 단위로 처리하는 것이 좋다.
② 상대적으로 간단하고 계산하기 쉽다.
③ DCT와 같은 블록 기반 영상 변환과 의미가 맞는다.
□ 블록 기반 움직임 추정 및 보상을 하기 위해서는 각각의 M×N 블록에 대해 다음의 과정을 실행한다.
① 현재 프레임의 M×N 블록과 가장 잘 일치하는 M×N 영역을 기준 프레임(참조 프레임)의 탐색 영역 내에서 찾는다.
※ 기준 프레임은 과거 또는 미래의 프레임이 될 수 있다. 수신측과 동일한 화면을 기준 프레임으로 사용해야 하므로, 기준 프레임은 원 영상이 아니라 부호화 된 영상으로부터 복호화된 영상이다.
② 선택된 블록을 현재 화면의 해당 블록에 대한 예측 블록으로 취한다. 현재 화면의 블록에서 그 블록에 대한 예측 블록을 빼서 M×N 오차 블록을 만든다.
③ 오차 블록과 움직임 벡터를 부호화하여 전달(저장)한다.
□ 블록 기반 움직임 추정 및 보상의 문제점
▷ 실제 영상에 존재하는 객체는 직사각형 경계와 일치하는 경우가 드물다.
▷ 객체가 직선 운동만 하지는 않는다. 즉, 객체가 변형하거나 회전, 뒤틀림 등의 움직임을 할 수도 있다.
3.4 블록 기반 움직임 추정 및 보상 알고리즘의 고려 사항
(1) 블록의 크기
□ 화면 사이에서 객체의 움직임은 균일하게 분할된 직사각형 영역과 맞아 떨어지지 않는다. 블록의 크기가 크면 이러한 문제가 더 크게 나타나며, 블록이 작아지면 오차가 줄어든다.
□ 블록 크기가 16×16인 경우, 8×8인 경우, 4×4인 경우 움직임 보상으로 구한 현재 프레임에 대한 예측 화면
▷ PSNR이 각각 33.5dB, 37.0dB, 39.2dB로 작은 크기의 블록을 사용할 경우 좋은 성능을 보여주고 있다.
▷ 이에 따라 오차 프레임의 에너지가 줄어들어서 오차 프레임을 부호화하는데 필요한 비트량이 감소한다.
□ 블록의 크기를 작게 하면 블록의 수가 증가하며, 이에 따라 움직임 벡터의 수가 많아지게 되므로 전송할 비트량이 증가한다. 비트량 증가가 오차 에너지 감소에 따른 이득보다 커지면 전체적인 성능은 오히려 떨어진다.
☞ 보완책 : 영상의 특성에 따라 블록의 크기를 변화시킨다.
▷ 단조롭고 변화가 없는 영역 : 큰 블록을 사용
▷ 복잡한 움직임이 있는 영역 : 작은 블록을 사용
(2) 서브픽셀 움직임 보상
□ 객체의 움직임이 정수 픽셀 위치에 맞아 떨어지는 경우는 드물다. 일반적으로는 픽셀과 픽셀 사이의 위치가 정확히 이동한 위치가 된다.
□ 그러므로 기준 영상에서 픽셀들 사이의 픽셀들을 보간하여 움직임을 추정하면 보다 정교한 움직임 보상을 할 수 있다.
▷ 1/2 픽셀 보상 : 기준 프레임의 픽셀들 사이의 중간 위치의 값을 보간을 통해 구하여 대상 블록과 유사도를 계산한다.
▷ 1/4 픽셀 보상 : 기준 프레임 픽셀 위치의 1/4 간격으로 화소를 보간하여 대상 블록과 유사도를 계산한다.
□ 1/4 픽셀 위치에서의 움직임 추정
① 정수 픽셀 위치에서 가장 정합이 잘 이루어지는 위치를 찾는다. (a 위치)
② 픽셀 a 주변의 8개의 1/2 화소 위치의 값들을 기준 화면의 정수 위치 픽셀들을 이용하여 보간한다.
③ 보간된 8개의 기준 화면 블록들 중에서 가장 잘 정합이 이루어지는 위치를 찾는다. (b 위치)
④ b 주변의 8개의 1/4 화소 위치의 값들을 기준 화면의 정수 위치 픽셀들을 이용하여 보간한다.
⑤ 보간된 8개의 기준 화면 블록들 중에서 가장 잘 정합이 이루어지는 위치를 찾는다. (c 위치)
(3) 장면 전환
□ 장면 전환이 발생하면 인접한 두 화면의 유사도가 매우 낮아지게 된다. 예를 들어 뉴스 비디오 중에서 앵커가 진행하는 스튜디오 화면이 이어지다가 야외에서 촬영된 자료화면으로 장면 전환이 발생하면 이러한 변화의 경계에 있는 두 인접 화면은 유사성이 없다.
□ 이와 같은 경우는 움직임 보상을 포함한 화면간 부호화는 효과적이지 못하다. 이때에는 화면간 부호화를 하지 않고, 화면 내 부호화를 하는 것이 보다 효율적일 수 있다.
정리하기
1. 요약정리
□ 압축되지 않은 비디오는 매우 많은 양의 데이터를 포함하고 있으므로, 저장, 통신 등을 위해서는 압축을 하여 양을 줄일 필요가 있다.
□ 데이터 압축의 기본 원리는 데이터 내에 존재하는 중복 요소를 제거하는 것이다.
□ 비디오 데이터에 존재하는 중복 요소는 공간적 중복, 시간적 중복, 그리고 인간의 시각 특성에 따른 주관적 중복 요소가 있다.
□ 압축 기법은 압축된 데이터로부터 원본 데이터를 완전히 복원할 수 있는 무손실 압축과 원본이 어느 정도 훼손되더라도 압축률을 높이는 손실 압축으로 분류할 수 있다. 비디오 데이터 압축에는 손실 압축이 사용된다.
□ 비디오 코덱은 비트량을 줄이려는 목표와 원본을 충실하게 표현하는 목표 사이에서 적절한 절충을 하여 부호화 한다.
□ 비디오 부호기는 화면간 예측 부호화를 하는 시간적 모델, 한 화면 내의 공간적 중복성을 제거하는 DCT와 양자화기 등을 포함하는 공간적 모델, 그 결과를 다시 무손실 부호하하는 엔트로피 부호기로 구성된다.
□ 화면간 예측 부호화는 기준 화면으로부터 예측한 현재 화면과 실제 현재화면 사이의 오차를 구하여, 압축 부호화 할 데이터의 에너지를 줄인다.
□ 인접 화면 간에는 객체의 움직임, 카메라의 움직임, 가려진 영역의 노출, 빛의 변화 등으로 인해 변화가 존재한다.
□ 움직임 추정 및 보상 예측 부호화에서는 현 화면의 화소 집합이 기준 화면의 어느 위치에 대응되는가를 계산하여 현 화면의 화소 집합의 값을 예측하는 방식이다.
□ 움직임 보상의 출력은 오차 프레임과 움직임 벡터이다.
□ 움직임 추정 및 보상은 일반적으로 블록 단위로 이루어진다. 블록의 크기가 작을수록 정교한 움직임 보상을 할 수 있지만, 전송해야 하는 움직임 벡터의 수가 증가한다.
□ 움직임의 단위는 픽셀 위치에 맞아 떨어지지 않으므로, 서브픽셀 움직임 보상을 통해 오차를 더욱 줄일 수 있다.
2. 참고자료
□ 김재균 저, 영상통신시스템, 영지문화사, 2000.