1 Средства и приемы обработки видео Дмитрий Ватолин Московский Государственный Университет CS MSU Graphics&Media Lab Version 1.2.

Презентация:



Advertisements
Похожие презентации
Таблица умножения на 8. Разработан: Бычкуновой О.В. г.Красноярск год.
Advertisements

Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 6000 Приложение 7 к решению Совета депутатов города Новосибирска.

1. Определить последовательность проезда перекрестка
1 Знаток математики Тренажер Таблица умножения 2 класс Школа 21 века ®м®м.
Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 4500 к решению Совета депутатов города Новосибирска от
Работа учащегося 7Б класса Толгского Андрея. Каждое натуральное число, больше единицы, делится, по крайней мере, на два числа: на 1 и на само себя. Если.
Применение генетических алгоритмов для генерации числовых последовательностей, описывающих движение, на примере шага вперед человекоподобного робота Ю.К.
Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
Лекция 1 Раздел 1 Windows Phone Темы раздела 3 Windows Phone Устройство на платформе Windows Phone 4.
Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от
Отделение ПФР по Тамбовской области Проведение кампании по повышению пенсионной грамотности молодежи в Тамбовской области в 2011 году 8 февраля 2012 г.
Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 6000 Приложение 7 к решению Совета депутатов города Новосибирска.
Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Матемтааки ЕТ СТ 2 класс Шипилова Наталия Викторовна учитель начальных классов, ВКК Шипилова Наталия Викторовна учитель начальных классов, ВКК.
Урок-обобщение (7 класс – алгебра) МОУ "СОШ 45 г. Чебоксары" Кабуркина М. Н.1.
Да играем на боулинг Личный сайт Автор: Курипко Ольга Анатольевна Донецкая многопрофильная.
Курсы повышения квалификации (общие показатели в %)
ЦИФРЫ ОДИН 11 ДВА 2 ТРИ 3 ЧЕТЫРЕ 4 ПЯТЬ 5 ШЕСТЬ 6.
Набор игр Создание игровых ситуаций на уроках математики повышает интерес к математике, вносит разнообразие и эмоциональную окраску в учебную работу, снимает.
Транксрипт:

1 Средства и приемы обработки видео Дмитрий Ватолин Московский Государственный Университет CS MSU Graphics&Media Lab Version 1.2

CS MSU Graphics & Media Lab (Video Group) Содержание: MMX технология Программа VirtualDub Программа AviSynth Программа Mathcad

3 MMX Technology Потоковая обработка данных. Средство существенного увеличения скорости работы видеофильтров.

CS MSU Graphics & Media Lab (Video Group) Курс по Intel MMX В слайдах использованы рисунки из курса по MMX компании Intel, который настоятельно рекомендуется пройти. Курс можно скачать по адресу: (размер: 14 МБ) (размер: 2,7 МБ)

CS MSU Graphics & Media Lab (Video Group) История возникновения Технология MMX была разработана компанией Intel и является своего рода развитием команд процессора. Технология базируется на архитектуре процессора Pentium® и позволяет ускорить вычисления за счет параллельной обработки данных.

CS MSU Graphics & Media Lab (Video Group) Где применяется технология MMX ? Технология MMX используется во многих мультимедийных приложениях, например при обработке видео, звука и графики (ускорение цифровой обработки сигналов и данных). Забавно, что MMX команды сегодня применяются даже при заполнении и копировании буферов операционной системы.

CS MSU Graphics & Media Lab (Video Group) MMX технология 1. В технологии MMX применяются инструкции использующие особенности архитектуры нового процессора. 2. MMX инструкции работают как со знаковой так и с беззнаковой арифметикой. 3. Появились 8 новых регистров с соответствующими именами MM0…MM7.

CS MSU Graphics & Media Lab (Video Group) Типы данных в MMX В 64 бита можно поместить от 8 «переменных» размером по 8 бит (байтов) и до одной «переменной» размером в 64 бита.

CS MSU Graphics & Media Lab (Video Group) Система команд MMX Система команд MMX состоит из 57 команд, сгруппированных в следующие категории: Команды передачи данных Арифметические команды Команды сравнения Команды преобразования Логические команды Команды двига Команда освободить MMX состояние (EMMS)

CS MSU Graphics & Media Lab (Video Group) Семантика инструкций MMX команда [dest,src] записывается по следующим правилам: 1)Команда начинается с P (кроме movd, movq ) 2)US работа с без знаковой арифметикой 3)S или SS работа со знаковой арифметикой 4)B, W, D, Q соответственно обозначают тип с которым работает инструкция

CS MSU Graphics & Media Lab (Video Group) Арифметика с насыщением MMX технология поддерживает арифметику с насыщением (saturated arithmetics). В режиме с насыщением, результаты операции, которые переполняются сверху или снизу отсекаются к границе datarange соответствующего типа данных В режиме без насыщения, результаты, которые переполняются как в обычной процессорной арифметике (см. курсы по С и ассемблеру).

CS MSU Graphics & Media Lab (Video Group) Таблица Тип данныхНижний предел Верхний предел Шестн адцат. Десяти чн. Шестн адцат. Десати чн. Знаковый байт 80H-1287FH127 Знаковое слово 8000H FFFH32767 Беззнаковый байт 00H0FFH255 Беззнаковое слово 0000H0FFFFH65535

CS MSU Graphics & Media Lab (Video Group) Команды передачи данных (пример) MOVD (Переместить 32 Бита) передает 32 бита упакованных данных из памяти в регистры MMX и обратно, или из целочисленных регистров в регистры MMX и обратно. MOVQ (Переместить 64 Бита) передает 64 бита упакованных данных из памяти в регистры MMX и обратно, или между регистрами MMX.

CS MSU Graphics & Media Lab (Video Group) Пример арифметических инструкций Арифметичес- кие WraparoundЗнаковаяБез знаковая СложениеPADDPADDSPADDUS ВычитаниеPSUBPSUBSPSUBUS УмножениеPMULL/H Умножение и сложение PMADD

CS MSU Graphics & Media Lab (Video Group) Пример для сложения типа Byte

CS MSU Graphics & Media Lab (Video Group) Пример для сложения типа Word

CS MSU Graphics & Media Lab (Video Group) Пример для сравнения

CS MSU Graphics & Media Lab (Video Group) Пример кода с MMX 1 movq MM0, [a_vector] 2 movq MM1, [b_vector] 3 pmaddwd MM0, MM1 4 paddd MM7, MM0 5 add [a_vector], 8 6 add [b_vector], 8 7 sub [count], 4 8 jnz loop 9 movq MM0, MM7 10 psrlq MM7, paddd MM7, MM0 12 movd mem_vdp, MM7 Расчет скалярного произведения:

CS MSU Graphics & Media Lab (Video Group) Пример кода с MMX 1 movq MM0, [a_vector] 2 movq MM1, [b_vector] …a5a4a3a2a1a0 A_vector a3a2a1a0 MM0

CS MSU Graphics & Media Lab (Video Group) Пример кода с MMX 3 pmaddwd MM0, MM1 a3a2a1a0 MM0 MM1 b3b2b1b0 pmadwd a3*b3+a2*b2a1*b1+b0*a0 MM0

CS MSU Graphics & Media Lab (Video Group) Пример кода с MMX 4 paddd MM7, MM0 MM7 MM0 paddd a3*b3+a2*b2a1*b1+b0*a0 MM a3*b3+a2*b2a1*b1+b0*a0

CS MSU Graphics & Media Lab (Video Group) Пример кода с MMX 5 add [a_vector], 8 6 add [b_vector], 8 a7a6a5a4a3 a_vector

CS MSU Graphics & Media Lab (Video Group) Пример кода с MMX 7 sub [count], 4 Счетчик уменьшаем на 4. Уже обработано 4 элемента 8 jnz loop Продолжается цикл если ещё осталось что обрабатывать

CS MSU Graphics & Media Lab (Video Group) Пример кода с MMX 9 movq MM0, MM7 MM0 a11*b11+a10*b10+a7*b7 +a6*b6+a3*b3+a2*b2 A9*b9+a8*b8+a5*b5+a4 *b4+a1*b1+a0*b0

CS MSU Graphics & Media Lab (Video Group) Пример кода с MMX 10 psrlq MM7, 32 MM7 a11*b11+a10*b10+a7*b7+a 6*b6+a3*b3+a2*b2 a9*b9+a8*b8+a5*b5+a4*b 4+a1*b1+a0*b a11*b11+a10*b10+a7*b7+ a6*b6+a3*b3+a2*b2 MM7 shift

CS MSU Graphics & Media Lab (Video Group) Пример кода с MMX 11 paddd MM7, MM0 MM7 a11*b11+a10*b10+a7*b7 +a6*b6+a3*b3+a2*b2 A9*b9+a8*b8+a5*b5+a4 *b4+a1*b1+a0*b a11*b11+a10*b10+a7*b7 +a6*b6+a3*b3+a2*b2 MM0 paddd a11*b11+a10*b10+a7*b7 +a6*b6+a3*b3+a2*b2 Наш результат MM7

CS MSU Graphics & Media Lab (Video Group) Содержание: MMX технология Программа VirtualDub Программа AviSynth Программа Mathcad

28 VirtualDub Лучшая программа для работы с потоковым видео

CS MSU Graphics & Media Lab (Video Group) План О программе VirtualDub Как писать фильтры Пример Итоги

CS MSU Graphics & Media Lab (Video Group) Что это такое? VirtualDub является бесплатно распространяемой программой. Это САМАЯ распространенная программа для поточной обработки видео (в т.ч. Подготовки MPEG-4 фильмов с DVD). У неё открытые исходники, что позволяет модифицировать исходный код программы.

CS MSU Graphics & Media Lab (Video Group) Где можно скачать и узнать о VirtualDub Это официальный сайт VirtualDub. Здесь можно скачать последние версии и документацию по использованию.

CS MSU Graphics & Media Lab (Video Group) Область применения Осуществляет просмотр и базовое редактирование видео Позволяет конвертировать в разные форматы видео и аудио треки Обрабатывает видео (и аудио) с использованием фильтров Осуществляет восстановление файлов Позволяет указывать в скрипте автоматическую обработку фильмов Осуществляет качественный захват видео с камеры

CS MSU Graphics & Media Lab (Video Group) Внешний вид VirtualDub

CS MSU Graphics & Media Lab (Video Group) Панель управления Воспроизвести Исходное видео Сэмплинг Воспроизвести с фильтром Перемотка стоп

CS MSU Graphics & Media Lab (Video Group) Меню File Работа с файлами: сохранение, загрузка, сохранение скриптов и т.п. Работа Job – создание последовательных указаний для VirtualDub

CS MSU Graphics & Media Lab (Video Group) Меню Edit Более обширные возможности по перемотки видео вплоть до перехода на указанный номер кадра. Работа с сэмплингами в расширенном режиме.

CS MSU Graphics & Media Lab (Video Group) Меню Video Обработка видео с использованием фильтров. Подключение и указание параметров Проверка на наличие ошибочных кадров в видео потоке.

CS MSU Graphics & Media Lab (Video Group) Меню Audio Установка параметров звука и фильтров которые будут подключены в момент обработки. Установка режима: Прямое копирование потока Режим полной обработки

CS MSU Graphics & Media Lab (Video Group) Меню Option 1.Просмотр Log файлов 2.Установка параметров кодеков 3.Отображение потоков видео 4.Формат отображаемой информации 5.Расположения окон

CS MSU Graphics & Media Lab (Video Group) Как писать фильтры для VirtualDub Фильтр для VirtualDub представляет собой DLL библиотеку которая имеет вид:. vdf После этого можно скопировать его в папку Plugins и подключить в программе как фильтр.

CS MSU Graphics & Media Lab (Video Group) Структура файла *.vdf Файл должен содержать минимальный набор функций для работы. Те функции которые используются должны быть описаны в специальной структуре. Если функция не используется, то в поле должно стоять NULL.

CS MSU Graphics & Media Lab (Video Group) Структура typedef struct FilterDefinition{... FilterInitProcinitProc; FilterDeinitProcdeinitProc; FilterRunProc runProc; FilterParamProcparamProc; FilterConfigProcconfigProc; FilterStringProcstringProc; FilterStartProcstartProc; FilterEndProc endProc; FilterScriptStrProc fssProc;... } FilterDefinition;

CS MSU Graphics & Media Lab (Video Group) Пример Разберем пример программы которая Blue компоненту уменьшает в два раза, а Green оставляет без изменения. int runProc(const FilterActivation *fa, const FilterFunctions *ff); Это аналог процедуры main() в С++, VirtualDub начнет действия с вызова этой функции при обработке кадра (не учитываем вызов инетфейса).

CS MSU Graphics & Media Lab (Video Group) RunProc RunProc Фильтр, уменьшающий Blue в два раза {... src = (Pixel32 *)fa->src.data; dst = (Pixel32 *)fa->dst.data; h = fa->src.h; do { w = fa->src.w; do { old_pixel = *src++; new_pixel = (old_pixel & 0xFF0000) + ((old_pixel & 0x0000FE)>>1) + 0x008000; *dst++ = new_pixel; } while(--w); src = (Pixel32 *)((char *)src + fa -> src.modulo); dst = (Pixel32 *)((char *)dst + fa -> dst.modulo); } while(--h); return 0; }

CS MSU Graphics & Media Lab (Video Group) Служебные функции Для VirtualDub надо включить 2 функции они служебные и не несут большой смысловой нагрузки, но их надо указывать для совместимости с VirtualDub: extern "C" int __cdecl VirtualdubFilterModuleInit2(FilterModule *fm, const FilterFunctions *ff, int& vdfd_ver, int& vdfd_compat); extern "C" void __cdecl VirtualdubFilterModuleDeinit(FilterModule *fm, const FilterFunctions *ff);

CS MSU Graphics & Media Lab (Video Group) Описание структуры struct FilterDefinition { NULL,NULL,NULL,// next, prev "tutorial", // name "blue color", // desc "anyone", // maker NULL, // private_data 0, // inst_data_size... Описание атрибутов относящиеся к интерфейсу фильтра, подсказка для пользователя при подключении фильтра.

CS MSU Graphics & Media Lab (Video Group) Описание структуры // Описание используемых функций.... NULL, // initProc NULL, // deinitProc tutorialRunProc, // runProc NULL, // paramProc NULL, // configProc NULL, // stringProc NULL, // startProc NULL, // endProc NULL, // script_obj NULL, // fssProc };

CS MSU Graphics & Media Lab (Video Group) Компиляция После компиляции файл будет иметь вид *.dll Переименовать файл в *.vdf (мы создавали проект для написания DLL библиотеки) Поместить его в папку Plugins Подключить в опциях VirtualDub фильтр

CS MSU Graphics & Media Lab (Video Group) Итоги Плюсы: Программа является бесплатной и с открытыми исходниками Все проблемы с открытием видео и его сохранением уже решены Возможность загрузки фильтров Программирование ведется на С++ что позволяет пользоваться весьма гибким аппаратом для реализации своих алгоритмов

CS MSU Graphics & Media Lab (Video Group) Содержание: MMX технология Программа VirtualDub Программа AviSynth Программа Mathcad

51 AviSynth Скриптовый язык потоковой обработки видео

CS MSU Graphics & Media Lab (Video Group) План О программе AviSynth Операторы Семантика и прагматика операций: -логические -математические Классификаций функций AviSynth Использование Plugins Итоги

CS MSU Graphics & Media Lab (Video Group) Что это такое? AviSynth является программой- источником (FrameServer) которую используют различные приложения для обработки видео. Также AviSynth обладает развитым скриптовым языком и механизмом Plug-In, позволяющим в потоке обрабатывать фильмы.

CS MSU Graphics & Media Lab (Video Group) Как работает AviSynth Использование AviSynth состоит из двух этапов: создается простой текстовый документ который содержит последовательность команд – скрипт; запускается приложением обрабатывающее видео, например, можно запустить его VirtualDub или Windows Media Player.

CS MSU Graphics & Media Lab (Video Group) Почему удобен AviSynth AviSynth является открытым и свободно распространяющимся проектом. Исходники можно исправлять и вносить в них те изменения, которые вам нужны. Этот проект только стартовал, и есть уникальная возможность поучаствовать в нём.

CS MSU Graphics & Media Lab (Video Group) Где можно скачать и узнать о AviSynth Официальный сайт AviSynth: Здесь можно вносить свои предложения, а также предложена весьма интересная идея – корректировать сайт вместе с разработчиками.

CS MSU Graphics & Media Lab (Video Group) Типы доступные в AviSynth Семантика типов данных Прагматика clip Переменная хранящая параметры видео/аудио клипа string Строковая переменная int Целочисленная переменная float Переменная с плавающей точкой bool Булевская переменная

CS MSU Graphics & Media Lab (Video Group) Логические операции AviSynth СемантикаПрагматика == Равенство != Неравно || Логическое Или (OR) && Логическое И (AND)

CS MSU Graphics & Media Lab (Video Group) Логические операции AviSynth СемантикаПрагматика +Сложение -Вычитание *Умножение /Деление %Mod (Операция в кольце) >=(Больше

CS MSU Graphics & Media Lab (Video Group) Пример a = Результатом является 10 b = (a==true) ? 1 : 2 Аналог операции в С++ « :?» В эквивалентном виде: if (a==true) then b=1 else b=2

CS MSU Graphics & Media Lab (Video Group) Классификация функций в AviSynth 1.Численные функции 2.Строковые функции 3.Функции перевода 4.Проверочные функции 5.Другие типы функций Остановимся на некоторых из их подробнее. Все эти функции а также многие другие приведены на сайте.

CS MSU Graphics & Media Lab (Video Group) Численные функции Floor (float) Переводит float в int до ближайшего снизу Floor(1.2) = 1 Floor(1.6) = 1 Floor(-1.2) = -2 Floor(-1.6) = -2

CS MSU Graphics & Media Lab (Video Group) Численные функции Round (float) Переводит float в int округляя результат Round(1.2) = 1 Round(1.6) = 2 Round(-1.2) = -1 Round(-1.6) = -2

CS MSU Graphics & Media Lab (Video Group) Численные функции Стандартные математические функции: Sin (float) Cos (float) Pi () Log (float) Exp (float) Pow (float base, float power) Sqrt (float)

CS MSU Graphics & Media Lab (Video Group) Численные функции Spline (float X, x1,y1, x2,y2,...., bool "cubic") Пример: Spline(5, 0,0, 10,10, 20,0, false) = 5 Spline(5, 0,0, 10,10, 20,0, true) = 7

CS MSU Graphics & Media Lab (Video Group) Работа со строками UCase("AviSynth") Буквы в верхний регистр LCase("AviSynth") Буквы в нижний регистр RevStr("AviSynth") Инверсия букв StrLen("AviSynth") Длина строки

CS MSU Graphics & Media Lab (Video Group) Пример UCase("AviSynth") = "AVISYNTH" LCase("AviSynth") = "avisynth" RevStr("AviSynth") = "htnySivA" StrLen("AviSynth") = 8

CS MSU Graphics & Media Lab (Video Group) Функция перевода Пример: Value( "-2.7" ) = -2.7 Value(string)- Переводит строку в int

CS MSU Graphics & Media Lab (Video Group) Функции проверки типа Функции проверки типа переменных: IsBool (var) IsInt (var) IsFloat (var) IsString (var) IsClip (var)

CS MSU Graphics & Media Lab (Video Group) Пример a = AVISource("d:\capture.00.avi") b = AVISource("d:\capture.01.avi") c = AVISource("d:\capture.02.avi") sound_track=AVSource("d:\audio.wav") AudioDub(a+b+c, sound_track) В переменные a,b,c записываются параметры трех видео роликов. Которые потом будут показаны последовательно друг за другом с общей звуковой дорожкой которую мы тоже предварительно загрузили.

CS MSU Graphics & Media Lab (Video Group) Фильтры В AviSynth можно использовать фильтры написанные уже раньше. Для этого их надо подключить специальной функцией: LoadPlugin ("filename"[,...]) Фильтры в AviSynth имеют вид:.avs

CS MSU Graphics & Media Lab (Video Group) Фильтры AviSynth позволяет подключить фильтры написанные в VirtualDub. Единственное ограничение – необходимый формат видео RGB32. Но если будет другой формат можно воспользоваться встроенными в AviSynth функциями для перевода в нужный формат.

CS MSU Graphics & Media Lab (Video Group) Использование фильтров VirtualDub LoadVirtualDubPlugin ("filename","filtername", preroll) Подключение фильтра VirtualDub: 1.Первый параметр.vdf плагин VirtualDub 2.Второй параметр имя файла с конвертированного по AviSynth (.avs) 3.Preroll показывает сколько кадров необходимо держать в буфере (например, для деинтерлейсинга)

CS MSU Graphics & Media Lab (Video Group) Пример Import("d:\vdub_filters.avs")AviSource("d:\filename.avi") ConvertToRGB32() # Там где надо VD_SmartBob(1, 0, 10, 1) ConvertBackToYUY2() # Там где надо VD_SmartBob(1, 0, 10, 1) – функция осуществляющая подгрузку плагина с соответствующими параметрами для данного фильтра.

CS MSU Graphics & Media Lab (Video Group) Загрузка фильтра деинтерлейсинга function VD_SmartBob(clip ''clip'', bool ''show_motion'', int ''threshold'', bool ''motion_map_denoising'') { LoadVirtualdubPlugin("d:\bob.vdf","_VD_Sm artBob", 1) Return clip.SeparateFields._VD_SmartBob(clp.GetP arity?1:0,default(show_motion,false)?1:0, default(threshold,10), default(motion_map_denoising,true)?1:0) }

CS MSU Graphics & Media Lab (Video Group) Итоги AviSynth является весьма гибким средством применительно к любому приложению работающему с видео. Возможность работы с исходниками позволяет получить при правильном подходе весьма ощутимые результаты. Основное преимущество – возможность СУЩЕСТВЕННО сэкономить время при массовых операциях с фильмами.

CS MSU Graphics & Media Lab (Video Group) Содержание: MMX технология Программа VirtualDub Программа AviSynth Программа Mathcad

78 Mathcad Удобнейшее средство визуализации данных. Средство предварительной проработки фильтров.

CS MSU Graphics & Media Lab (Video Group) Введение в Mathcad Достоинства mathcada Почему стоит использовать Mathcad : Промежуток времени для получения первых результатов работы алгоритма значительно меньше по сравнению с разработкой в какой-либо среде Каждое изменение текста программы динамически влияет на результат Поиск ошибок осуществляется быстрее, чем в исходном тексте программы на к-л. языке программирования Реализовав основную часть алгоритма в mathcade, время написания реальной программы уменьшается на порядок Множество реализованных, готовых к использованию функций

CS MSU Graphics & Media Lab (Video Group) Введение в Mathcad (2) Достоинства mathcada Почему стоит использовать Mathcad: Исходный код программы выводится в графическом режиме, и потому выглядит нагляднее, чем в текстовом редакторе Как правило, для реализации к-л. задачи в mathcade требуется написать меньше исходного теста, чем например в С++ Реализовав основную часть алгоритма в mathcade, время написания реальной программы уменьшается на порядок Отличная помощь: все описано кратко и понятно Простота использования Индексация в массиве начинается с нуля

CS MSU Graphics & Media Lab (Video Group) Пример функции чтения Сбоку - изображение с NEDI

CS MSU Graphics & Media Lab (Video Group) Разработка фильтра Чтение изображения Визуализация матрицы – Ctrl + T

CS MSU Graphics & Media Lab (Video Group) Разработка фильтра Показ компонент изображения

CS MSU Graphics & Media Lab (Video Group) Разработка фильтра Перевод изображения в YUV

CS MSU Graphics & Media Lab (Video Group) Разработка фильтра Показ результата