Я никоим образом не разбираюсь в сжатии видео, но в настоящее время работаю над проектом, в котором я сжимаю остаточные изображения с использованием H.264.
Мой вопрос носит более общий характер относительно видеокодеров. Насколько я понимаю (как объясняет Википедия), блочный энкодер с компенсацией движения делит текущий кадр на несколько непересекающихся блоков, для каждого блока проверяет в опорном кадре откуда взялся текущий блок, затем вычисляет разность нужный блок и блок с компенсацией движения, то он каким-то образом кодирует этот остаток.
В Википедии говорится: «Основным недостатком компенсации движения блока является то, что она вносит разрывы на границах блока (блокирующие артефакты). Эти артефакты проявляются в виде острых горизонтальных и вертикальных краев, которые легко заметить человеческим глазом и создают эффект звона ( большие коэффициенты в высокочастотных поддиапазонах) в связанном с преобразованием Фурье преобразовании, используемом для кодирования с преобразованием остаточных кадров».
Так, поскольку опорный кадр уже содержит блоки-артефакты (потому что он был закодирован), а затем эти блочные артефакты сдвигаются в текущий блок и вычисляется невязка, то высокие частоты, создаваемые блоками-артефактами на границах смещенный блок также будет отображаться как разрывы в остатке. А разрывы вообще плохи для сжатия.
Обрабатывает ли блочный кодировщик с компенсацией движения какие-либо артефакты блока перед сжатием остатка? поскольку он точно знает, как был сдвинут блок, он знает, где расположены границы блока и может что-то с ними сделать до или во время кодирования остатка, удаляя/игнорируя лишние высокие частоты в этом месте. Если что-то подобное выполняется в кодеке, таком как H.264, может ли кто-нибудь объяснить основную концепцию того, как это делает кодировщик, дать некоторую терминологию по этому поводу и так далее? Как кодер справляется с блочными артефактами в опорном кадре?