Видеокодек: работа с дельта-значениями
Предположим, у меня есть код ref (key), который я закодировал. Теперь я хочу сделать межкадровый прогноз следующего кадра, называемого дельта-кадром P. Для этого я вычисляю векторы движения и нахожу разность между компенсированными P и I. Однако в некоторых случаях эта разность может быть довольно большой. Учитывая, что мои входные значения цвета находятся в диапазоне [0, 255], тогда разница может быть в диапазоне [-255, 255]. Это еще один бит информации. Как это обычно достигается? Этот диапазон уменьшен до [-127, 127] или что-то в этом роде? Или мы просто сжимаем дельта-данные с более высокой точностью?
РЕДАКТИРОВАТЬ:
Итак, я сделал несколько экспериментов:
а) сжатие ref frame - результирующая степень сжатия x26
Затем я взял два одинаковых кадра и протестировал их:
б) перед преобразованием в цветность яркости я беру оба кадра в RGB, вычисляю их xor и запускаю цветность яркости и DCT - степень сжатия x39 - появляются серьезные артефакты
в) Я беру разность frame1-frame2 и выходной зажим (frame1-frame2, -0,5, 0,5) + 0,5 - степень сжатия - x76
d) Я вычисляю DCT для frame1 и frame2 и вычисляю xor для этого - степень сжатия x72
Так что я не вижу, как б) будет работать - кеширование ввода RGB для меня не имеет большого смысла. Я думаю, что наиболее эффективным является в), так как он также позволяет размывать frame1 и frame2 перед выполнением diff и, таким образом, значительно увеличивает сжатие