이하, 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 우선 각 도면의 구성 요소들에 참조 부호를 부가함에 있어서, 동일한 구성 요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다. 또한, 이하에서 본 발명의 바람직한 실시예를 설명할 것이나, 본 발명의 기술적 사상은 이에 한정하거나 제한되지 않고 당업자에 의해 변형되어 다양하게 실시될 수 있음은 물론이다.
도 1은 본 발명의 바람직한 실시예에 따른 모델 파라미터 기반의 비디오 인코딩 비트율 제어방법(이하, "비트율 제어방법")의 흐름도이다.
단계 S10은 현재 프레임의 바로 이전 프레임까지의 MAD 값들의 평균을 계산하는 단계이다.
MAD(Mean Absolute Difference, 평균절대오차)는 각 프레임에 있어서 입력된 프레임과 재구성된 프레임과의 오차, 즉 차분 영상(잔여 신호)을 의미한다. 현재 프레임의 프레임 번호를 i라 하고, 현재 프레임의 이전 프레임들의 프레임 번호를 j라 하면, 현재 프레임의 바로 이전 프레임(i-1)까지의 MAD 평균값은 아래 수학식과 같이 계산된다.
단계 S12는 현재 프레임의 MAD, 즉 예측된 MAD(Predicted MAD, 이하 "PMAD")를 계산하는 단계이다.
H.264 등에서는 현재 프레임의 부호화 과정이 완료되기 전에는 현재 프레임의 MAD를 구할 수 없기 때문에, 이전 프레임들의 MAD로 현재 프레임의 MAD를 예측한 PMAD를 사용하는 것이 바람직하다. 이전 프레임의 MAD를 이용하여 PMAD를 계산하는 방법으로는 여러 가지가 가능하며, 예컨대 이전 프레임의 MAD를 사용하여 선형적으로 PMAD를 계산할 수 있다.
단계 S14는 상기 단계에서 구한 평균 MAD와 PMAD를 이용하여 MAD 비(이하, "RatioMAD")를 계산하는 단계이다.
RatioMAD는 아래 수학식과 같이 계산된다.
PMADi는 현재 프레임인 i프레임의 MAD 값(예측에 의해 구한 값)을 의미한다.
RatioMAD는 이전 프레임까지의 MAD 값의 평균값에 대한 PMAD의 비율을 의미하며, 이전 프레임에 대한 현재 프레임의 차분 영상을 반영한 영상 복잡도이다.
이러한 RatioMAD는 차분 영상이라는 일 측면에서 프레임의 영상 복잡도를 반영하는 수치이기는 하나, MAD는 텍스쳐(texture) 비트만을 대표할 수 있고 실제 헤더(header) 비트의 양을 대표할 수는 없다. H.264에서는 MPEG-2, 4 또는 H.263과 같은 기존의 비디오 코덱 표준에 비해 헤더 비트의 양이 상대적으로 크다. 따라서, H.264에서는 MAD 만으로는 프레임의 복잡도를 대변할 수 있다고 보기 어렵고, 이를 통해 일정 화질을 달성하기 어려운 측면이 있다.
따라서, 본 발명에서는 프레임의 복잡도를 측정함에 있어 RatioMAD 이외에도 모델 파라미터를 고려함으로써 움직임이 다양하거나 복잡도 변화가 큰 비디오에서도 화질 변동에 의한 품질 열화를 적절히 완화할 수 있도록 한다.
단계 S20은 현재 프레임의 바로 이전 프레임까지의 모델 파라미터(K) 값들의 평균을 계산하는 단계이다.
상기에서 언급한 바와 같이 MAD 만으로 영상 복잡도를 측정하여 비트율 제어를 수행하면 장면 변화가 크지 않은 영상에서는 화질 변동을 줄이고 평균 화질을 향상시킬 수 있으나, 복잡도가 크고 장면 전환이 빈번하게 일어나는 영상에서는 그와 같은 효과를 나타낼 수 없으며, 특히 장면 전환에서 화질의 급격한 변동을 완화할 수 없게 된다. 이는 동일한 MAD 값을 갖더라도 시퀀스나 양자화 파라미터가 다르면 비트값이 크게 다를 수 있기 때문이다.
양자화 파라미터는 영상의 품질과 출력 비트 R을 결정하는 주요한 파라미터이다. 따라서, 영상의 복잡도 측정에 있어서는 양자화 파라미터에 관계없이 영상의 고유한 특성을 반영할 수 있어야 한다. 비트 R과 MAD는 근사하게 선형관계를 갖고, 비트 R과 양자화 스텝의 크기 Q는 반비례하는 것으로 나타나므로, 모델 파라미터 K는 아래 수학식과 같이 표현될 수 있다.
여기서 모델 파라미터 K는 R과 MAD/Q2 관계에서의 기울기로 볼 수 있으며, 프레임의 복잡도를 대표할 수 있는 파라미터로 볼 수 있다.
현재 프레임의 프레임 번호를 i라 하고, 현재 프레임의 이전 프레임들의 프레임 번호를 j라 하면, 단계 S20에서 현재 프레임의 바로 이전 프레임(i-1)까지의 K 평균값은 아래 수학식과 같이 계산된다.
단계 S22는 현재 프레임의 K, 즉 예측된 K(Predicted K, 이하 "PK")를 계산하는 단계이다.
PMAD와 마찬가지로 K도 현재 프레임의 부호화가 완료되어야 구할 수 있으므로, 이전 프레임들의 K를 이용하여 현재 프레임의 K를 예측한다. 예측은 다양한 방식이 가능하며, 일례로 아래 수학식에 의해 이루어질 수 있다.
PKi는 i번째 프레임에서의 예측된 모델 파라미터이고, Ki-1은 (i-1)번째 프레임의 모델 파라미터이다. 일반적으로 현재 프레임은 이전 프레임과 가장 상관도가 높다고 예상할 수 있으므로, 이와 같이 모델 파라미터를 예측할 수 있다. 여기서, a0와 a1은 적절한 상수값이며 예컨대 a0 = 0, a1 = 1로 결정될 수 있다.
단계 S24는 상기 단계에서 구한 평균K와 PK를 이용하여 K 비(이하, "RatioK")를 계산하는 단계이다.
RatioK는 아래 수학식과 같이 계산되며, 이전 프레임까지의 K값의 평균값에 대한 PK 값의 비율을 의미한다.
PKi는 현재 프레임인 i프레임의 K 값(예측에 의해 구한 값)을 의미한다.
단계 S30은 RatioMAD와 RatioK 값을 이용하여 프레임의 영상 복잡도를 계산하는 단계이다.
프레임의 영상 복잡도는 아래 수학식과 같이 계산될 수 있다.
여기서, Complexityi는 현재 프레임(i번째)의 영상 복잡도를 나타낸다.
단계 S40은 모델 파라미터를 반영한 현재 프레임의 복잡도를 이용하여 현재 프레임에 대한 비트 할당을 수행하는 단계이다.
프레임의 비트 할당에 있어서는 해당 프레임의 영상 복잡도와 더불어, 한 프 레임에 할당할 수 있는 비트수와 디코더 버퍼를 고려하는 것이 바람직하다. 따라서, 현재(i번째) 프레임에 할당할 비트 Ti는 아래 수학식과 같이 계산될 수 있다.
여기서, B는 비트율(bit rate, bit/sec), F는 프레임 율(frame rate, frame/sec)을 나타낸다. 따라서, B/F는 비트율과 프레임 율의 비로써 모든 프레임에 균등한 비트를 분배했을 때 한 프레임에 할당할 수 있는 비트를 의미한다. β는 0과 1 사이의 가중치로, 예컨대 0.9의 값을 가질 수 있다. Γ는 상수 값으로, 일반적으로 B프레임(Bi-directional Predictive Frame)이 없을 때는 0.5, B프레임이 있을 때는 0.25로 설정된다.
CBF는 Current Buffer Fullness의 약자로, CBFi -1은 (i-1)번째 프레임이 코딩된 후 버퍼에 채워진 상태값을 의미한다. TBL은 Target Buffer Level의 약자로, TBLi는 현재(i번째) 프레임의 목표 버퍼 레벨이다. 일례로, TBL 값은 아래와 같이 구할 수 있으며, 이러한 방법으로 한정되지는 않는다.
TBL2 = CBF2
여기서, CBF2는 2번째 프레임의 인코딩 후의 CBF를 의미한다.
여기서, NP는 하나의 GOP(Group Of Picture) 안에 있는 P 프레임의 총 개수를 의미한다.
단계 S50 및 S60은 상기에서 할당된 비트에 맞게 양자화 파라미터 QP를 결정하는 단계이다. 양자화 파라미터의 결정은 두 단계로 수행될 수 있다.
첫째, 계산식에 의해 양자화 파라미터를 계산하는 단계(S50)이다.
양자화 파라미터 QP는 양자화 스텝(step)의 크기 Q와 다음과 같은 관계에 있다.
Q = 2( QP -4)/6
따라서, 양자화 파라미터 QP를 구하기 위해서는 현재 프레임의 양자화 스텝의 크기 Q를 계산하면 된다. 현재(i번째) 프레임의 양자화 스텝의 크기 Qi는 PKi 및 PMADi 값에는 근사적으로 비례하고, 할당된 비트 Ti에는 반비례하므로, 아래 수학식과 같이 표현할 수 있다.
수학식 12는 수학식 3을 Q에 관해 전개한 것이다.
둘째, 버퍼의 상태를 고려하여 양자화 파라미터를 재조정하는 단계(S60)이다.
양자화 파라미터의 결정에 있어 해당 프레임에 할당된 비트를 고려하여야 함은 물론, 버퍼의 넘침이나 고갈을 방지하기 위해 양자화 파라미터 변화를 제한할 필요가 있다. 양자화 파라미터의 재조정은 ① 버퍼의 급격한 증가 방지와, ② 버퍼 사이즈를 고려한 QP 범위 제한의 측면에서 이루어질 수 있다.
① 버퍼의 급격한 증가 방지
현재 프레임의 QP를 결정함에 있어서는 이전 프레임의 버퍼 채워짐 상태와, 이전 프레임의 QP와 현재 프레임의 QP 간 관계를 고려하는 것이 바람직하다. 이를 수학식으로 표현하면 아래와 같다.
여기서, CBFi - 1는 (i-1)번째 프레임의 버퍼 채워짐 상태를, CBFi -2는 (i-2)번째 프레임의 버퍼 채워짐 상태를 의미한다.
따라서, 수학식 13은 (i-1)번째 프레임의 CBF가 (i-2)번째 프레임의 CBF보다 크고, 수학식 11에서 계산된 QP가 이전 프레임(i-1번째)의 QP보다 작다면, 이를 조정하여 현재 프레임의 QPi 값을 이전 프레임의 QPi -1 값으로 유지함을 의미한다. 이와 같은 과정을 통하여 버퍼가 급격하게 증가하는 것을 방지함으로써 데이터가 손 실되는 현상을 방지할 수 있다.
② 버퍼 사이즈를 고려한 QP 범위 제한
프레임 간의 QP 차이가 클 경우 화질 변화가 크기 때문에 프레임 간의 QP 변화는 제한할 필요가 있다. 이는 이전 프레임과 현재 프레임의 QP 간 차이를 제한함으로써 수행될 수 있다. 본 발명에서는 아래 수학식과 같이 상위 제한의 영역과 하위 제한의 영역 범위를 다르게 설정하고, 버퍼의 상태를 고려하여 QP 범위를 제한한다.
if(CBFi -1 ≤ 0.5×Bs)
ⅰ) QPi = MIN(QPi -1 +2, QPi)
QPi = MAX(QPi -1 -1, QPi)
else
ⅱ) QPi = MIN(QPi -1 +2, QPi)
QPi = MAX(QPi -1, QPi)
여기서, MIN(A, B)는 A, B 중에서 작은 값을, MAX(A, B)는 A, B 중에서 큰 값을 의미한다.
수학식 14의 ⅰ)은 이전 프레임(i-1번째)의 버퍼 채워짐 상태가 버퍼 사이즈 Bs의 반 이하인 경우를 의미하고, ⅱ)는 이전 프레임(i-1번째)의 버퍼 채워짐 상태 가 버퍼 사이즈 Bs의 반을 초과하는 경우를 의미한다. 따라서, ⅰ)의 경우에는 현재 프레임의 양자화 파라미터 QPi의 값을 낮추어 프레임 간 QP 변화량을 완화하는 것이 바람직한 반면, ⅱ)의 경우에는 QPi의 값을 높여 프레임 간 QP 변화량을 완화하는 것이 바람직하다.
예컨대, ⅰ)에서 QPi -1 = 24이고, QPi = 27인 경우 QPi -1 -1 ≤ QPi ≤ QPi -1 +2 가 되므로, 23 ≤ QPi ≤ 26 이 되고 QPi = 26으로 선택될 수 있다.
한편, ⅱ)에서 QPi -1 = 24이고, QPi = 23인 경우 QPi -1 ≤ QPi ≤ QPi -1 +2 가 되므로, 24 ≤ QPi ≤ 26 이 되고 QPi = 24로 선택될 수 있다.
이와 같이 버퍼가 어느 정도 차 있을 때는 QP를 제한하여 버퍼가 안정적인 상태를 가질 수 있도록 한다. 이렇게 결정된 QP가 최종 QP가 되며, 최종 QP를 이용하여 현재 프레임의 인코딩을 수행한다(S70).
인코딩이 완료되면 그 결과들인 비트 R, MAD 등을 이용하여 모델 파라미터 K와 MAD, CBF 등의 값을 갱신하고(S80), 이렇게 갱신된 파라미터는 다음 프레임의 비트 할당과 QP의 결정에 영향을 미치게 된다.
이와 같이 프레임의 영상 복잡도 측정에 모델 파라미터와 MAD를 고려하여 프레임 단위의 목표 비트 수준을 결정하므로, 잔여 비트(residual bit)뿐만 아니라 헤더 비트 등도 복잡도 측정에 반영될 수 있도록 한다. 또한, 버퍼 상태를 고려하여 양자화 파라미터를 적절히 제한함으로써 안정적인 버퍼 제어를 수행하여 프레임 의 드롭(drop)이나 비트 낭비를 방지할 수 있도록 한다.
도 2는 본 발명의 바람직한 실시예에 따른 모델 파라미터 기반의 비디오 인코딩 비트율 제어장치의 블록도이다.
본 발명의 바람직한 실시예에 따른 모델 파라미터 기반의 비디오 인코팅 비트율 제어장치(이하, "비트율 제어장치")는, 도 2를 참조하면, RatioMAD 계산부(10), RatioK 계산부(20), 복잡도 측정부(30), 비트 할당부(40), QP 계산부(50), QP 조절부(60), 인코딩부(70), 파라미터 갱신부(80)를 포함하여 이루어진다. 도시되지 않았으나, QP 계산부(50)와 QP 조절부(60)는 QP 결정부에 포함될 수 있다. 비트율 제어장치를 이루는 상기 각 구성요소의 세부적인 기능에 대해서는 도 1의 비트율 제어방법에 관한 부분에서 충분히 설명하였으므로, 상세한 설명은 생략하기로 한다.
RatioMAD 계산부(10)는 현재 프레임의 PMAD와 이전 프레임까지의 MAD 값의 평균값을 이용하여 RatioMAD를 계산하는 부분이다.
RatioK 계산부(20)는 현재 프레임의 PK와 이전 프레임까지의 K 값의 평균값을 이용하여 RatioK를 계산하는 부분이다.
복잡도 측정부(30)는 RatioMAD와 RatioK를 이용하여 프레임의 영상 복잡도를측정하는 부분이다.
비트 할당부(40)는 모델 파라미터를 반영한 현재 프레임의 복잡도를 이용하여 현재 프레임에 대한 비트 할당을 수행한다.
QP 계산부(50)는 계산식에 의해 양자화 파라미터를 계산하는 부분이다.
QP 조절부(60)는 버퍼의 상태를 고려하여 양자화 파라미터를 재조정한다.
인코딩부(70)는 재조정된 최종 QP를 이용하여 현재 프레임의 인코딩을 수행한다.
파라미터 갱신부(80)는 인코딩이 완료되면 비트 R, MAD 등을 이용하여 모델 파라미터 K와 MAD, CBF 등의 값을 갱신함으로써, 다음 프레임의 비트 할당과 QP의 결정에 영향을 미칠 수 있도록 한다.
한편, 본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것 이다. 따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.