'

Средства и приемы обработки видео

Понравилась презентация – покажи это...





Слайд 0

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


Слайд 1

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 2 Содержание: MMX технология Программа VirtualDub Программа AviSynth Программа Mathcad


Слайд 2

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


Слайд 3

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 4 Курс по Intel MMX В слайдах использованы рисунки из курса по MMX компании Intel, который настоятельно рекомендуется пройти. Курс можно скачать по адресу: http://graphics.cs.msu.su/courses/mdc2004/library/mintro.exe (размер: 14 МБ) http://graphics.cs.msu.su/courses/mdc2004/library/runcbt.exe (размер: 2,7 МБ)


Слайд 4

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


Слайд 5

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


Слайд 6

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 7 MMX™ технология В технологии MMX применяются инструкции использующие особенности архитектуры нового процессора. MMX инструкции работают как со знаковой так и с беззнаковой арифметикой. Появились 8 новых регистров с соответствующими именами MM0…MM7.


Слайд 7

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


Слайд 8

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


Слайд 9

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 10 Семантика инструкций MMX™ <команда>[dest,src] <команда> записывается по следующим правилам: Команда начинается с “P” (кроме movd, movq ) “US” работа с без знаковой арифметикой “S” или “SS” работа со знаковой арифметикой “B”, “W”, “D”, “Q” соответственно обозначают тип с которым работает инструкция


Слайд 10

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


Слайд 11

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 12 Таблица


Слайд 12

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


Слайд 13

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 14 Пример арифметических инструкций


Слайд 14

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 15 Пример для сложения типа Byte


Слайд 15

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 16 Пример для сложения типа Word


Слайд 16

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 17 Пример для сравнения


Слайд 17

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 18 Пример кода с 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, 32 11 paddd MM7, MM0 12 movd mem_vdp, MM7 Расчет скалярного произведения:


Слайд 18

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 19 Пример кода с MMX™ 1 movq MM0, [a_vector] 2 movq MM1, [b_vector] A_vector MM0


Слайд 19

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 20 Пример кода с MMX™ 3 pmaddwd MM0, MM1 MM0 MM1 pmadwd MM0


Слайд 20

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 21 Пример кода с MMX™ 4 paddd MM7, MM0 MM7 MM0 paddd MM7


Слайд 21

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 22 Пример кода с MMX™ 5 add [a_vector], 8 6 add [b_vector], 8 a_vector


Слайд 22

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


Слайд 23

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 24 Пример кода с MMX™ 9 movq MM0, MM7 MM0


Слайд 24

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 25 Пример кода с MMX™ 10 psrlq MM7, 32 MM7 MM7 shift


Слайд 25

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 26 Пример кода с MMX™ 11 paddd MM7, MM0 MM7 MM0 paddd MM7


Слайд 26

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 27 Содержание: MMX технология Программа VirtualDub Программа AviSynth Программа Mathcad


Слайд 27

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


Слайд 28

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 29 План О программе VirtualDub Как писать фильтры Пример Итоги


Слайд 29

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


Слайд 30

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 31 Где можно скачать и узнать о VirtualDub http://virtualdub.org/ Это официальный сайт VirtualDub. Здесь можно скачать последние версии и документацию по использованию.


Слайд 31

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


Слайд 32

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 33 Внешний вид VirtualDub


Слайд 33

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


Слайд 34

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


Слайд 35

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


Слайд 36

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


Слайд 37

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


Слайд 38

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 39 Меню Option Просмотр Log файлов Установка параметров кодеков Отображение потоков видео Формат отображаемой информации Расположения окон


Слайд 39

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


Слайд 40

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


Слайд 41

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 42 Структура typedef struct FilterDefinition{ . . . FilterInitProc initProc; FilterDeinitProc deinitProc; FilterRunProc runProc; FilterParamProc paramProc; FilterConfigProc configProc; FilterStringProc stringProc; FilterStartProc startProc; FilterEndProc endProc; FilterScriptStrProc fssProc; . . . } FilterDefinition;


Слайд 42

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


Слайд 43

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 44 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; }


Слайд 44

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 45 Служебные функции Для 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);


Слайд 45

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


Слайд 46

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


Слайд 47

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


Слайд 48

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


Слайд 49

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 50 Содержание: MMX технология Программа VirtualDub Программа AviSynth Программа Mathcad


Слайд 50

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


Слайд 51

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


Слайд 52

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


Слайд 53

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


Слайд 54

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


Слайд 55

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


Слайд 56

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 57 Типы доступные в AviSynth


Слайд 57

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 58 Логические операции AviSynth


Слайд 58

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 59 Логические операции AviSynth


Слайд 59

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


Слайд 60

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 61 Классификация функций в AviSynth Численные функции Строковые функции Функции перевода Проверочные функции Другие типы функций Остановимся на некоторых из их подробнее. Все эти функции а также многие другие приведены на сайте.


Слайд 61

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


Слайд 62

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


Слайд 63

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


Слайд 64

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 65 Численные функции 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


Слайд 65

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


Слайд 66

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 67 Пример UCase("AviSynth") = "AVISYNTH" LCase("AviSynth") = "avisynth" RevStr("AviSynth") = "htnySivA" StrLen("AviSynth") = 8


Слайд 67

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


Слайд 68

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


Слайд 69

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 70 Пример 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 записываются параметры трех видео роликов. Которые потом будут показаны последовательно друг за другом с общей звуковой дорожкой которую мы тоже предварительно загрузили.


Слайд 70

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


Слайд 71

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


Слайд 72

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


Слайд 73

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


Слайд 74

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


Слайд 75

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


Слайд 76

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 77 Содержание: MMX технология Программа VirtualDub Программа AviSynth Программа Mathcad


Слайд 77

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


Слайд 78

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 79 Введение в Mathcad Достоинства mathcad’a Почему стоит использовать Mathcad: Промежуток времени для получения первых результатов работы алгоритма значительно меньше по сравнению с разработкой в какой-либо среде Каждое изменение текста программы динамически влияет на результат Поиск ошибок осуществляется быстрее, чем в исходном тексте программы на к-л. языке программирования Реализовав основную часть алгоритма в mathcad’e, время написания реальной программы уменьшается на порядок Множество реализованных, готовых к использованию функций


Слайд 79

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


Слайд 80

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 81 Пример функции чтения Сбоку - изображение с NEDI


Слайд 81

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


Слайд 82

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 83 Разработка фильтра Показ компонент изображения


Слайд 83

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 84 Разработка фильтра Перевод изображения в YUV


Слайд 84

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 85 Разработка фильтра Показ результата


×

HTML:





Ссылка: