[Описание проекта] [Описание программы] [ ИТОГ и загрузка]

Проект улучшения любых плохих видеофайлов

future demo

Создается программа (но еще нету рабочей версии), которая сможет улучшать любое плохое видеоизображение до приемлимого качества!

Слева вы видите тот идеал, к которому я сейчас стремлюсь.

P.S. Это не новый кодек или проигрыватель. Эту программу можно сравнить с фильтром для Adobe AfterEffect или Photoshop.

Краткая история проекта. Первые мысли об этой программе зародились у меня в голове примерно в июле 2000 года. Тогда это были мысли о будущем. Дальнейшее развитие идеи появилось после прочтения статьи из журнала Cooler.

Два исследователя одной из лабораторий NASA - Paul Meyer и David Hathaway создали технологию, которая может очень качественно улучшать изображения, изначально имеющие существенные искажения из-за различных причин, которые неизбежно появляются при съемке видеоаппаратурой - например, тряска, недостаточная освещенность, огрехи кодировки цвета, да и вообще, плохое качество изображения как таковое.

сверху - после, снизу - до обработки программой VISAR

Пример работы программы компьютерной обработки изображения, под названием VISAR. Справа - после. Аббревиатура VISAR расшифровывается как Video Image Stabilization and Registration - коротко говоря, "нормализация видео-изображений".

На данный момент, на обработку одного кадра (фрейма) уходит около 15секунд - это еще после того, как программу оптимизировали под "C++", а до этого обработка занимала 5минут на достаточно замороченном языке IDL (Interactive Data Language). А на данное время разработчики пытаются достичь скорости обработки для видео в реальном времени.

Алгоритм позволяет избавиться от следующих искажений: сдвиг, вращение, zoom-эффекты, не говоря уже об удалении обычного шума, улучшения краев и т.п. Собственно, верхняя картинка являет собой достаточно неплохой пример. Но разработчики пошли еще дальше. С помощью алгоритма можно из послдовательности кадров восстановить совсем никудышнюю картинку, изначально негодную из-за плохой освещенности.

В данном случае - слева - улучшенный на сколько можно фрейм тем же алгоритмом, а справа - восстановление с помощью последующих нескольких десятков фреймов. Мда.. потрясающе.

Стоит ли говорить, что для телетрансляций это просто незаменимая находка. Не все каналы телевидения показывают в одинаковом качестве, самая главная причина, разумеется - антенна, но вот избежать плохого приема можно и таким способом. Да, собственно, и плохую запись улучшить частенько надо - правда, для этого придется иметь на первых порах видеоввод хотя бы в комплекте с компьютером. И весьма нехилым, надо думать. Не на обычном же пенте у них 15секунд уходит на обработку фрейма. А фреймов еще в секунде не один десяток. Правда, кто спорит, что все это в конечном итоге не воплотиться в железный фильтр, который можно встроить в телевизор или видеомагнитофон? Опять же, нынешние совмременные видеокамеры уже имеют "антитряску", но нет средства против подобных эффектов при Zoom'e или наклонах камеры. Опять же, погрешности кодировки цвета. А тут вот все в одном пакете. Кстати, технология VISAR, если верить этому анимированному изображению (150kb) просто фантастически убирает тряску (съемки водныго лыжника).

Хотя, изначально вся эта разработка делалась чуть ли не по заказу ФБР, которому необходимо было детальное улучшение снимков, сделанных из космоса.

После такой статьи я начал серьезно задумываться о подобной программе (только, пожалуй без стабилизации изображения). Т.к. попутно я занимался исследованиями в области искусственного интеллекта (нейросети и генетические алгоритмы), то я решил применить свои небольшие знания в этих областях для решения данной задачи. Нейросети по некоторым причинам не подходили для этой задачи и, поэтому, я остановился на генетических алгоритмах.

Сами по себе генетические алгоритмы имеют не очень высокую скорость обработки (вообще, если есть специальные алгоритмы, то они, как правило, работают быстрее и надежнее, нежели генетические алгоритмы или нейросети). Но я решил при помощи генетических алгоритмов можно попытаться создать УНИВЕРСАЛЬНЫЙ АЛГОРИТМ по улучшению видео.

Постановку задачи можно свести к следующему. Алгоритм анализирует два кадра (назовем их X и X1) после чего она пытается на основе анализа методом варпинга из кадра X1 создать кадр X. Если на входе мы имеем кадр X1 на котором имеется объект из кадра X, но со смещением, то на выходе мы получаем кадр, в котором расположение объектов максимально приближено к кадру X. Таким образом обрабатывается множество пар.

X(n) и X(N-2)
X(n) и X(N-1)
X(n) и X(N+1)
X(n) и X(N+2)
X(n) и X(N+3)

на выходе мы получаем кадры максимально приближенные к кадру X(n) и мы можем попиксельно сложить эти кадры. Складывать мы их можем благодаря тому, что движение между кадров было компенсировано и объекты на обработанных кадрах находятся в одних и тех же местах. Благодаря такому складыванию "мусор" уберется однозначно, а попутно должны появиться новые детали и улучшится (видимо незначительно) резкость.

Для создания такого алгоритма я сделал программу, которая представляла из себя

Т.к. возможных вариантов очень много, то мною (на этапе генерирования новых вариантов) был использован генетический метод генерирования новых программ. Благодаря этому мне удалось (будем надеяться) ускорить перебор вариантов на 2-3 порядка (по сравнению с "тупым" перебором). Но и в этом случае имеется очень и очень много вариантов - по крайней мере более 1 года машинного времени (Pentium 800 Mhz). Именно для этого (перебор вариантов) и создана программа gav.exe, описание которой вы найдете на следующих страницах. Обратите внимание на требования.

[Описание проекта] [Описание программы] [ ИТОГ и загрузка]

 

Писать imageman@inbox.lv

 

Другие страницы Владимира Чаплинского

Сайт создан в системе uCoz