Система дистанційного контролю геометричних параметрів об'єктів

Механічні пристрої вимірювання. Рішення на базі лазерних трекерів. Фізичні основи оптичних систем контролю. Технологія DirectShow та її призначення. Розробка схеми інформаційних потоків та функціональної схеми роботи системи дистанційного контролю.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 22.10.2012
Размер файла 2,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ВСТУП

Для контролю геометричних параметрів застосовують різні типи вимірювальних систем. Цілі контролю можуть бути різними - від вхідного і вихідного контролю при обміні продукцією між контрагентами до допоміжного контролю усередині процесу виробництва, з метою оптимізації подальшої механічної обробки.

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

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

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

Метою дипломної роботи є створення системи, що призначена для вимірювання поздовжніх розмірів виробів в технологічних лініях. Зображення вимірюваного об'єкту проектується за допомогою об'єктиву на світлочутливу CCD-матрицю відеокамери. З відеокамери сигнал поступає в комп'ютер через стандартний USB-порт.

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

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

Програмне забезпечення реалізовано за допомогою бібліотеки компонентів DSPack, що призначені для захоплення та обробки відео-потоків. Бібліотека компонентів DSPack базується на використанні технології DirectShow.

DirectShow - це технологія, що дозволяє Windows-додаткам управляти широким спектром пристроїв аудіо/відео введення, що включає DV-камери, web-камери, DVD-пристрої, карти TV-тюнерів. Вона підтримує також різні формати, від WAV і AVI до Windows Media. DirectShow, окрім цього, розширювана та дозволяє підтримувати пристрої третіх виробників, формати і компоненти обробки.

DirectShow пропонує як високорівневу модель, що дозволяє швидко розробляти цифрові медіасистеми, так і низькорівневу класову модель, що дозволяє третім виробникам створювати власні компоненти аудіо і відео обробки.

1. ПОСТАНОВКА ЗАВДАННЯ

1.1 Найменування та галузь застосування

Найменування розробки: оптична система дистанційного контролю геометричних параметрів об'єктів. Система може бути застосована для вимірювання розмірів виробів в технологічних лініях.

В якості датчика вимірювання використовується CCD матриця web-камери, що підключена до персонального комп'ютера.

1.2 Підстава для створення

Підставою для розробки є наказ № 55С-01 від 29 жовтня 2010 р. по Криворізькому інституту КУЕІТУ.

Початок робіт: 01.11.10. Закінчення робіт: 25.05.11.

1.3 Характеристика розробленого програмного забезпечення

Зображення вимірюваного об'єкту проектується за допомогою об'єктиву на світочутливу CCD-матрицю відеокамери. З відеокамери сигнал поступає в комп'ютер через стандартний USB-порт.

Для зв'язку відеокамери з розробленим програмним забезпеченням на комп'ютері встановлені драйвера web-камери, які перетворюють сигнали в стандартний відеопотік (по PAL(SECAM)-25 кадрів/сек, по NTSC-30 кадрів/сек). Точність вимірювання залежить від роздільної здатності самої CCD матриці.

Програмне забезпечення розроблено в середі Delphi з використанням пакетів компонентів DSPack та VideoGrabber, що призначені для захоплення та обробки відео-потоків.

1.4 Мета й призначення

Метою даної дипломної роботи є створення оптичної системи дистанційного контролю геометричних параметрів об'єктів на базі web-камери.

Система призначена для безконтактного контролю зміни геометрії спостережуваного об'єкту.

1.5 Загальні вимоги до розробки

Вимоги до програмного забезпечення:

Робота в середовищі операційних систем Windows;

Простота й зрозумілість інтерфейсу.

Мінімальні вимоги до апаратного забезпечення:

персональний комп'ютер на базі Intel процесору з частотою не менше 2,4 ГГц;

оперативна пам'ять не менше 512Мб;

монітор із SVGA адаптером;

НЖМД не менше 80 Гбайт;

Монітор, клавіатура, маніпулятор типу "миша".

Web-камера.

1.6 Джерела розробки

Джерелами розробки дипломної роботи є:

довідкова література;

наукова література;

технічна література;

програмна документація.

2. ТЕОРЕТИЧНЕ ДОСЛІДЖЕННЯ ОСОБЛИВОСТЕЙ РЕАЛІЗАЦІЇ СИСТЕМ КОНТРОЛЮ ГЕОМЕТРИЧНИХ ПАРАМЕТРІВ ОБ'ЄКТІВ

2.1 Механічні пристрої вимірювання

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

Рис. 2.1 - Принципова схема універсального контактного вимірювального пристрою

На рис. 2.1 приведена принципова схема найбільш універсального, високоточного контактного вимірювального пристрою. У даному пристрої щуп пересувається за допомогою електромеханічної системи уздовж контрольованої поверхні. У щупі розміщується сенсорний датчик, який реєструє відносні відхилення контрольованої поверхні при русі від крапки до крапки. Система переміщення щупа є стежачою системою, вихідні координати якої визначають геометричні розміри вимірюваної поверхні. Через наявність механічних вузлів, дані системи володіють малою швидкодією.

2.2 Рішення на базі лазерних трекерів

Система лазерного координатного вимірювання на базі трекера складається з вимірювального блоку на мобільному телескопічному штативі і мішені -відбивача. У основу роботи покладений принцип безперервного відстежування стаціонарним блоком положення мішені в просторі.

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

Рис. 2.2 - Зовнішній вигляд пристрою на базі лазерних трекерів

Вимірювальний блок містить оптичну систему, сервоприводи, кутомірні пристрої, блоки далекомірів (інтерферометр і абсолютний далекомір) і має дві перпендикулярні осі обертання. Обертання навколо осей здійснюється за допомогою сервоприводов, кожна вісь забезпечена кутовим енкодером. Сервоприводи дозволяють наводити лазерний промінь далекоміра в задану точку і відстежувати положення відбивача. Вбудована метеостанція дозволяє коректувати свідчення вимірника залежно від параметрів навколишнього середовища для досягнення максимальної точності.

У зв'язку з тим, що при вимірюваннях мішень повинна знаходиться у полі зору вимірювального блоку, при контролі великогабаритних і складних об'єктів часто доводиться переміщати вимірювальний блок. Для його прив'язки в просторі використовують набір з 4-5 статично встановлених мішеней.

Можливі наступні режими вимірювань:

періодичний перегляд всіх видимих відбивачів (при монтажі і контролі великогабаритних виробів) з видачею відхилень від теоретичних (1-5 секунд на точку);

режим оцінки мікровібрацій і нестабільності навколишніх умов для статичних точок;

контроль положення точок деталі при монтажі виробів. У даному режимі відбувається безперервне оновлення значення координат мішеней і порівняння їх із заданими. При попаданні координат точок в поля допуску, трекер видає звуковий сигнал, що свідчить про точне поєднання деталей.

прив'язка вимірювального блоку по базових крапках, прив'язка до попередньої стоянки.

Вирішувані задачі:

виконання високоточних робіт по контролю геометричних параметрів складних конструкцій;

контроль положення деталей при збірці виробів;

калібрування верстатів і вимірювальних машин (у режимі інтерферометра);

контроль мікропереміщень елементів машин;

періодичний контроль (без втручання оператора) геометрії несучих конструкцій при їх тривалому статичному навантаженні;

технологічний контроль;

періодична перевірка складного оснащення і стапелів.

2.3 Рішення на базі лазерних радарів

Лазерний радар є закінченою високоточною контрольно-вимірювальною машиною, що дозволяє проводити автоматичне сканування поверхонь розташованих навколо вимірювальної головки приладу в радіусі до 60 метрів з об'ємною точністю до 0,1 мм (на максимальній дальності).

Вимірювальний блок радара складається з лазерного далекоміра, системи відхилення променя і сервоприводів з енкодерами. Система відхилення дозволяє направити промінь далекоміра на будь-яку точку простору навколо радара. Сумісне вимірювання дальності до точки з поточними значеннями кута місця і азимута променя дозволяють провести прив'язку точки до системи координат.

Рис. 2.3 - Зовнішній вигляд пристрою на базі лазерних радарів

В основі вживаного далекоміра лежить принцип вимірювання відстані по частотному зрушенню між випромінюючим і прийнятим частотно модульованим (200 ГГц) інфрачервоним лазерним сигналом.

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

Основні властивості:

безконтактна система вимірювання: відсутність реперних крапок, відбивачів, щупів;

великий робочий діапазон до 60 м

можливість використання дзеркал для вимірювань на зворотному боці об'єктів;

можливість сканування із заданим кроком;

закінчена метрологічна система;

можливість об'єднання декількох радарів;

висока швидкість сканування: до 1000 точок/сек;

сумісність із стандартними CAD пакетами;

можливості автоматизації: вимірювання по наперед написаних скриптах і автоматичне створення звітів;

Ключові переваги:

висока точність;

можливість сканування нагрітих об'єктів (до 1500 градусів)

сканування великогабаритних об'єктів без додаткових пристосувань;

портативність;

мінімальний час підготовки до вимірювань.

Сфери застосування:

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

контроль і реінженірінг суднових гвинтів;

контроль усадки поковок.

2.4 Оптичні системи контролю

Оптичні системи контролю порівняно з електромеханічними володіють вищою швидкодією. Дані системи, як правило, реалізують два методи - тіньовий і контроль у відбитому світлі. У першому випадку вимірюються розміри тіні від предмету, в другому - вимірюються амплітудно-фазові характеристики відбитого світла, по яких визначаються параметри контрольованої поверхні.

Для контролю виробів з точністю, сумірною з довгою хвилею світла, вдаються до використання ефекту інтерференції і дифракції світла або до застосування методів голографії. Проте реалізація даних методів вимагає складних технічних пристроїв.

Тому в даний час перевага все частіше віддається оптичним приладам безконтактного контролю. Вони багато в чому позбавлені перерахованих недоліків механічних систем, прості в реалізації, володіють великою універсальністю і швидкодією. Роль оптичних методів контролю різко зросла з появою персональних комп'ютерів і малогабаритних комп'ютерних телекамер - TV. Вони дозволили повністю автоматизувати всі необхідні розрахунки, виключивши при цьому підготовчі операції. Застосування комп'ютерів і TV дало можливість за допомогою одного і того ж приладу вимірювати різні характеристики поверхні шляхом вибору відповідного програмного забезпечення.

Розглянемо метод оптичного контролю, який найбільшою мірою підходить для високоточного безконтактного вимірювання геометричних розмірів поверхонь деталей.

При цьому йдеться тільки про ті елементи поверхні деталі, до яких доходить світлова хвиля. Принципова схема оптичного контролю геометрії поверхні (рис. 2.4) включає: 1 - джерело монохроматичного світла, 2 - дзеркала, 3 - лінзи, 4 - дифракційні грати, 5 - коректуючі дзеркала, 6 - деталь, 7 - телевізійна камера (TV), 8 - платня сполучення, 9 - комп'ютер.

Пристрій закритий від стороннього світла і пилу і не чутливо до вібрації. Вільний доступ забезпечений тільки до місця установки деталі. Комп'ютер за наслідками обробки поверхні видає у вигляді таблиць на екран і на друк відхилення у всіх перетинах поверхні.

Рис. 2.4 - Принципова схема оптичного контролю геометрії поверхні

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

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

Зображення в телекамері фіксується за (0,01 - 0,001 сек.). Це зводить до мінімуму вплив механічних вібрацій і дозволяє одержати потрібну швидкодію. Окрім телекамери, система контролю (рис. 2.4) включає:

джерело освітлення, яке кріпиться на жорсткій базі так, щоб світло від нього потрапляло на контрольований об'єкт;

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

Для контролю якості обробки поверхні застосовується тільки спосіб контролю у відбитому світлі.

2.5. Фізичні і математичні основи оптичних систем контролю

2.5.1 Фіксація зображення в камері

Розглянемо випадок, коли проводиться контроль геометричних розмірів на площині, що розташовується перпендикулярно до оптичної осі телекамери (рис. 2.5).

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

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

При визначенні відстані між точками на площині (рис. 2.5) спочатку визначається масштаб m0 - кількість одиниць довжини, що доводяться на один піксель. Розглянемо еталонний відрізок ab завдовжки A (мм), розташований на відстані L від оптичного центру об'єктиву.

Рис. 2.5 - Схема контролю геометричних розмірів на площині, що розташовується перпендикулярно до оптичної осі телекамери

На фотоматриці телекамери цьому відрізку відповідає відрізок a1b1 завдовжки B1, зміряний в пікселях. Масштаб визначається відношенням:

(2.1)

Якщо відрізок ab змістити на відстань E уздовж оптичної осі a1a, то згідно правилу подібності одержимо:

(2.2)

Поділивши ліві і праві частини одержаної рівності один на одного, одержимо:

(2.3)

З (2.3) витікає, що взаємозв'язок між масштабами при паралельному перенесенні об'єкту контролю на відстань визначається залежністю:

(2.4)

Для визначення геометричних розмірів аналізованої поверхні використовуються дифракційні грати (4, рис. 2.5), які представляють прозору пластину з нанесеними на ній темними смугами (рис. 2.6). Наприклад, грати, що мають розмір в плані 50 x 50 мм, відстань між лініями і їх ширину - 1 мм, при точності нанесення ліній 1 мкм дозволяє на відстані L = 1,5-2 м виконувати вимірювання з точністю 6 мкм.

Рис. 2.6 - Дифракційні грати

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

2.5.2 Визначення меж зображення виробу на основі перепадів інтенсивності світла

Тепер, коли описана загальна схема, пов'язана з фіксацією зображення в телекамері і масштабуванням розмірів контрольованого виробу, розглянемо завдання визначення меж виробу по перепадах інтенсивності світла, що потрапляє на кожен піксель фотоматриці. Основною ознакою межі зображення є перепад інтенсивності освітлення в напрямі, перпендикулярному лінії, що визначає межу. Через наявність мікронерівностей на поверхні, а також дифракції світла, межа завжди буде розмита. Розподіл інтенсивності світла I(n) в напрямі, перпендикулярному межі в крапці n0 має вигляд, представлений на рисунку (рис.2.7, а). Пунктиром позначений перепад інтенсивності в ідеальному випадку.

Похідна по переміщенню n від інтенсивності світла I(n) на межі (у точці n0) апроксимується кривій Гауса (рис. 2.7, б), де A - константа, що характеризує максимальне значення перепаду інтенсивності відбитого світла.

Рис. 2.7 - Графік розподілу інтенсивності світла

Для отримання розподілу інтенсивності I(n), залежної від координат контрольованого виробу, необхідна кількість пікселів n помножити на масштаб m0. В цьому випадку матимемо розподіл інтенсивності світла, що потрапляє від контрольованого виробу, в координатах, представлених в системі координат фотоматриці телекамери. Слід зазначити, що дані координати змінюватимуться з дискретністю, рівною масштабу m0. Тому вимірювання відстаней в цьому випадку здійснюватиметься з погрішністю, рівною масштабу, що неприпустимо для контролю геометричних розмірів складних поверхонь.

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

Розглянемо рішення даної задачі для двовимірного випадку. Перепад інтенсивності на площині характеризується модулем градієнта функції I(x,y) від двох змінних x, у:

, (2.5)

де змінні x і у представляють лінійні величини в двох взаємно перпендикулярних напрямах і вимірювані в одиницях довжини.

Визначення координат межі здійснюється в наступній послідовності:

1. Сканується зображення контрольованого виробу. На основі цього будується матриця координат опорних точок поверхні і значень модуля градієнта функції інтенсивності в цих точках.

3. По одержаній матриці будуються безперервні функції розподілу вірогідності для модуля градієнтів інтенсивності світлового сигналу. Функції розподілу вірогідності будуються уздовж межі зображення виробу так, щоб здійснювався перетин з даною межею.

4. Визначаються значення координат, відповідних максимальному значенню функції розподілу. Дані координати і беруться за координати опорних точок межі.

5. Через опорні точки межі проводиться безперервна лінія, яка може бути апроксимована аналітичним виразом.

Сканування зображення здійснюється послідовним аналізом інтенсивності світлового випромінювання, що потрапляє на квадрат розмірами 2 x 2 пікселі (рис. 2.8).

Рис. 2.8 - Схема аналізу інтенсивності світлового випромінювання

Визначається модуль градієнта інтенсивності світлового випромінювання для квадрата з чотирьох пікселів і координати центру даного квадрата. Для цього апроксимуємо функцію інтенсивності I(x,y) в області розмірами 2 x 2 пікселі (рис. 2.8) многочленом другого ступеня від безрозмірних величин x і у

(2.6)

(2.7)

- безрозмірні величини, визначувані поточними координатами центру (точка 0) - r0i[x0i, y0i] і обчислювані в системі координат фотоматриці (X,Y)M; xi=yi= - половина розміру пікселя в мм.

Представлення інтенсивності I(x,y) як функції від безрозмірних змінних дозволяє не враховувати масштаб при її перетворенні. Центри чотирьох вибраних пікселів (рис. 2.9) мають відносні безрозмірні координати: для першого пікселя

(-1,1), для другого (1,1), для третього (-1,-1) і для четвертого (1-1).

(2.8)

Значення часткових похідних першого порядку від I(x,y) по змінних (x,y) в центрі області 2х2 пікселя (точка 0) рівні коефіцієнтам b1 і b2 апроксимуючого полінома (2.6).

Для побудови полінома (2.6) потрібно визначити значення коефіцієнтів b0, b1, b2, b3 в межах даної області 2 x 2 пікселі. Представимо (2.6) системою з чотирьох рівнянь в матричній формі

, (2.9)

- матриця значень базисних функцій в точках вимірювання функції інтенсивності світла.

Базисні функції в поліномі (2.6):

вектор ;

- визначуваний вектор коефіцієнтів полінома;

- вектор значень інтенсивності світла в кожному пікселі.

При множенні (2.7) на матрицю M-1 одержимо:

(2.10)

Невідомі елементи вектора обчислюються з (2.10) через відомі значення інтенсивності Ii для кожного i-го пікселя

, , , (2.11)

Скануючи зображення, що сприймається всією поверхнею фотоматриці, квадратами 2 x 2 пікселі з кроком, рівним одному пікселю, можна визначити значення модуля градієнта функції I(x,y) для кожного квадрата:

(2.10)

Послідовне сканування зображення виробу дозволяє одержати матрицю координат і значення модуля градієнта інтенсивності відбитого світла для опорних точок контрольованої поверхні фотоматриці. Абсолютні значення координат центру квадратів 2 x 2 пікселі обчислюються по їх відомих безрозмірних значеннях:

, (2.11)

Другим етапом аналізу зображення є обробка одержаної матриці розподілу модуля градієнтів функції інтенсивності світла і побудова функції розподілу вірогідності для модулів градієнтів в областях, близьких до межі об'єкту. Функції розподілу вірогідності будуються при зміні безперервних координат так, щоб здійснювався їх перетин з визначуваною межею зображення об'єкту. Найчастіше розподіл вірогідності модуля градієнта функції інтенсивності I(x,y) будується у напрямі однієї з координат при постійному значенні іншої.

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

, , (2.12)

де при , при

px, py - щільність розподілу вірогідності модуля градієнта інтенсивності світла відповідно у напрямі осей X і Y фотоматриці; n і m - кількість точок відповідно у напрямі осі X і Y; Gi - значення модуля градієнта інтенсивності світла, що потрапляє на фотоматрицю телекамери в межах 2 x 2 пікселі.

Після визначення координат опорних точок межі через них проводиться безперервна крива, яка може бути апроксимована безперервними аналітичними функціями або поліномами.

3. ОГЛЯД ПРОГРАМНИХ ЗАСОБІВ ЗАХОПЛЕННЯ ТА ОБРОБКИ ВІДЕО-ПОТОКІВ

3.1 Технологія DirectShow та її призначення

Компанія Microsoft випустила Video for Windows 1.x в листопаді 1992 року для Windows 3.1 в оптимізованому вигляді для захоплення відео і збереження його на диск. З тих пір показники відеозахоплення дуже серйозно покращали завдяки використанню шини PCI, bus mastering controllers, NT striped sets, Fast/Wide SCSI і прямої передачі захопленого відео з пам'яті адаптера на диск без проміжного копіювання даних в пам'ять. Не дивлячись на характеристики захоплення, що перевищують зараз 20 мегабайт в секунду і велику кількість клієнтів для VfW, недоліки в архітектурі VfW з погляду необхідності підтримки відеоконференцій зажадали розробки нової технології відеозахоплення.

Архітектурі VfW бракує важливих властивостей з погляду відеоконференцій, телевізійного перегляду, захоплення відеополів і підтримки додаткових потоків даних таких, як VBI - vertical blanking interval - вертикальних інтервалів гасіння. Різноманітні виробники розширили VfW шляхом реалізації додаткових можливостей. Проте, без стандартизації інтерфейсів, додатки, використовуючі ці можливості, повинні включати апаратно-залежний код. Тісний зв'язок між драйверами захоплення VfW і драйверами дисплея означає те, що зміни, внесені драйвера захоплення, вимагають змін і для драйверів дисплея.

Додатково, інтерфейс VfW, AVICap не дуже добре працює з DirectShow, оскільки AVICap розподіляє буфера. Якщо до DirectShow мати доступ через AVICap, буфера повинні бути скопійовані в точці передачі, що дуже неефективно. Для інтеграції DVD, MPEG декодерів, відео-декодерів і тюнерів, розширень відеопортів (video port extensions - VPE) і аудіо-кодеров на одному адаптері, необхідна уніфікована драйверна модель, що підтримує всі ці пристрої і що управляє їх ресурсами.

DirectShow - це технологія, що дозволяє Windows-додаткам управляти широким спектром пристроїв аудіо/відео введення, що включає DV-камери, веб-камери, DVD-пристрої, карти TV-тюнерів. Воно підтримує також різні формати, від WAV і AVI до Windows Media. DirectShow, окрім цього, розширюване, воно дозволяє підтримувати пристрої третіх виробників, формати і компоненти обробки.

DirectShow пропонує як високорівневу модель додатку, що дозволяє швидко розробляти цифрові медіадодатки, так і низькорівневу класову модель, що дозволяє третім виробникам створювати власні компоненти аудіо і відео обробки.

Необхідно трохи сказати про еволюцію DirectShow. Вона почалася з підтримки в Windows 3.1, що надається моделлю відеозахоплення „Відео для Windows” (Video for Windows -VfW). VfW була прогресивною технологією для свого часу, але мала серйозні обмеження. Одним з них було те, що менеджер відеокомпресії (Video Compression Manager - VCM) не був розроблений для управління кодеками, які б передавали відеофрейми в різному порядку під час стиснення. Таким чином, було скрутно писати MPEG-кодеки, що базуються на VCM.

Windows також надавав просту підтримку аудіо і відео програвання через набір команд MCI - Media Control Interface, який використовувався драйверами mciavi. Хоча інфраструктура MCI допускала MPEG-декодери, вона ніколи не була повністю портирована на 32-бітную архітектуру, і не базувалася на COM. Для зняття цих обмежень Microsoft почала проект, відомий під назвою Quartz, в якій була закладена підтримка програвання MPEG-1 для Windows.

У той час виникала безліч нових пристроїв, таких, як цифрові відеокамери, нові медіаформати, такі, як MPEG-2 або DVD, і нові технології, такі, як відеоконференції. Ставала зрозумілою необхідність нової оболонки, що дозволяє примусити працювати разом ці нові технології максимально ефективно не тільки кожен сам по собі, але і під єдиним керівництвом. Ця оболонка повинна була бути розширюваною, щоб треті виробники могли здійснювати підтримку своїх спеціальних апаратних засобів, нестандартних форматів і процесів програмної обробки. Ця оболонка повинна була б максимально спростити розробку програм, надати можливість низькорівневого управління потоковими операціями і модифікувати необхідні аудіо і відео дані.

Для відповідності цим численним вимогам група розробників проекту Quartz почала з існуючого проекту Clockwork. Clockwork був модульною оболонкою, в якій спільно працювали напівнезалежні компоненти, слідуючи розпорядженням набору правил, для обробки медіапотоків. Група розробників Quartz'а адаптувала цю модель для роботи з Windows і забезпечила підтримку пристроїв третіх виробників. Результатом стала потокова архітектура, що базується на основі COM, яка через шість років стала базисом сотень додатків під Windows.

Ця архітектура спочатку називалася ActiveMovie і вперше з'явилася в 1995 році з DirectX SDK. У 1996 році ActiveMovie була перейменована в DirectShow. У 1998 році, разом з DirectX Media 6.1, була додана підтримка для DVD і додатків аналогового телебачення. У 2000 році DirectShow стала частиною DirectX SDK у складі DirectX 8.0, і додатково стала підтримувати Windows Media Format, DirectShow Editing Services і API-відеоредагування.

3.2 Застосування фільтрів

Цифрові відеопотоки є послідовностями відеофреймів, які можуть бути нестислими RGB-зображеннями або, якщо потік стислий, набором цифрових значень, який можна декодувати для отримання зображення. Звичайно відео програється із швидкістю 25 або 30 кадрів в секунду. Нестислий цифровий аудіопотік містить послідовність значень, кожне з яких є цілим, що представляє з себе квантовану (закруглену) амплітуду аналогового сигналу в певний момент часу. При якості CD-аудіо дані мають точність 16 біт на відлік і записуються і відтворюються як звук максимальної частоти 44,1 кілогерц. Стислий відеопотік не містить дійсних послідовностей даних, але, як і відеопотік, містить значення, які декодер використовує для відновлення початкового потоку перед тим, як подати його в звукову карту.

Аудіо і відеопотоки можуть бути оброблені самими різними способами. Вони можуть бути скомбіновані, проаналізовані, перемішані, скопійовані, згенерувані, змінені і т.д. У DirectShow всі ці операції приховані у фільтрах - COM-об'єктах, що мають стандартну поведінку. Фільтри, що читають файли, що розщеплюють бінарні дані на різні (наприклад, аудіо і відео) потоки - демультиплексори, фільтри-компресори і фільтри-декомпресори, фільтри, що відображають аудіо або відеодані, фільтри - драйвери пристроїв - все це фільтри, які знають, як вони повинні взаємодіяти, окрім обробки даних, - з іншими фільтрами - для передачі потокових даних. Додатки сполучають ці фільтри в необхідному порядку.

Фільтри можуть бути трьох основних типів: фільтри джерел для введення, фільтри перетворення для обробки і фільтри рендеринга для відображення інформації.

Фільтр джерела вводить дані в потік. Ці дані він може одержувати з файлу або, наприклад, відеокамери, веб-камери, TV-тюнера, мережевого потоку і т.д. DirectShow тісно пов'язана з моделлю Windows-драйвером (Windows Driver Model - WDM). Будь-який медіапристрий з правильно реалізованим WDM-драйвером автоматично надається для додатку як DirectShow-фільтр джерела. DirectShow надає також фільтри джерел для введення даних з файлів, DVD- і VfW-пристроїв.

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

Фільтри рендеринга приймають дані від фільтрів джерел або перетворення і відображають їх на екрані, виводять через колонки, у файли, пристрої і т.д. Частина „Direct” в назві „DirectShow” відображає той факт, що фільтри рендеринга використовують технології DirectDraw і DirectSound для передачі даних у видео- і звуковій карті. Додатково DirectShow підтримує властивості потокового ядра, що дозволяє таким пристроям захоплення, як TV-тюнери і DVD-пристрої передавати дані на зовнішні пристрої в режимі ядра для збереження витрат переходів з режиму ядра в призначений для користувача режим у випадках, коли додаток не вимагає цих даних.

Нижче приведена схема фільтрів і їх з'єднання при програванні avi-файлу:

Рис. 3.1 - Схема фільтрів і їх з'єднання при програванні avi-файлу

Тут фільтром джерела є File Source (Async), фільтрами рендеринга - Video Renderer і Default DirectSound Device, а фільтрами перетворення - AVI Splitter і AVI Decompressor.

3.3 Microsoft DirectX Media Objects (DMO)

Microsoft DirectX Media Objects (DMOs) - медіаоб'єкти DirectX - компоненти потокових даних, що базуються на технології COM. В деякому розумінні DMO - це спрощені фільтри DirectShow. Подібно їм, DMO беруть вхідні дані і використовують їх для процедурування витікаючих. Але API для DMO простіше відповідного API для DirectShow. В результаті DMO легко створювати, тестувати і використовувати. DMO є сенс використовувати в наступних випадках:

додатки, що базуються на DirectShow, можуть використовувати DMO через DirectShow-фільтри, викликаючи фільтр-враппер над DMO. Різниця між фільтрами і DMO прозора для додатків. Додаток не викликає прямо API DMO.

додатки для DirectSound можуть використовувати аудіо DMO-ефекти. При цьому додаток має справу не з низькорівневою API DMO, а з високорівневим DirectSound API.

додатки можуть використовувати DMO безпосередньо.

При написанні DMO можна створювати компоненти, що використовуються в широкому спектрі додатків.

DMO пропонує наступні переваги:

1. Вони набагато менше і простіше, ніж DirectShow-фільтри, оскільки підтримують меншу функціональність.

2. Вони гнучкіше за DirectShow-фільтри, оскільки вони не вимагають графа фільтрів. Ми можемо використовувати їх з DirectShow, коли необхідні сервіси, підтримувані DirectShow - такі як синхронізація, intelligent connect, автоматична підтримка пересилки даних і управління потоками. Клієнти, яким ці сервіси не необхідні, можуть використовувати DMO безпосередньо.

3. DMO завжди виконують синхронізацію обробки даних, які усувають багато потокових деталей, які потрібно передбачити при написанні власних фільтрів.

4. На відміну від традиційних ACM і VCM кодеків, DMO базуються на COM, так що вони можуть бути розширені через QueryInterface.

5. DMO підтримують більш загальну потокову модель, чим ACM і VCM кодеки. Подібно до DirectShow-фільтрів, DMO можуть підтримувати множинні входи і виходи.

З цих причин DMO тепер рекомендується як рішення для написання кодеків, декодеков і аудіоефектів. Можливі також, залежно від потреб, і інші способи використання.

Фільтри DirectShow не можуть функціонувати поза графом фільтрів DirectShow. Менеджер графа фільтрів в DirectShow знаходиться посеред між додатком і фільтрами. Фільтри DirectShow проробляють велику кількість роботи для використання потокових даних, яка включає:

1. Виділення буферів.

2. Договір про медіатипи і з'єднання з іншими фільтрами.

3. Проштовхування дані через граф фільтрів.

4. Посилка повідомлень менеджеру графа фільтрів.

5. Синхронізація численних потоків.

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

Головні поняття DMO-архітектури - потоки, медіатипи і буфери.

DMO - це об'єкти що мають m входів і n виходів. Входи і виходи називаються потоками (stream). Кожен DMO має щонайменше один потік. Потоки - це не об'єкти, вони просто посилаються на DMO по індексу. Кількість потоків фіксується під час розробки.

Всі дані звичайно використовують медіатип, який визначається як зміст даних, що інтерпретується (контент). Наприклад, 320 на 240 24-бітове RGB відео - це один тип; 44.1 кілогерц 16-бітове стерео PCM-аудио - інший тип. Медіатипи описуються з використанням структури DMO_MEDIA_TYPE. Перед тим, як клієнт зможе обробляти дані, він повинен встановити медіатип для кожного потоку на DMO.

Звичайно потоки можуть працювати з декількома медіатипами. Одні DMO підтримують ширший спектр типів, чим інші. Інтерфейси DMO визначають методи для клієнтів для підтримки типів. Наприклад, один DMO може підтримувати RGB-відео будь-якої глибини, а інший - тільки 24-бітовий. Також в DMO може бути обмеженою комбінація входів і виходів. Наприклад, якщо вхідний тип - 16-бітове відео, то витікаючий потік може вимагати якусь певну глибину. Клієнт може перерахувати всі підтримувані потоками типи і відтестувати потім певні комбінації.

У моделі DMO, прийнятій за умовчанням, клієнт розподіляє вхідні і вихідні буфера. Він заливає вхідні буфери даними і пересилає їх DMO, а DMO записує нові дані у вихідні буфера.

Опціонально DMO може підтримувати in-place обробку. В цьому випадку DMO записує вихід безпосередньо у вхідний буфер, поверх початкових даних. In-place - обробка виключає необхідність окремих буферів. З іншого боку, це міняє початкові дані, що може бути неприпустимо для деяких додатків.

Буферна модель, що задається за умовчанням (не in-place), підтримується за допомогою інтерфейсу IMediaObject. Всі DMO повинні реалізовувати цей інтерфейс. Якщо DMO підтримує in-place обробку, це надається через інтерфейс IMediaObjectInPlace. Клієнт відповідає за розподіл всіх буферів.

3.4 DSPack - мультимедійний фреймворк для Delphi. Загальний огляд

DSPack являє собою набір компонентів для написання додатків з використанням DirectShow на Boralnd Delphi. На рис. 3.2 наведена діаграма класів DSPack.

Рис. 3.2 - Діаграма класів бібліотеки DSPack

Розглянемо більш докладно компоненти, що входять до складу цього пакету.

TFilterGraph

Цей компонент - обгортка над менеджером графа фільтрів DirectShow і займає виняткове місце як в самому DirectShow, так і в DSPack. Будь-який додаток, що має справу з DirectShow, обов'язково матиме справу з менеджером графа фільтрів. Він використовується для побудови і управління графом, а також для управління синхронізацією, повідомленнями про події і інші аспекти контролю графа.

При використанні API DirectShow для створення менеджера графа фільтрів потрібно користуватися викликом функції CoCreateInstance, а як CLSID передавати або CLSID_FilterGraph, або CLSID_FilterGraphNoThread. CLSID_FilterGraph відповідає за створення менеджера графа фільтрів (МГФ) на спільно використовуваному робочому потоці, а CLSID_FilterGraphNoThread - за створення МГФ на потоці додатку.

Звичайно додатки використовують CLSID_FilterGraph. Але обидва CLSID_ використовуються для створення того ж об'єкту, але з використанням різних потокових моделей:

CLSID_FilterGraph служить для створення МГФ на робочому потоці, який спільно використовується всіма екземплярами CLSID_FilterGraph у одному процесі. Потік диспетчерезує повідомлення, які посилають фільтри і управляє життєвим циклом будь-яких вікон, створених фільтрами.

CLSID_FilterGraphNoThread служить для створення МГФ на потоці додатку. Якщо ми використовуємо CLSID, то потік, що викликає CoCreateInstance, повинен мати цикл обробки повідомлень. Інакше можуть відбуватися різного роду блокування (deadlock). Перед завершенням роботи цього потоку потрібно також звільнити (release) МГФ і всі об'єкти графа (такі, як фільтри, контакти, посилальний годинник і т.д.).

TVideoWindow

TVideoWindow - компонент, що використовується для відображення (рендеринга - rendering) проходячих через граф фільтрів даних. Він є обгортувальним класом над, в першу чергу, інтерфейсом IVideoWindow і, в другу (залежно від режиму відображення), над IVMRWindowlessControl9. Розглянемо більш детально інтерфейс IVideoWindow. Розуміння роботи з ним і завдань, їм виконуваних, надзвичайно важливо, в першу чергу, для розуміння безлічі нюансів власне виводу відео в DirectShow.

Якщо граф фільтрів містить більш одного видеорендерера, МГФ взаємодіє тільки з одним з них (вказаним окремо). Таким чином, працюючи з декількома відеовікнами, додаток повинен використовувати інтерфейс IVideoWindow на відповідному фільтрі безпосередньо. В цьому випадку потрібно пересилати віконні повідомлення кожному видеорендереру, використовуючи метод IVideoWindow:NotifyOwnerMessage.

Додатки, які встановлюють відеовікна в дочірні вікна, повинні встановлювати порожнім обробник повідомлення WM_ERASEBKGND, щоб уникнути невірного відображення змісту вікна.

Якщо видеорендерер не сполучений з іншими фільтрами, всі методи на цьому його інтерфейсі повертають код помилки VFW_E_NOT_CONNECTED. Множина властивостей видеорендерера є постійною між моментами успішного з'єднання і від'єднання. Оскільки цей інтерфейс сумісний з автоматизацією, булеві значення можуть бути OAFALSE(0) або OATRUE(-1).

Тепер звернемося до інтерфейсу IVMRWindowlessControl9. Цей інтерфейс управляє відображенням фільтру рендеринга VMR-9 (Video Mixing Renderer Filter9) відеопотоку без вікна-контейнера. Перед використанням методів цього інтерфейсу додатку ми повинні встановити VMR-9 у безвіконний (windowless) режим.

Отже, клас TVideoWindow може перебувати в двох режимах - vmNormal і vmVMR, залежно від чого (у методі NotifyFilter) створює або Video Renderer Filter, або Video Mixing Renderer Filter 9 - фільтри для відеовідображення - і привласнює створений фільтр рендеринга внутрішній змінній FBaseFilter.

Тепер ми можемо перейти до розгляду класу TVideoWindow. Він призначений для відображення відео і оголошений у файлі DSPack.pas шляхом:

TVideoWindow = class(TCustomControl, IFilter, IEvent)

Клас TCustomContol є спадкоємцем TWinControl, тому зрозуміло, що TVideoWindow дає можливість, серед іншого, працювати з ним як з вікном. Зосередимося на інтерфейсах IFilter і IEvent. Вони оголошені як:

IFilter = interface ['{887F94DA-29E9-44C6-B48E-1FBF0FB59878}']

{ Return the IBaseFilter Interface (All DirectShow filters expose this interface)}

function GetFilter: IBaseFilter;

{Return the filter name (generally the component name).}

function GetName: string;

{Called by the @link(TFilterGraph) component, this method receive notifications

on what the TFilterGraph is doing. if Operation = foGraphEvent then Param is the

event code received by the FilterGraph.}

procedure NotifyFilter(operation: TFilterOperation; Param: integer = 0);

end;

і

IEvent = interface ['{6C0DCD7B-1A98-44EF-A6D5-E23CBC24E620}']

{FilterGraph events.}

procedure GraphEvent(Event Param1, Param2: integer);

{Control Events.}

procedure ControlEvent(Event: TControlEvent; Param: integer = 0);

end;

Ці функції повинні бути реалізовані класом TVideoWindow. Окрім них, найцікавішими є функції SetFullScreen, VMRGetBitmap. Окрім цього, звернемо увагу на два private-члена - FAllocatorClass типу TAbstractAllocatorClass і FCurrentAllocator типу TAbstractAllocator. Їх оголошення:

TAbstractAllocator = class(TInterfacedObject)

constructor Create(out hr: HResult; wnd: THandle; d3d: IDirect3D9 = nil;

d3dd: IDirect3DDevice9 = nil); virtual; abstract;

end;

TAbstractAllocatorClass = classof TAbstractAllocator;

Розглянемо також деякі додаткові інтерфейси, важливі для розуміння процесу відображення. Серед них - IVMRSurfaceAllocator, IVMRSurfaceAllocatorNotify, IVMRImagePresenter.

Інтерфейс IVMRSurfaceAllocator реалізується аллокатором-презентером (allocator-presenter), заданим за умовчанням для фільтру VMR-7. Він повинен реалізовуватися будь-яким plug-in allocator-presenter, який додаток надає фільтру VMR-7. VMR-7 використовує методи на цьому інтерфейсі для виділення, підготовки і звільнення поверхонь DirectDraw. Додатки не використовують цей інтерфейс. Для VMR-9 використовується IVMRSurfaceAllocator9. Додатково до методів IUnknown, інтерфейс IVMRSurfaceAllocator надає такі методи:

Таблиця 3.1 - Методи інтерфейсу IVMRSurfaceAllocator

Метод

Опис

AdviseNotify

Викликається VMR для надання презентера з покажчиком інтерфейсу

AllocateSurface

Виділяється поверхня DirectDraw

FreeSurface

Звільняється поверхня DirectDraw

PrepareSurface

Готується поверхня DirectDraw для декодування в неї наступного відеофрейму

А інтерфейс IVMRSurfaceAllocator9 наступні:

Таблиця 3.2 - Методи інтерфейсу IVMRSurfaceAllocator9

Метод

Опис

AdviseNotify

Викликається VMR для надання презентера з покажчиком інтерфейсу

GetSurface

Повертає DirectDraw-поверхню

InitializeDevice

Ініціалізує пристрій Direct3D

TerminateDevice

Звільняється пристрій Direct3D

Інтерфейс IVMRImagePresenter реалізований таким, що задається за умовчанням аллокатором-презентером для VMR-7. Він повинен також бути реалізований будь-яким плагином аллокатора-презентера, додатком, що надається для VMR-7. VMR-7 використовує методи на цьому інтерфейсі для інформування аллокатора-презентера, що буде представлений відеофрейм, що містить підтримувану поверхню DirectDraw. Відповідним фільтром для VMR-9 є інтерфейс IVMRImagePresenter9.

Додатково до методів, успадкованих від IUnknown, інтерфейс IVMRImagePresenter надає наступні методи:

Таблиця 3.3 - Методи інтерфейсу IVMRImagePresenter

Метод

Опис

PresentImage

Викликається в той момент, коли буде відеокадр буде представлений

StartPresenting

Викликається тільки перед початком програвання відео

StopPresenting

Викликається тільки після закінчення програвання відео

Інтерфейс IVMRSurfaceAllocatorNotify реалізований фільтром VMR-7. Додатки використовують цей інтерфейс для установки власного аллокатора-презентера і аллокатор-презентер використовує цей інтерфейс для інформування VMR-7 про зміни системного оточення, що впливає на поверхні DirectDraw.

Для того, щоб додаток одержав цей інтерфейс, VMR повинен бути запущений в renderless режимі. Відповідним інтерфейсом для VMR-9 є інтерфейс IVMRSurfaceAllocatorNotify9.

Додатково до інтерфейсів, успадкованих від IUnknown, цей интефейс надає наступні методи:

Таблиця 3.4 - Методи інтерфейсу IVMRSurfaceAllocatorNotify

Метод

Опис

AdviseSurfaceAllocator

Викликається додатком для інформування VMR про використання призначеного для користувача аллокатора-презентера

ChangeDDrawDevice

Повідомляє VMR, що що програє пристрій DirectDraw було змінене

NotifyEvent

Викликається аллокатором-презентером для інформування VMR про будь-які значущі події DirectShow на всьому протязі процесу виділення або уявлення

RestoreDDrawSurface

Повідомляє VMR про те, що була виявлена втрата пристрою DirectDraw

SetBorderColor

Указується для VMR, який колір використовується в області екранного прямокутника, який не буде використаний для відео, наприклад, коли відео виводиться як „letterbox”

SetDDrawDevice

Встановлює початковий пристрій і монітор DirectDraw для використання для відеопрогравання.

Розглянемо більш докладно ще деякі методи компонету.

SetAllocator

Цей метод має дуже просту реалізацію:

procedure TVideoWindow.SetAllocator(Allocator: TAbstractAllocatorClass; UserID:

Cardinal);

begin

FAllocatorClass := Allocator;

FRenderLessUserID := UserID;

end;

Він використовується, зокрема, для установки класу аллокатора в методах класу TBCTransInPlaceFilter, TBCTransInPlaceOutputPin.

NotifyFilter

Оголошення цього методу -

procedure TVideoWindow.NotifyFilter(operation: TFilterOperation; Param: integer);

Передаваний параметр operation має тип, що перераховує:

TFilterOperation = (

foAdding, // Перед додаванням фільтру в граф

foAdded, // Після додавання фільтру в граф

foRemoving, // Перед видаленням фільтру з графа

foRemoved, // Після видалення фільтру з графа

foRefresh // Повідомлення дизайнера для оновлення фільтру

);

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

SetFullScreen

Встановлює повноекранний режим (шляхом простої установки розмірів вікна висновку в повний екран) або відмовляється від використання повноекранного режиму.

GraphEvent

Використовується для обробки двох типів подій - пов'язаних із зміною палітри (EC_PALETTE_CHANGED) і установкою типу механізму рендеринга (EC_VMR_RENDERDEVICE_SET). У обох випадках суть зводиться до виклику методів інтерфейсу IVideoWindow - put_Caption (для установки заголовка відеовікна) і put_MessageDrain (для вказівки вікна для пересилки повідомлень від мишки і клавіатури від відеовікна).

ControlEvent

Використовується для обробки подій ceDVDRendered (фільтр був видалений) і cePlay, що управляють (було почате програвання).

VMRGetBitmap

Використовується для запису в потік поточного зображення.

Клас TDSVideoWindowEx2

Є альтернативою для звичайного способу відображення відео (за допомогою TVideoWindow), який дає простий спосіб для використання оверлейної графіки в додатках.

Найбільш важливими private-членами цього класу, необхідними для досягнення декларованої мети є:

FVideoWindow - що представляє інтерфейс IVideoWindow;

FFilterGraph - типу TFilterGraph;

FBaseFilter - інтерфейс IBaseFilter;

FOverlayMixer - интерефйс IBaseFilter;

FVideoRenderer - інтерфейс IBaseFilter;

FDDXM - інтерфейс IDDrawExclModeVideo

Далі розглянемо найбільш вживані з цих методів.

Метод

procedure NotifyFilter(operation: TFilterOperation; Param: integer = 0)

виконує завдання, схожі із завданнями однойменного методу класу TVideoWindow, але, природно, з абсолютно іншою реалізацією.

Те ж саме відноситься і до наступного методу -

procedure GraphEvent(Event Param1, Param2: integer),

але обробляється також подія зміни часу синхронізації.

Метод

procedure ControlEvent(Event: TControlEvent; Param: integer = 0),

як і раніше, обробляє події ceDVDRendered, cePlay, але додатково до них ще і cePause ceStop,ceFileRendered. І обробка стає більш складною, оскільки в даному випадку мі маємо більшу кількість компонентів.

У методі

procedure SetFilterGraph(AFilterGraph: TFilterGraph)


Подобные документы

  • Розподілена обробка та розподілені бази даних, їх внутрішня структура та принцип функціонування. Порядок і технологія рішення задач оперативного контролю в умовах роботи та на базі сучасних автоматизованих інформаційних систем, оцінка ефективності.

    контрольная работа [746,0 K], добавлен 18.02.2015

  • Розробка навчального курсу в системі дистанційного навчання Moodle для спеціальності "Гнучкі комп'ютеризовані системи та робототехніка". Складання логіко-функціональної схеми роботи програмного забезпечення: структура, функціональні модулі, інтерфейс.

    дипломная работа [3,2 M], добавлен 22.10.2012

  • Технології організації безпечного доступу на об’єкт. Принцип роботи мережевої системи контролю доступу. Технологія сканування відбитків пальців. Опис базових параметрів біометричного обладнання. Елементи ідентифікації в сучасних системах доступу.

    дипломная работа [4,9 M], добавлен 27.01.2012

  • Основні функціональні можливості програми для забезпечення комп'ютерної системи дистанційного управління приладами. Функція пульта дистанційного керування мартфонів. Реалізація пультів дистанційного управління на основі апаратно-програмного комплексу.

    дипломная работа [1,7 M], добавлен 09.07.2015

  • Дослідження теоретичних аспектів проектування автоматизованих систем тестування знань. Розробка програми, яка призначена для забезпечення автоматизації процесу формування тестів та всього процесу контролю знань у дистанційній навчальній системі.

    дипломная работа [2,1 M], добавлен 26.10.2012

  • Поняття й головні способи персоніфікації користувача. Основи біометричної ідентифікації. Технологія зняття відбитків пальців, типи капілярних візерунків. Дослідження існуючих засобів контролю доступу на основі біометричних даних, їх недоліки та переваги.

    курсовая работа [4,7 M], добавлен 30.01.2012

  • Розробка елементів інформаційної системи для контролю експлуатації автотранспорту. Розробка програмного забезпечення в середовищі програмування Delphi з використанням пакету компонентів DevelopmentExpress та сервера баз даних під керуванням FireBird 2.1.

    дипломная работа [4,3 M], добавлен 24.10.2012

  • Підстава для розробки, призначення та галузь застосування. Огляд і аналіз інформаційних джерел. Розробка структурної схеми системи. Приклади систем реєстрації сердечного ритму. Відмінні особливості програми "Міокард-Холтер". Алгоритм роботи системи.

    дипломная работа [1,1 M], добавлен 01.07.2013

  • Особливості та переваги проведення тестувань в мережі інтернет з метою дистанційного навчання чи оцінювання знань. Створення web-сайту з розширеними можливостями та системи дистанційного тестування. Реляційна схема бази даних конструктора тестів.

    дипломная работа [2,1 M], добавлен 25.11.2012

  • Загальні відомості про дистанційне навчання. Класифікація та характеристика соціальних сервісів. Історія соціальних мереж, технологія та статистика. Удосконалення дистанційного навчання у веб-центрі. Полегшення роботи при написанні звітів, відеоуроки.

    курсовая работа [2,1 M], добавлен 15.04.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.