인터 프레임

Inter frame

inter frame비디오 압축 스트림의 프레임으로, 하나 이상의 인접 프레임으로 표현된다. 용어의 "inter" 부분은 Inter frame 예측의 사용을 의미한다. 이러한 종류의 예측은 더 높은 압축률을 가능하게 하는 인접 프레임 사이의 시간적 중복으로부터 이용하려고 한다.

프레임 간 예측

상호 부호화된 프레임은 매크로 블록이라고 알려진 블록으로 나뉜다. 그 후, 각 블록의 원시 픽셀 값을 직접 인코딩하는 대신, 인코더는 이전에 인코딩된 프레임에서 인코딩하고 있는 것과 유사한 블록을 찾으려고 할 것이며, 이를 참조 프레임이라고 한다. 이 과정은 블록 매칭 알고리즘에 의해 이루어진다. 인코더가 검색에 성공하면, 블록은 기준 프레임에서 일치하는 블록의 위치를 가리키는 모션 벡터라고 알려진 벡터에 의해 인코딩될 수 있다. 운동 벡터 결정 과정을 운동 추정이라고 한다.

대부분의 경우 인코더는 성공하겠지만, 발견된 블록은 인코더가 인코딩하는 블록과 정확히 일치하지 않을 가능성이 있다. 이것이 인코더가 그들 사이의 차이를 계산하는 이유다. 이러한 잔차 값은 예측 오류로 알려져 있으므로 변환하여 디코더로 전송해야 한다.

요약하자면, 인코더가 기준 프레임에서 일치하는 블록을 찾는 데 성공하면 일치된 블록을 가리키는 동작 벡터와 예측 오류를 얻는다. 두 요소를 모두 사용하여 디코더는 블록의 원시 픽셀을 복구할 수 있다. 다음 이미지는 전체 과정을 그래픽으로 보여준다.

프레임 간 예측 프로세스. 이 경우 기준 프레임의 블록과 인코딩되는 블록 사이에 조명 변화가 있었다. 이 차이는 이 블록에 대한 예측 오차가 될 것이다.

이런 종류의 예측은 몇 가지 장단점이 있다.

  • 모든 것이 잘 되면, 알고리즘은 예측 오류가 거의 없는 일치 블록을 찾을 수 있을 것이고, 변환되면 모션 벡터 + 예측 오류의 전체 크기가 원시 인코딩 크기보다 낮아진다.
  • 블록 일치 알고리즘이 적절한 일치를 찾지 못하면 예측 오류가 상당할 것이다. 따라서 모션 벡터 + 예측 오차의 전체 크기가 원시 인코딩보다 클 것이다. 이 경우 인코더는 예외를 만들어 특정 블록에 대해 원시 인코딩을 전송한다.
  • 기준 프레임의 일치된 블록도 Inter frame 예측을 사용하여 인코딩된 경우 인코딩에 대해 발생한 오류는 다음 블록으로 전파된다. 만약 모든 프레임이 이 기법을 사용하여 인코딩되었다면, 기준 영상을 얻는 것은 불가능하기 때문에 디코더가 비디오 스트림에 동기화할 방법은 없을 것이다.

이러한 단점 때문에 이 기법이 효율적이고 유용하려면 신뢰할 수 있고 시간 주기적인 기준 프레임을 사용해야 한다. 이 기준 프레임을 인트라프레임(Inter-frame)이라고 하는데, 인트라인은 엄격히 내부 코딩되어 있기 때문에 추가 정보 없이 항상 디코딩할 수 있다.

대부분의 설계에서는 P-프레임과 B-프레임의 두 가지 종류의 인터프레임이 있다. 이 두 종류의 프레임과 I-프레임(인트라 코드 사진)은 보통 GOP(Group Of Pictures)에 가입한다. I-프레임은 디코딩하는 데 추가 정보가 필요하지 않으며 신뢰할 수 있는 참조 자료로 사용될 수 있다. 이 구조는 또한 디코더 동기화에 필요한 I-프레임 주기성을 달성할 수 있다.

프레임 유형

P-프레임과 B-프레임의 차이는 사용이 허용된 기준 프레임이다.

P-프레임

P-프레임은 전진 예측 그림을 정의하는 데 사용되는 용어다. 이 예측은 초기 그림(주로 I-프레임 또는 P-프레임)에서 이루어지므로 코딩 데이터가 덜 필요하다(I-프레임 크기에 비해 50% 감소).

이 예측을 수행하는 데 필요한 데이터의 양은 예측 보정을 설명하는 동작 벡터와 변환 계수로 구성된다. 그것은 운동 보상의 사용을 포함한다.

B-프레임

B-프레임은 양방향으로 예측되는 그림을 일컫는 말이다. 예측은 초기 프레임이나 후기 프레임 또는 두 프레임 모두에서 이루어지기 때문에 이러한 종류의 예측 방법은 일반적으로 P 프레임보다 코딩 데이터를 덜 차지한다(I 프레임 크기와 비교했을 때 25%). (B 프레임은 특정 경우:[1] 무손실 인코딩 등에서도 P 프레임보다 효율성이 낮을 수 있다)

P-프레임과 마찬가지로 B-프레임은 모션 벡터와 변환 계수로 표현된다. 증가하는 전파 오류를 피하기 위해 B-프레임은 대부분의 인코딩 표준에서 추가 예측을 하기 위한 참조로 사용되지 않는다. 단, 새로운 인코딩 방법(H.264/MPEG-4 AVCHEVC 등)에서는 B-프레임을 시간적 중복의 더 나은 이용을 위해 참조로 사용할 수 있다.[2][3]

일반적인 그림 그룹(GOP) 구조

그림 구성표 IBBPB의 그룹 종속성에 대한 그림... 시간은 왼쪽에서 오른쪽으로 흐른다.

일반적인 그림 그룹(GOP) 구조는 IBBPBP... I-프레임은 첫 번째 P-프레임을 예측하는 데 사용되며, 이 두 프레임은 첫 번째와 두 번째 B-프레임을 예측하는 데도 사용된다. 두 번째 P-프레임도 첫 번째 I-프레임을 사용하여 예측된다. 두 P-프레임은 세 번째와 네 번째 B-프레임을 예측하기 위해 서로 결합한다. 이 계획은 다음 그림에 나타나 있다.

두 번째 프레임과 세 번째 프레임(B-프레임)을 예측하기 위해서는 네 번째 프레임(P-프레임)이 필요하기 때문에 이 구조가 문제를 시사한다. 그래서 우리는 B-프레임 이전에 P-프레임을 전송해야 하고 그것이 전송을 지연시킬 것이다(P-프레임을 유지하기 위해 필요할 것이다). 이 구조에는 다음과 같은 장점이 있다.

  • 그것은 가능한 미개척 지역의 문제를 최소화한다.
  • P-프레임과 B-프레임은 I-프레임보다 더 적은 데이터를 필요로 하기 때문에 더 적은 데이터가 전송된다.

하지만 약점은 다음과 같다.

  • 디코더의 복잡성을 증가시켜 프레임 재배치에 필요한 메모리가 많아지고, 처리 능력이 조금 더 커진다.
  • B-프레임은 불가피하게 디코딩 지연 시간을 증가시키는 디코딩 의존성을 도입할 수 있다.

H.264 프레임 간 예측 개선

이전의 H.264 표준과 관련하여 이 기법의 가장 중요한 개선사항은 다음과 같다.

  • 더욱 유연한 블록 파티션
  • 최대 ¼ 픽셀 모션 보정 분해능
  • 다중 참조
  • 향상된 직접/스킵 매크로 블록

더욱 유연한 블록 파티션

16×16(MPEG-2), 16×8, 8×16, 8×8의 휘도 블록 파티션. 마지막 경우는 블록을 4×8, 8×4 또는 4×4의 새로운 블록으로 분할할 수 있다.

H.264 block division.svg

코딩할 프레임은 위의 그림과 같이 크기가 같은 블록으로 나뉜다. 각 블록 예측은 작은 변위에 의해 오프셋되고 기준 그림과 동일한 크기의 블록이 될 것이다.

최대 ¼ 픽셀 모션 보정 분해능

절반 픽셀 위치에 있는 픽셀은 길이 6의 필터를 적용하여 얻을 수 있다.

H=[1 -5 20 20 -5 1]

예를 들면 다음과 같다.

b=A - 5B + 20C + 20D - 5E + F

4분의 1픽셀 위치의 픽셀은 이선 보간법으로 얻는다.

MPEG-2가 ½ 픽셀 분해능을 허용한 반면, Inter frame은 pixel 픽셀 분해능까지 허용한다. 즉, 프레임의 블록을 검색하여 다른 참조 프레임에서 코딩하거나 존재하지 않는 픽셀을 보간하여 현재 블록에 더욱 적합한 블록을 찾을 수 있다. 모션 벡터가 샘플 단위의 정수인 경우, 이는 기준 사진에서 보정된 이동 블록을 찾을 수 있음을 의미한다. 모션 벡터가 정수가 아닐 경우 보간기 필터에 의해 보간된 픽셀에서 수평 및 수직 방향으로 예측을 얻는다.

Subpel interpolation.jpg

다중 참조

모션 추정에 대한 다중 참조를 통해 총 16프레임을 포함하는 2개의 가능한 버퍼(List 0 ~ 과거 사진, List 1 ~ 미래 사진)에서 최상의 참조를 찾을 수 있다.[4][5] 블록 예측은 기준 그림에서 블럭의 가중치 합계를 통해 이루어진다. 평면, 줌 또는 새로운 물체가 드러나는 장면에서 화질을 높일 수 있다.

Multiple references.jpg

향상된 직접/스킵 매크로 블록

스킵과 다이렉트 모드는 특히 B 프레임에서 매우 자주 사용된다. 코딩할 비트 수를 크게 줄인다. 이러한 모드는 잔여 오류 또는 모션 벡터를 전송하지 않고 블록이 코드화된 경우를 가리킨다. 인코더는 그것이 스킵 매크로 블록이라는 것만 기록할 것이다. 디코더는 이미 디코딩된 다른 블록에서 Direct/Skip Mode 코드화된 블록의 동작 벡터를 추론한다.

그 움직임을 추론하는 두 가지 방법이 있다.

시간적
동일한 위치에 위치한 List 1 프레임의 블록 모션 벡터를 사용해 모션 벡터를 추론한다. 목록 1 블록은 목록 0 블록을 참조로 사용한다.
공간적
그것은 같은 틀에서 이웃 매크로블록으로부터의 움직임을 예측한다. 가능한 기준은 인접 블록에서 동작 벡터를 복사하는 것일 수 있다. 이러한 모드는 움직임이 많지 않은 사진의 균일한 구역에서 사용된다.

Block partition.jpg

위의 그림에서 분홍색 블록은 Direct/Skip Mode 코드화된 블록이다. 우리가 볼 수 있듯이, 그것들은 주로 B-프레임에서 매우 자주 사용된다.

부가정보

비공식적인 용어로 "프레임"이라는 용어의 사용이 일반적이지만, 많은 경우(MPEGVCEG에 의한 비디오 코딩에 대한 국제 표준 등)에는 "프레임"이 아닌 "그림"이라는 단어를 사용하여 보다 일반적인 개념을 적용하는데, 여기서 그림은 완전한 프레임 또는 단일 인터레이스 필드가 될 수 있다.

MPEG-2, H.264 또는 Ogg Thera와 같은 비디오 코덱은 하나 이상의 인터 프레임으로 키 프레임을 따라 함으로써 스트림의 데이터 양을 줄인다. 이러한 프레임은 일반적으로 대부분의 이미지가 일반적으로 유사하므로 변화하는 부분만 코딩하면 되기 때문에 키 프레임에 필요한 비트 전송률보다 낮은 비트 전송률을 사용하여 인코딩할 수 있다.

참고 항목

참조

  1. ^ "Doom9's Forum - View Single Post - x264 Lossless question".
  2. ^ "Hierarchical B-Frames or B-Pyramid - Video Compression".
  3. ^ https://web.archive.org/web/20141118124738/http:///mewiki.project357.com/wiki/X264_Settings#b-pyramid
  4. ^ "A rookie question regarding on B frame in AVC - Doom9's Forum".
  5. ^ "X264 Stats Output, the "ref B L1" part". Archived from the original on 2014-11-22.
  • 소프트웨어 H.264: http://iphome.hhi.de/suehring/tml/download/
  • T.위간드, G.J.설리번, G.비욘테고르, A.Luthra: H.264/AVC 비디오 코딩 표준 개요. IEEE 비디오 기술용 회로 및 시스템 거래, 제13권, 제7호, 2003년 7월