Щоб спростити вашу плутанину - є два процеси:
1. Оцінка
руху 2. Компенсація руху
Перш ніж говорити про оцінку, слід поговорити про компенсацію руху.
Скажімо, розбивається на блок B l o c k s t [ k ] ( x ′ , y ′ ) .Ям а гет( х ,у)Б л о в к ст[ k ] ( х', у')
Завдання компенсації руху - виробляти з будь-якої області
I m a g e t - 1 ( x , y ) .Б л о в к ст[ k ] ( х', у')Ям а геt - 1( х , у)
Отже, інший блок, не обов'язково вирівняний на межі 16x16, є найкращим можливим збігом Б л о в к сt - 1[ k ] ( х'+ m x , y'+ м у)
Тут називають векторами руху.м х , м у
Ми можемо обчислити похибку між ціллю і посиланням як
Еr rт[ k ] ( х , у) = B l o c k sт[ k ] ( х', у') - Б л о с к сt - 1[ k ] ( х'+ m x , y'+ м у)
Отже, тепер кодер в основному передає (з DCT і квантуванням) і ( m x , m y ) [ k ] для кожного блоку ,.Еr rт[ k ] ( х , у)( м х , м у) [k]
Таким чином, у кодера є дві роботи:
1. Оцінка руху
Процес або оцінка для кожного k, так що E r r t [ k ] ( x , y ) мінімізовано, називається Оцінка руху.м х , м у[ k ]кЕr rт[ k ] ( х , у)
2. Формування зображення помилки після компенсації руху
Процес побудови з пікселів зображення I t і ( m x , m y ) [ k ] називається компенсацією руху . Зображення помилки - це те, що передається.Б л о в к ст[ k ] ( х', у')Ят( м х , м у) [k]
Нарешті, декодер може самостійно здійснити компенсацію руху за допомогою векторів моїтона та зображення помилки для остаточної реконструкції зображення.
Тепер ми розуміємо кілька моментів:
Найкраща оцінка руху допомагає мінімізувати енергію, яка необхідна для передачі, а значить, оптимізує біти для заданої якості.
Однак, навіть якщо не є ідеальним або якщо сцена має значні зміни в порівнянні з останньою картиною, E r r t [ k ] ( x , y ) завжди передається приймачу - отже, реконструкція завжди досконалий (по модулю втрати, створені квантуванням). Отже, навіть якщо у вас неоптимальний вектор руху або надмірність надмірності, реконструкція все ще є ідеальною, хоча і з більшою кількістю бітів!( м х , м у) [k]Еr rт[ k ] ( х , у)
Кожен блок рух компенсується самостійно - отже, навіть якщо фактичні вектори руху будь-яких сусідніх блоків не впливають на побудову. Отже, не потрібно, щоб вектори руху були ідеально вирівняні, щоб ідеальна реконструкція була можливою.Б л о в к ст[ k ] ( х', у')
Хоча існує алгоритм, який досить розумний, щоб здогадуватися, що якщо має вектор руху ( m x , m y ) [ k ], здогад для B l o c k s t [ k + 1 ] може просто бути ближчим лише до цього.Б л о в к ст[ k ]( м х , м у) [ k ]Б л о в к ст[ k + 1 ]
Нарешті, припустимо, що наступна картина зовсім інша, можливо, енергія для .
Еn e r gу( Єr rт[ k ] ( х , у) ) > Еn e r gу( Б л о в к ст[ k ] ( х', у') )
У таких випадках може бути доцільніше передавати блок безпосередньо без прогнозу, ніж надсилати різницю. Це також можливо в кодері через положення, яке називається блоком INTRA.