Компенсація руху

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Компенсація руху це алгоритм, який використовується для передбачення відео кадру, із наявних попередніх і/або майбутніх кадрів і інформації про рух камери і об'єктів у відео. Він використовується при кодуванні відео даних для забезпечення високої ефективності стиснення рухомих зображень, наприклад при стисненні відео в форматі MPEG-2.

Компенсація руху описує зображення, так що показує лише трансформацію початкової картинки до вихідної, і дозволяє віднаходити інформацію про рухи окремих частин зображення. Початковим зображенням може бути як попередній кадр або наступний. Якщо між кадрами є незмінна частина зображення і рухомі об'єкти, використання компенсації руху дозволяє виконати стиснення відео, за рахунок усунення надлишкової інформації і побудови кадрів із попередньої інформації.

Принцип[ред.ред. код]

Як правило, компенсація руху використовує той факт, що більшість кадрів у відео ряді, відрізняються між собою лише або рухом камери, або рухом об'єкту у нерухомій сцені, це означає, що велика частина інформації від кадру до кадру залишатиметься без змін, і може бути використана у наступному кадрі.

При використанні алгоритму стиснення із компенсацією руху, відео потік буде містити окремі повні (ключові) кадри; А між ними буде зберігатися лише інформація, необхідна для перетворення попереднього кадру в наступні (виділяючи лише рухомі елементи).

Ілюстрований приклад[ред.ред. код]

Далі наведено наочне пояснення того як працює компенсація руху. Два послідовних кадри були взяті із фільму Elephants Dream. Як видно на зображеннях, нижня (компенсована рухом) різниця між двома кадрами містить значно менше деталей ніж попередні зображення, і таким чином стискає дані більш ефективно ніж решта. Таким чином інформації, якої необхідно аби закодувати компенсований кадр буде набагато менше, ніж в кадрі що містить різницю. Це також означає, що можна кодувати інформацію використовуючи різницю кадрів без компенсації руху, як варіант хоч і з меншою ефективністю стиснення, але із спрощенням складності кодування; бо насправді кодування компенсованого руху (разом із оцінкою руху, компенсацією руху) становить більш ніж 90% від загальної складності кодування.

Тип Приклад кадру Описання
Оригінальний Motion compensation example-original.jpg Повний початковий кадр, як показано на екрані.
Різниця кадрів Motion compensation example-difference.jpg Різниця між попереднім кадром і наступним.
Різниця із компенсацією руху Motion compensation example-compensated difference.jpg Різниця між оригінальним кадром і наступний кадром, зсунута вправо на 2 пікселі. Зсув кадру компенсує панорамну зйомку камерою, тому існує велика область перекриття між двома кадрами.

MPEG[ред.ред. код]

У форматі відео MPEG, зображення будуються із попередніх кадрів (P кадрів) або двонаправлено із попередніх і наступних кадрів (B frames). B кадрів є більш складними, оскільки необхідно передати/зберегти послідовність кадрів для того, щоб наступні кадри були наявні для побудови B кадрів.[1]

Після побудови кадрів використовуючи компенсацію руху, кодек знаходить помилку (залишок), який потім стискається і передається.

Посилання[ред.ред. код]

  1. berkeley.edu - Why do some people hate B-pictures?