2012-05-16 1 views
6

어떤 방식 으로든 비디오 압축에 익숙하지 않지만 현재 H.264를 사용하여 잔상을 압축하는 프로젝트에서 작동합니다.블록 모션 보상 엔코더 - 참조 프레임에서 블록 노이즈를 처리하는 방법?

내 질문에 비디오 엔코더와 관련된 일반적인 내용이 있습니다. (Wikipedia에서 설명하는대로) 블록 모션 보상 엔코더는 현재 프레임이 왔던 참조 프레임에서 확인한 각 블록에 대해 현재 프레임을 겹치지 않는 일부 블록으로 나눕니다. 원하는 블록 및 모션 보상 된 블록을 제거한 다음,이 잔여를 어떻게 든 인코딩합니다.

위키 피 디아는 "블록 움직임 보상의 주된 단점은 블럭 경계에서 불연속성을 유발한다는 것입니다 (블로킹 아티팩트). 이러한 아티팩트는 사람의 눈으로 쉽게 발견 할 수있는 날카로운 수평 및 수직 가장자리 형태로 나타납니다. 잔여 프레임의 변환 코딩에 사용되는 푸리에 (Fourier) 관련 변환에서 울림 효과 (고주파수 부대 역의 큰 계수)를 생성합니다. "

따라서 참조 프레임에 이미 블록 아티팩트가 포함되어 있으므로 (인코딩 되었기 때문에) 이러한 블록 아티팩트가 현재 블록으로 이동되고 나머지가 계산되므로 블록 아티팩트에 의해 생성 된 고주파수 이동 된 블록의 경계에서 잔차의 불연속으로 표시됩니다. 그리고 불연속성은 일반적으로 압축에 좋지 않습니다.

움직임 보상 된 블록 인코더는 어떻게 잔차를 압축하기 전에이 블록 인공물을 처리합니까? 블록이 어떻게 움직 였는지 정확히 알고 있기 때문에 블록 테두리가 어디에 있는지 알며 나머지 부분을 인코딩하기 전이나 도중에이 부분에서 불필요한 고주파수를 제거/무시하면서 무언가를 할 수 있습니다. H.264와 같은 코덱에서 이와 같은 작업을 수행하는 경우 엔코더가 어떻게 작동하는지에 대한 주 개념을 설명하고, 일부 용어를 알려줄 수 있습니까? 엔코더는 참조 프레임의 블록 아티팩트를 어떻게 처리합니까?

+1

굉장한 질문입니다. – Alex

답변

0

@Mat : 이것은 좋은 질문이며 비디오 인코딩의 연구를위한 공개 영역 일 가능성이 큽니다. 요컨대, 비디오 인코더는 모션 추정에 블록 인공물의 영향을 처리하기 위해 명시 적으로 수행하지 않습니다.

낮은 디테일 영역에서 빠른 움직임이 발생하는 경우 눈에 띄는 블록 인공물이있는 경우 모션 벡터가 블록 크기의 배수가되는 경우가있을 수 있습니다. 즉, 모션 추정은 블록을 찾습니다. 이전 프레임 및 원본 이미지의 세부 사항이 아닙니다. 이것은 매우 드물 것입니다. 그것은 빠른 모션, 상당히 특징없는 이미지 영역, 분명히 불충분 한 비트율을 필요로합니다. 아마 이것을 증명하는 합성 비디오 시퀀스를 만들 수 있습니다. 블록 경계에 대한 지식이 도움이 될 수있는 방법이 있는지 여부는 명확하지 않습니다. 블록 에지가 다음 프레임의 잔차에서 고주파 성분을 도입한다면, 우리는 블록 인공물에서 왔는지 여부와 상관없이 인위적으로 도입 된 구성 요소를 지우거나 수정하기 위해 비트를 소비해야합니다. , 그것에 대한 지출 비트는 다른 참조 영역/모션 벡터/블록 유형을 사용하는 것보다 더 나은 결정이 될 수 있습니다.

그러나 H.264 및 VP8과 같은 최신 코덱은 in-loop deblocking filter입니다. 즉, 디코딩 된 프레임은 참조로 사용되기 전에 비 블로킹되므로 블록 노이즈가 줄어들어 문제의 영향을 최소화 할 수 있습니다 올바르게 식별됩니다.

+0

@Mat :이 질문에 대한 대답은 무엇입니까? 그렇다면 대답을 수락하는 것을 잊지 마십시오. 그렇지 않다면 내가 정리할 수있는 것이 있다면 알려주세요. –