2012-02-26 2 views
1

우리가 알고있는 것처럼 거의 모든 비디오 인코더는 일부 시간 코딩을 사용합니다. 그것은 참조/이전 프레임에서 현재 프레임에 대한 픽셀 블록의 최상의 macth를 찾기 위해 블록 (직사각형 영역) 기반 모션 추정을 사용합니다. 이것은 모션 벡터를 제공합니다. 모션이 병진 (즉, 블록이 왼쪽/오른쪽 또는 위/아래로 움직이는 경우)하면 괜찮습니다. 객체가 회전하고 객체의 모양이 직사각형이며 회전하는 경우 모션 추정이 정확하지 않으므로 (최소한 원래의 예측은 아니다.)비디오 압축에서 블록 기반 모션 추정

그래서 비디오 인코더는 이러한 회전 동작을 처리하기 위해 어떤 방법을 사용합니까?/움직임. P 프레임에서 (그 이전에 대한 참조없이 그대로 코드)

는 다음

또는

손에서 다른 트릭있다 인트라 블록으로서 그 블록을 부호화함으로써 이러한 상황을 처리 하는가 P 매크로 블록 자체로 코딩하는 동안 처리할까요?

답변

2

제가 알고있는 한, 비디오 인코더에는 회전 동작에 특별한 경우가 없습니다. 첫째, 회전 운동 자체의 탐지는 많은 시간을 소비 할 것이다. 또한, 모션 추정은 매크로 블록 레벨에서 행해지므로, 전체 프레임 자체가 어떻게 든 회전하지 않는 한, 회전 방식으로 움직이지 않는 프레임에 꽤 많은 매크로 블록이있을 수 있습니다. 내가 제안 할 수

하나 "트릭은"예측 프레임 (P 프레임)과 실제 프레임 사이의 다음과 같은 -

계산 PSNR입니다. PSNR이 너무 낮 으면 프레임을 정보 프레임 (I 프레임)으로 인코딩하는 것이 더 합리적입니다. 이것은 시간이 많이 걸리기 때문에 실시간 전송에서는 수행 할 수 없습니다. 그러나 인코딩 시간이 중요하지 않을 때 수행 할 수 있습니다. 이 경우 단순히 전체 검색을 사용할 수 있습니다.

+1

...

이것은 물론 http://en.wikipedia.org/wiki/Entropy_(information_theory 엔트로피) 섀넌 함께 할 수있는 뭔가가 있지만, 그 기사가 내 눈이 조금 소켓을 통해 스며 내 머리 시작한다, 전체 프레임 회전보다는 회전 블록 레벨 동작이 가능한 모션 (합성 비디오/애니메이션 비디오)이 여전히있을 수 있습니다. 이 시나리오는 유효하고 매우 현실적인 시나리오입니다. – goldenmean

+1

예,하지만 모션 추정은 수직/수평 모션의 아이디어를 기반으로합니다. 회전에 대해서는 아무 말도하지 않습니다. 따라서 회전의 경우 PSNR은 예측이 떨어 지므로 분명히 떨어집니다. 이를 위해 프레임을 I 프레임으로 보내는 것이 더 합리적입니다. – CodeBlue

1

첫 번째 것은 회전 방향을 추가 할 때마다 극적으로 증가하는 계산 복잡도입니다. 예를 들어, 모션 추정 시간은 'x'초입니다. 우회전 90도를 추가 한 후에 회전 된 블록으로 다시 동일한 참조 프레임 검색 창을 검사해야하기 때문에 다시 'x'초가 있습니다. 다시 왼쪽 회전을 90도 추가 한 후에 다시 모션 추정에 x 초를 더합니다. 여기서 중요한 문제는 전체 인코더에서 일반적으로 모션 추정은 인코딩 시간의 대부분을 소비하는 블록이라는 것입니다.

두 번째 문제는 모션 보상 장치의 복잡성입니다. 추정 또는 예측에 회전 블록이있는 경우 엔코더 및 디코더에서도 보정 된 프레임을 생성하기 위해 동일한 변환을 생성해야합니다. 최악의 경우 디코더 측에서도 훨씬 복잡합니다.

세 번째 것은 가변 블록 크기를 지원하는 예측 단위입니다. 표준은 고정 된 블록 크기에 대해 항상 모션 벡터를 정의합니다. 회전 블록 크기가 제안되면, 방향을 디코더에서도 표준화 할 필요가 있는데, 여기서 모션 보상 유닛, 엔트로피 인코더/디코더 등이 표준화되어야합니다.

네 번째 것은 모션 벡터 코딩입니다. 우리는 회전 모션 벡터를 추가하기 때문에 모션 벡터에 여분의 비트를 추가해야합니다. 이러한 것들을 빔 밸런스에 넣어야합니다 - "각 MV에 대한 추가 비트 추가"및 "회전 모션 벡터를 사용한 압축 효율성 향상" 더. 잔액이 균형을 이루거나 "각 MV에 대한 추가 비트 추가"가 더 많은 무게를 갖는다면 회전 MV를 사용하지 않습니다.

다섯 번째 것은 엔코더 블록 다이어그램에 대한 깊은 이해입니다.우리가 사용하고있는 인코더는 적응 형 차동 펄스 코드 변조기 또는 예측 코딩이있는 유사한 유형과 유사합니다. 비디오 신호는 항상 인코더 차동입니다. 비디오 신호 나 신호가 차 동적으로 코딩 될 때, 이전 샘플과 현재 샘플 간의 시간차는 극히 작습니다 (여기서는 1/프레임 속도). 따라서 개별 블록은 항상 병진 방향을 따르게됩니다. 참조 프레임이 프레임 속도보다 크거나 적어도 GOP 크기보다 큰 경우 다중 참조 프레임을 사용하는 경우에만 회전 MVs입니다. 따라서이 경우 회전 MV는 PSNR을 약간 향상 시키거나 모션 추정 시간을 크게 늘릴 수 있습니다.

또 다른 것은 동작 방향에 대한 주관적이고 통계적인 연구입니다.

이것들에도 불구하고 JCT-VC에는 이것을 구현 한 제안이 있지만 현재의 HEVC 표준에서는 승인되지 않았습니다. 미래에 모든 문제를 해결하려고 노력할 것입니다.

1

모션 추정 지점은 '일반'비디오를 줄이는 계산적으로 저렴한 방법입니다.

폭포수 같은 비디오에서 모션 기반 코딩을 사용한다면 크기를 줄일 수 없습니다.

비슷한 개념이 JPEG 사진에도 적용됩니다. JPEG 압축은 인간의 눈의 특정 감도를 이용하기 때문에 작동합니다.

궁극적으로 데이터는 데이터이며 무손실로 그 양을 줄일 수 없습니다. 당신이 할 수있는 최선의 방법은 소스와 목적지에 대한 추측을 한 후 시청자와 구분할 수 없지만 적은 양의 데이터를 재현하는 것입니다. 그것이 모션 추정이 작동하는 이유입니다. 인간이 보는 영화의 99.99 %는 인간을 가지고 있으며, 인간처럼 움직입니다. 좌우로 ... 위아래로 움직입니다. WORKS는 매년 수백만 시간의 푸티지를 제작할 수있는 충분한 시간을 할애 할 수 있다고 말합니다. ME는 MB 수준에서 이루어집니다 @Though