3.4.1. Кодирование изображений с предсказаниемКомпенсация движения является примером кодирования с предсказанием, при котором кодер делает прогноз для текущей области на основе предыдущих (или будущих) кадров и вычитает эту область- прогноз из текущей области. Если предсказание сделано правильно, то полученную разность (остаток) можно представить меньшим числом бит. Таким же образом можно сформировать прогноз или предсказание сэмпла изображения или области на основе ранее отправленных сэмплов того же изображения или кадра. Кодирование с предсказанием использовалось в ранних алгоритмах сжатия изображений и остается важной компонентой intra-кодирования стандарта Н.264 (применяемое в преобразованной области, см. гл. 6). Пространственное предсказание иногда называется дифференциальной кодо-импульсной модуляцией DPCM (Differential Pulse Code Modulation). Этот термин позаимствован из метода дифференциального кодирования РСМ сэмплов в телекоммуникационных системах. На рис. 3.26 показан пиксел X, который надо закодировать. Если кадр обрабатывается в растровом порядке, то пикселы А, В и С (соседние пикселы этой и предыдущей строки) будут доступны кодеру и декодеру (так как они уже были декодированы раньше X). Кодер формирует предсказание (прогноз) для X на основе комбинации ранее декодированных пикселов, вычитает это предсказание из X и кодирует их разность (результат вычитания). Декодер вычисляет это предсказание, добавляет его к принятой разности и тем самым восстанавливает пиксел X. Рис. 3.26. Пространственное предсказание (DPCM).
Если кодирование осуществлялось с потерей информации (т.е. делается квантование разности, см. § 3.4.3), то декодированные пикселы А', В' и С' могут отличаться от исходных пикселов А, В и С (из-за потерь при кодировании), поэтому в описанном процессе будет происходить накопление ошибок (дрейф) от кодера к декодеру. В этом случае кодеру надо также декодировать разность Il(X') и восстанавливать каждый пиксел. Кодер использует декодированные пикселы А', В' и С' и формирует предсказание, т.е. Р(Х) = (2А' + В' + С')/4 в предыдущем примере. В этом случае и кодер и декодер будут использовать одинаковые предсказания Р(Х), и дрейф ошибки будет устранен. Эффективность сжатия при таком подходе зависит от точности предсказания Р(Х). Если предсказание Р(Х) хорошо приближает X, то энергия разности будет малой. Однако на практике бывает невозможно выбрать формулу предсказания, которая одинаково хорошо работала бы во всех областях сложного изображения, и лучшее предсказание можно было бы сформировать в зависимости от локальных статистических свойств изображения (например, используя разные формулы для областей с однородной текстурой и с текстурами, сильно неоднородными только по горизонтали или вертикали, и т.д.). Кодеру придется сигнализировать декодеру, какую формулу он использовал, поэтому необходимо учитывать компромисс между эффективностью предсказания и добавочным числом бит, которые используются кодером в качестве сигналов о смене формулы предсказания.
|