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

 

ВСТУП


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

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

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

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

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

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

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

Програмне забезпечення реалізовано за допомогою бібліотеки компонентів DSPack, що призначені для захоплення та обробки відео-потоків. Бібліотека компонентів DSPack базується на використанні технології DirectShow.- це технологія, що дозволяє Windows-додаткам управляти широким спектром пристроїв аудіо/відео введення, що включає DV-камери, web-камери, DVD-пристрої, карти TV-тюнерів. Вона підтримує також різні формати, від WAV і AVI до Windows Media. 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 Гбайт;

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


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 і у представляють лінійні величини в двох взаємно перпендикулярних напрямах і вимірювані в одиницях довжини.

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

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

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

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

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

Сканування зображення здійснюється послідовним аналізом інтенсивності світлового випромінювання, що потрапляє на квадрат розмірами 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; Dxi=Dyi=D - половина розміру пікселя в мм.

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

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

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

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

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

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

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

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

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

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

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

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

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

. Синхронізація численних потоків.же нічого цього не робить. Навпаки, за виконання завдань такого роду відповідають клієнти, що використовують 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


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

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

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

Звичайно додатки використовують CLSID_FilterGraph. Але обидва CLSID_ використовуються для створення того ж об'єкту, але з використанням різних потокових моделей:_FilterGraph служить для створення МГФ на робочому потоці, який спільно використовується всіма екземплярами CLSID_FilterGraph у одному процесі. Потік диспетчерезує повідомлення, які посилають фільтри і управляє життєвим циклом будь-яких вікон, створених фільтрами._FilterGraphNoThread служить для створення МГФ на потоці додатку. Якщо ми використовуємо CLSID, то потік, що викликає CoCreateInstance, повинен мати цикл обробки повідомлень. Інакше можуть відбуватися різного роду блокування (deadlock). Перед завершенням роботи цього потоку потрібно також звільнити (release) МГФ і всі об'єкти графа (такі, як фільтри, контакти, посилальний годинник і т.д.). - компонент, що використовується для відображення (рендеринга - 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 шляхом:= class(TCustomControl, IFilter, IEvent)

Клас TCustomContol є спадкоємцем TWinControl, тому зрозуміло, що TVideoWindow дає можливість, серед іншого, працювати з ним як з вікном. Зосередимося на інтерфейсах IFilter і IEvent. Вони оголошені як:= interface ['{887F94DA-29E9-44C6-B48E-1FBF0FB59878}']

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

{Return the filter name (generally the component name).}GetName: string;

{Called by the @link(TFilterGraph) component, this method receive notificationswhat the TFilterGraph is doing. if Operation = foGraphEvent then Param is thecode received by the FilterGraph.}NotifyFilter(operation: TFilterOperation; Param: integer = 0);;

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

{FilterGraph events.}GraphEvent(Event Param1, Param2: integer);

{Control Events.}ControlEvent(Event: TControlEvent; Param: integer = 0);;

Ці функції повинні бути реалізовані класом TVideoWindow. Окрім них, найцікавішими є функції SetFullScreen, VMRGetBitmap. Окрім цього, звернемо увагу на два private-члена - FAllocatorClass типу TAbstractAllocatorClass і FCurrentAllocator типу TAbstractAllocator. Їх оголошення:= class(TInterfacedObject)Create(out hr: HResult; wnd: THandle; d3d: IDirect3D9 = nil;dd: IDirect3DDevice9 = nil); virtual; abstract;;= 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Виділяється поверхня DirectDrawFreeSurfaceЗвільняється поверхня DirectDrawPrepareSurfaceГотується поверхня DirectDraw для декодування в неї наступного відеофрейму

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


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

МетодОписAdviseNotifyВикликається VMR для надання презентера з покажчиком інтерфейсуGetSurfaceПовертає DirectDraw-поверхнюInitializeDeviceІніціалізує пристрій Direct3DTerminateDeviceЗвільняється пристрій 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, який колір використовується в області екранного прямокутника, який не буде використаний для відео, наприклад, коли відео виводиться як „letterboxSetDDrawDeviceВстановлює початковий пристрій і монітор DirectDraw для використання для відеопрогравання.

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

Цей метод має дуже просту реалізацію:TVideoWindow.SetAllocator(Allocator: TAbstractAllocatorClass; UserID:);:= Allocator;:= UserID;;

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

Оголошення цього методу -TVideoWindow.NotifyFilter(operation: TFilterOperation; Param: integer);

Передаваний параметр operation має тип, що перераховує:= (, // Перед додаванням фільтру в граф, // Після додавання фільтру в граф, // Перед видаленням фільтру з графа, // Після видалення фільтру з графа// Повідомлення дизайнера для оновлення фільтру

);

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

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

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

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

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

Клас TDSVideoWindowEx2

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

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

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

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

МетодNotifyFilter(operation: TFilterOperation; Param: integer = 0)

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

Те ж саме відноситься і до наступного методу -GraphEvent(Event Param1, Param2: integer),

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

МетодControlEvent(Event: TControlEvent; Param: integer = 0),

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

У методіSetFilterGraph(AFilterGraph: TFilterGraph)

проводиться установка графа фільтрів.

Дуже важливим методом єUpdateGraph : HResult;

який служить для оновлення графа фільтрів і викликається при різних змінах станів класу. Він будує ту частину графа фільтрів, яка відповідає за відображення відео-файлу. Якщо використовується OverlayMixer, то встановлюється ексклюзивний повноекранний режим за допомогою інтерфейсу IDDrawExclModeVideo. В процесі цього з'єднання проводиться перевірка, чи не використовується фільтр декодера Line21, оскільки Overlay Mixer не може бути сполучений Line21 Decoder2. А потім проводиться з'єднання VMR'а з Overlay Mixer'ом (знов створеним, у разі потреби).

3.5 Захоплення, інтерфейси і пристрої


Захоплення відео

Термін "захоплення відео" позначає можливість системи записувати відео дані, одержані від різних джерел, використовуючи API підсистеми DirectShow. Під пристроями захоплення зображення розуміються не тільки камери (web-камери, IP-камери і т.п.), але і TV-тюнери, різні відео-реєстратори і т.п. Захоплюване відео зображення може бути записано на диск або переглянуто в режимі реального часу.

Велика кількість нових пристроїв захоплення зображення використовують Модель Драйверів Windows (Windows Driver Model - WDM). Дана архітектура включає набір апаратно-незалежних драйверів, званих драйверами класу, і набір апаратно-залежних міні-драйверів, які поставляє виробник устаткування. Міні-драйвера реалізують в собі всю специфічну для пристрою функціональність.

Граф фільтрів DirectShow представляє будь-який пристрій захоплення WDM як Фільтр Захоплення WDM (WDM Capture Filter). Даний фільтр настроюється залежно від характеристик драйвера.

Деякі старі пристрої захоплення відео все ще використовують драйвера Відео для Windows (Video for Windows - VFW). Не дивлячись на те, що дані драйвера вже застаріли, в підсистемі DirectShow є спеціальний фільтр (VFW Capture), що забезпечує роботу з даним драйвером.

Захоплення аудіо

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

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

запис звуку для дублювання відео потоку;

переклад аналогового аудіо потоку в цифровий формат;

передача звуку по мережі.

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

Цей фільтр використовує API Microsoft® PlatformSDKwaveInXXX для управління всіма пристроями, чиї драйвера підтримують це API. Кожна звукова плата представлена окремими екземплярами даного фільтру.

Фільтр захоплення звуку представляє кожен вхід на звуковій платі, будь то мікрофон або MIDI-вхід, як вхідний контакт (InputPin). Програма може використовувати даний контакт для дозволу або заборони введення, для настройки частот, положення на панорамі і т.д. Можливості управління залежать від драйвера. Для повного використання всіх можливостей звукової плати може навіть знадобитися документація виготівника карти.

Інтерфейси

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

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

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

Схема взаємодії графів захоплення і відтворення в програмі

Інтерфейс ICaptureGraphBuilder2содержит наступні методи:- установка графа фільтрів для використання;- отримання використовуваного зараз графа;- створюємо файл для запису даних з графа;- пошук інтерфейсу в графі, починаючи з вказаного фільтру;- побудова графа захоплення;- установка часу старту і зупинки для різних потоків даних;- попередня установка потрібного розміру файлу для запису даних;- копіювання перевірених мультимедіа-даних з файлу захоплення;пошук певного контакту у фільтрі, або перевірка відповідності контакту вказаному критерію.

Для роботи нам буде досить всього чотирьох методів даного інтерфейсу.

Установка графа фільтрів для використання:SetFiltergraph(pfg: IGraphBuilder): HResult; stdcall;- покажчик на об'єкт графа з интерфейсомIGraphBuilder.

Побудова графа захоплення:RenderStream(: PGUID;: IUnknown;: IBaseFilter): HResult; stdcall;- покажчик на унікальний ідентифікатор, що визначає категорію контакту. Може приймати нульове значення для використання контакту незалежно від категорії. Ми використовуватимемо наступні значення:_CATEGORY_CAPTURE - захоплення даних;_CATEGORY_PREVIEW - попередній перегляд;покажчик на унікальний ідентифікатор, задаючий тип вихідних даних, або нульове значення для використання будь-якого контакту, незалежно від категорії.

Ідентифікатор формату даних може приймати одне з наступних значень:_AnalogAudio- аналогове аудіо;_AnalogVideo- аналогове відео;_Audio- аудіо;_AUXLine21Data- використовується для закритих заголовків;_File - файл (застарілий);_Interleaved- що чергує аудіо і відео. Використовується для цифрового відео (DigitalVideo- DV);_LMRT- застарілий формат (не використовується);_Midi- формат MIDI;_MPEG2_PES - пакети MPEG-2 PES;_MPEG2_SECTION - данні секції MPEG-2;_ScriptCommand- дані у вигляді сценарію. Використовується в закритих заголовках;_Stream - потік даних без часових міток;_Text- текст;_Timecode- дані розбиті по кадрах. У підсистемі DirectShow немає фільтрів, що підтримують даний формат;_URL_STREAM- застарілий формат (не використовується);_Video - відео;покажчик на стартовий фільтр в ланцюзі графа або на вихідний контакт;- фільтр стиснення. Може приймати нульове значення;фільтр-приймач, такий як фільтр відтворення або мультиплексор. Може приймати нульове значення.

Створення файлу для запису даних з графа:SetOutputFileNamepType: TGUID;: PWCHAR;ppf: IBaseFilter;ppSink: IFileSinkFilter): HResult; stdcall;покажчик на унікальний ідентифікатор, що визначає підтип вихідні мультимедіа даних або ідентифікатор класу мультиплексора або фільтру запису даних у файл. Якщо ми хочемо задати підтип мультимедіа даних, то повинні використовувати одне з наступних значень:_Avi- дані у форматі AVI;_Asf - дані у форматі ASF;ім'я файлу;- адреса покажчика, куди буде переданий інтерфейс мультиплексора;адреса покажчика, куди буде переданий інтерфейс запису даних у файл IFileSinkFilter. Може приймати нульове значення.

Пошук інтерфейсу в графі, починаючи з вказаного фільтру:FindInterface(: PGUID;: IBaseFilter;riid: TGUID;ppint): HResult; stdcall;- покажчик на унікальний ідентифікатор, що визначає критерій пошуку;- покажчик на унікальний ідентифікатор, задаючий тип вихідних даних;- фільтр, з якого починається пошук;- ідентифікатор шуканого інтерфейсу;t- адреса змінної, в яку і буде записаний шуканий інтерфейс.

Ще один інтерфейс, який нами буде використаний - це інтерфейс управління мультиплексором IConfigAviMux. Його методи:установка основного потоку для синхронізації з іншими потоками у файлі;отримання основного потоку;установка індексу формату AVI-файлу;отримання індексу формату AVI-файлу.

З методів даного інтерфейсу нам буде потрібно всього один - SetMasterStream. При одночасному захопленні відео даних і аудіо потоку ми виставлятимемо як основний потік звукової:SetMasterStream(iStream: Longint): HResult; stdcall;- індекс потоку або -1 за відсутності основного потоку. Потоки нумеруються з нуля.

Для управління властивостями фільтрів і контактів нами використовуватимуться наступні інтерфейси:інтерфейс управління форматом даних вихідного потоку;інтерфейс управління сторінками властивостей.

Інтерфейс IAMStreamConfig виступає як допоміжний для отримання об'єкту з інтерфейсом ISpecifyPropertyPages. Інтерфейс управління сторінками властивостей ISpecifyPropertyPages має всього один метод - метод отримання сторінок властивостей:GetPages(out pages: TCAGUID): HResult; stdcall;- покажчик на елемент структури TCAGUID, яку заповнює оператор. Для заповнення поля pElems даної структури буде викликаний метод CoTaskMemAllocи, в кінці роботи, пам'ять повинна бути звільнена викликом CoTaskMemFree.

Перелік пристроїв певного класу

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

Розглянемо докладніше перераховані інтерфейси.

Насамперед ми повинні створити об'єкт з інтерфейсом ICreateDevEnumдля переліку вказаної категорії пристроїв, що містить всього один метод:CreateClassEnumerator(clsidDeviceClass: TGUID;ppEnumMoniker: IEnumMoniker;: DWORD): HResult; stdcall;ідентифікатор класу категорії пристроїв;адреса змінної, яка одержить інтерфейс переліку монікерів IEnumMoniker;бітова комбінація прапорів, задаючих режим роботи даного методу:_DEVMON_CMGR_DEVICE - перелік аудіо і відео кодеків, що використовують менеджер стиснення аудіо (AudioCompressionManager - ACM) або менеджер стиснення відео (VideoCompressionManager - VCM);_DEVMON_DMO - перелік об'єктів(DirectX Media Objects);_DEVMON_FILTER - перелік власних фільтрів DirectShow;_DEVMON_PNP_DEVICE - перелік пристроїв Plug-and-Play.

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

Потім, за допомогою інтерфейсу IEnumMonikerмы організуємо цикл перебору всіх монікерів. Потрібен нам для цього метод IEnumMoniker.Next:Next(: Longint;elt;: PLongint): HResult; stdcall;число повернених монікерів;змінна, в яку буде занесене посилання на моникер;після закінчення роботи методу дана змінна міститиме реальну кількість монікерів.

У інтерфейсі IMoniker, що дозволяє дістати доступ до об'єкту або сховища властивостей, нам цікаві всього два методи. Це метод отримання інтерфейсу сховища:BindToStorage(bc: IBindCtx;mkToLeft: IMoniker;iid: TIID;vObj): HResult; stdcall;- покажчик на інтерфейс IBindCtx. У нашому випадку NIL;- якщо використовується складений монікер, то значенням буде монікер, що стоїть зліва від поточного монікеру. У нашому випадку NIL;унікальний ідентифікатор запрошуваного інтерфейсу, покажчик на який буде занесений в vObj;адреса покажчика, в який буде занесений шуканий інтерфейс.

Метод отримання потрібного нам інтерфейсу об'єкту, що ідентифікується монікером:BindToObject(

const bc: IBindCtx;mkToLeft: IMoniker;iidResult: TIID;vResult): HResult; stdcall;- покажчик на інтерфейс IBindCtx. У нашому випадку NIL;- якщо використовується складений монікер, то значенням буде моникер, що стоїть зліва від поточного монікеру. У нашому випадку NIL; посилання на ідентифікатор інтерфейсу, який ми бажаємо одержати для зв'язку з об'єктом, монікером, що ідентифікується;адреса покажчика, в який буде занесений шуканий інтерфейс.


3.6 Сторінки властивостей та алгоритми роботи з пристроями


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

Доступ до сторінок властивостей фільтрів можна одержати, використовуючи спеціальний інтерфейс ISpecifyPropertyPages, який був описаний вище. А відображається сторінка властивостей у вигляді модального діалогу методом OleCreatePropertyFrame з бібліотеки COM:OleCreatePropertyFrame(: HWnd;,y: Integer;: POleStr;: Integer;: Pointer;: Integer;: Pointer;: TLCID;

dwReserved: Longint;: Pointer): HResult; stdcall;дескриптор батьківського вікна для сторінки властивостей;- зарезервовано;- зарезервовано;- рядок, який буде використаний в заголовку сторінки властивостей;- кількість покажчиків на об'єкти, які будуть передані в параметрі pObjects;масив покажчиків IUnknown на об'єкти, для яких повинна бути викликана сторінка властивостей;- кількість сторінок властивостей, визначених в pPageCLSIDs;- масив розміру cPages, що містить ідентифікатори класу (CLSID) для кожної сторінки властивостей;- ідентифікатор поточних локальних установок;- зарезервовано, повинне бути нульовим;- зарезервовано, повинне бути нульовим.

Не кожен фільтр має сторінку властивостей. Перевірити це досить просто - потрібно лише спробувати одержати інтерфейс ISpecifyPropertyPagesдля фільтру::= Filter.QueryInterface(ISpecifyPropertyPages, PropertyPages);

Також для деяких фільтрів ми можемо набудувати формати вихідних потоків даних, одержавши інтерфейс IAMStreamConfig, про який так само було сказано вище.

Тепер прийшов час розповісти про послідовність дій при роботі з пристроями захоплення зображення і звуку. Було розказано про інтерфейси, про стиснення потоків даних і настройки фільтрів окремо. Тепер же давайте складемо зразковий план наших дій:

1. Створюємо об'єкт для побудови графа фільтрів::= CoCreateInstance(CLSID_FilterGraph, NIL_INPROC_SERVER, IID_IGraphBuilder, FGraphBuilder);

. Створюємо об'єкт для побудови графа захоплення::= CoCreateInstance(CLSID_CaptureGraphBuilder2, NIL_INPROC_SERVER, IID_ICaptureGraphBuilder2,);

. Задаємо граф фільтрів для використання в побудові графа захоплення::= FCaptureGraphBuilder.SetFiltergraph(FGraphBuilder);

. Одержуємо фільтри захоплення і стиснення виходячи з їх імен::= EnumerateDevices(CLSID_VideoInputDeviceCategory,, NIL, TRUE);:= EnumerateDevices(CLSID_AudioInputDeviceCategory,, NIL, TRUE);:= EnumerateDevices(CLSID_VideoCompressorCategory,, NIL, TRUE);:= EnumerateDevices(CLSID_AudioCompressorCategory,, NIL, TRUE);

. Додаємо одержані фільтри в граф:

// Додаємо фільтр захоплення відео в графFVideoCaptureFilter <> NIL then.AddFilter(FVideoCaptureFilter, 'VideoCaptureFilter');;

// Додаємо фільтр захоплення звуку в граф

if FAudioCaptureFilter <> NIL then.AddFilter(FAudioCaptureFilter, 'AudioCaptureFilter');;

// Додаємо фільтр стиснення відео в графFVideoCompressFilter <> NIL then.AddFilter(FVideoCompressFilter, 'VideoCompressFilter');;

// Додаємо фільтр стиснення звуку в графFAudioCompressFilter <> NIL then.AddFilter(FAudioCompressFilter, 'AudioCompressFilter');;

. Будуємо граф захоплення залежно від прапорів захоплення і попереднього перегляду, задаємо формат вихідних даних::= FCaptureGraphBuilder.RenderStream(@PIN_CATEGORY_PREVIEW,

@MEDIATYPE_Video, FVideoCaptureFilter, NIL, NIL);:= FCaptureGraphBuilder.RenderStream(@PIN_CATEGORY_PREVIEW,

@MEDIATYPE_Audio, FAudioCaptureFilter, NIL, NIL);:= FCaptureGraphBuilder.SetOutputFileName(MEDIASUBTYPE_Avi,(FCaptureFileName), FMux, FSink);:= FCaptureGraphBuilder.RenderStream(@PIN_CATEGORY_CAPTURE,

@MEDIATYPE_Video, FVideoCaptureFilter, FVideoCompressFilter, FMux);

Result := FCaptureGraphBuilder.RenderStream(@PIN_CATEGORY_CAPTURE,

@MEDIATYPE_Audio, FAudioCaptureFilter, FAudioCompressFilter, FMux);

. Запускаємо графа захоплення::= FMediaControl.Run();

. Звільняємо виділену пам'ять.

4. ОПИС ФУНКЦІОНАЛЬНИХ МОЖЛИВОСТЕЙ ТА ПРОГРАМНОЇ РЕАЛІЗАЦІЇ


4.1 Загальна характеристика та коло задач, що вирішує проектована система


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

Для роботи системи необхідно: персональний компютер на базі Intel процесору з частотою не менше 2,4 ГГц, з ОЗУ рівним 512Мб, з SVGA - відеоадаптером і монітором 17 дюймів; web-камера; USB-кабель, що зєднує ПЕОМ з web-камерою.

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

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

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

4.2 Розробка схеми інформаційних потоків та логіко-функціональної схеми роботи системи


Рис. 4.1 - Схема інформаційних потоків системи


На рис. 4.2 наведена логіко-функціональна схема роботи системи


Рис. 4.2 - Логіко-функціональна схема роботи системи

4.3 Розробка алгоритмів та опис програмної реалізації


Розглянемо фрагменти програмного коду, за допомогою якого була реалізована система. Наступна процедура призначена для формування списку пристроїв, що підключені до компютеру.AssignListToComboBox (ComboBox: TComboBox; List: String; Index: integer);.Items.Text := List;(ComboBox.Items.Count > 0) and (Index >= 0) then begin.ItemIndex := Index;;;

При створені форми, що відповідає настройці пристрою, задаємо наступні початкові параметри.TDemoForm.FormCreate(Sender: TObject);:= False; // ознака підключення по відеопотоку .Items.Text := VideoDevices; // формуємо список пристроїв, що підключені до компютера.ItemIndex := 0; // за замовченням обраний перший пункт списку.Display_AutoSize := true; // автоматичне визначення розміру екрана відображення.AutoRefreshPreview := true; // попередній перегляд почнеться автоматично при зміні параметрів пристрою

// настройка параметрів прозорості відеокадру _MustGetRGBPixel := false;_LastRGBPixelValueAtMousePosition := -1;_MouseXVideoPosition := 0;

FPickupTransparentColor_MouseYVideoPosition := 0;

// автоматичне визначення розміру := Width;:= Height;;

Процедура, що відбувається при натисненні кнопки „Старт.TDemoForm.BitBtn1Click(Sender: TObject);.Visible := chkVisible.Checked; // вмикаємо перемикач, що відповідає за відображення екрану.OnVideoDeviceSelected := VideoDeviceSelected; // викликаємо процедуру вибору пристрою.OnFrameCaptureCompleted := OnFrameCaptureCompleted; // викликаємо процедуру захвату зображення.OnResizeVideo := OnResizeVideo; // викликаємо процедуру зміни розміру зображення.VideoDevice := cmbVideoDevices.ItemIndex;

// задаємо положення екрану на формі.Left := 50;.Top := 120;.Parent := Self;.StartPreview; // початок відображення:= True; // ознака того, що відображення почалося;;

Процедура, що відбувається при виборі пристрою - джерела зображення.TDemoForm.VideoDeviceSelected (Sender: TObject);

calibr.imgCapturedFrame.Picture.Assign (nil); // передаємо захоплене зображення в компонент типу Image на формі контролю параметрів.Clear; // очищуємо список доступних для обраного пристрою розмірів зображень.Items.Text := VideoGrabber.VideoSizes; // формуємо список розмірів .ItemIndex := VideoGrabber.VideoSize;;

Процедура, що відбувається при захоплені зображення.TDemoForm.OnFrameCaptureCompleted(Sender: TObject;: TBitmap; BitmapWidth, BitmapHeight: Integer;: Cardinal; FrameTime: Int64; DestType: TFrameCaptureDest;: String; Success: Boolean; FrameId: Integer);: Boolean;.imgCapturedFrame.AutoSize := true; // автоматична зміна розміру комонента, що відображає захоплене зображення:= False; not AlternateOption then begin // при безпосередньому перетворенні в растрове зображення засобами ЦПУ calibr.imgCapturedFrame.Picture.Bitmap.Handle := FrameBitmap.Handle;.ReleaseHandle;begin // створення копії відеокадру через буфер обміну.imgCapturedFrame.Picture.Assign (FrameBitmap);;;

Процедура вибору пристрою із сформованого списку.TDemoForm.cmbVideoDevicesChange(Sender: TObject);FullyCreated then begin.VideoDevice :=cmbVideoDevices.ItemIndex;;;

Процедура вибору зі списку розміру зображення.TDemoForm.cmbVideoSizesChange(Sender: TObject);FullyCreated then begin.VideoSize :=cmbVideoSizes.ItemIndex;;;

Процедура, що відбувається при закритті форми.TDemoForm.FormDestroy(Sender: TObject);: TVideoGrabber;FullyCreated then begin // якщо процес захоплення відеопотоку запущений:= VideoGrabber;:= nil; FullyCreated := False;.Free; // звільняємо змінну;;

Процедура, за допомогою якої відбувається масштабування зображення.TDemoForm.tbrZoomChange(Sender: TObject);

VideoGrabber.ZoomCoeff := tbrZoom.Position;;

Зсув зображення в горизонтальному напрямку.TDemoForm.tbrZoomXChange(Sender: TObject);.ZoomXCenter := tbrZoomX.Position;;

Зсув зображення в вертикальному напрямку.TDemoForm.tbrZoomYChange(Sender: TObject);.ZoomYCenter := tbrZoomY.Position;;

Настройка параметрів пристрою відбувається за допомогою виклику стандартного діалогу операційної системи. Зовнішній вид вікна зумовлений встановленими драйверами пристроїв.TDemoForm.BitBtn3Click(Sender: TObject);.ShowDialog (dlg_VideoDevice);;

Аналогічним чином відбувається настройка параметрів відеопотоку.TDemoForm.BitBtn2Click(Sender: TObject);.ShowDialog (dlg_StreamConfig);;

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

Рис. 4.3 - Алгоритм знаходження верхньої та нижньої границі зображення


Обробка зображення відбувається при спрацьовуванні таймера, інтервал якого відповідає часовому проміжку між спостереженнямиTDemoForm.Timer1Timer(Sender: TObject);i:integer;:array[0..1200]of longint; // масив кодів кольорів пікселя в форматі RGB,g,b:integer; _g,v_g:integer; // координати верхньої та нижньої границі:boolean; // ознака того, що верхня границя не знайдена:array[0..1200] of longint; // масив кольорів пікселей зображенняFullyCreated then begin

VideoGrabber.CaptureFrameTo (fc_TBitmap, ''); // передача захопленого відеокадру в компонент Imagepusk then // якщо процес спостереження запущений:=schet+1; // лічильник спостережень:=t+Timer1.Interval; // часовий інтервал спостереження_izm[schet]:=t; // запамятовуємо часовий інтервал в масивіCalibr doi:=0 to imgCapturedFrame.Height-1 do // перебираємо в циклі пікселі зображення[i]:=ColorToRGB(imgCapturedFrame.Canvas.Pixels[imgCapturedFrame.Width div 2,i]); // заносимо код кольору в масив, перетворюючи колір в палітру RGB[i]:= GetRValue(a[i]); // виділяємо червоний каналi=0 then // якщо перший рядок

r:=x[i]; // початкове значення - колір фону ;(abs(x[i]-r)>porog) and (flag=false) then // знайдена верхня границя зображення_g:=i; // координати верхньої границі зображення:=true; // ознака того, що верхня границя знайдена:=x[i] // запамятовуємо колір зображення;(abs(x[i]-r)>porog) and (flag=true) then// знайдена нижня границя зображення

begin n_g:=i; // координати нижньої границі зображення; // вихід із циклу;;imgCapturedFrame do // виводимо лінії границі обєкту

// побудова верхньої границі.Pen.Color:=clRed; // встановлюємо колір лінії.Pen.Style:=psSolid; // стиль лінії.Pen.Width:=2; // товщина лінії.MoveTo(0,n_g);.LineTo(imgCapturedFrame.Width-1,n_g); // будуємо лінію по заданих координатах

// побудова нижньої границі.Pen.Color:=clRed;.Pen.Style:=psSolid;.Pen.Width:=2;.MoveTo(0,v_g);.LineTo(imgCapturedFrame.Width-1,v_g);;[schet]:=abs(n_g-v_g)/m; // визначення довжини в міліметрах.Lines.Add('Время t='+inttostr(t_izm[schet])+' ' +'Расстояние d='+ floattostrf(d[schet],fffixed,5,2)); // вивід спостережуваних параметрів на екран.Label5.Caption:=timetostr(time-t_pusk); // відображення таймеру процесу спостереження

// побудова графіку зміни параметрів.Chart1.BottomAxis.Automatic:=false; // відключення автоматичного формування максимальних та мінімальних значень schet<=30 then // якщо номер спостереження, менший ніж 30

// встановлюємо максимальне та мінімальне значення.Chart1.BottomAxis.Maximum:=30 ;.Chart1.BottomAxis.Minimum:=0;// інакше відбувається зсув осі Х.Chart1.BottomAxis.Maximum:=schet;.Chart1.BottomAxis.Minimum:=schet-30;;.Series1.AddXY(round(t_izm[schet]/1000),d[schet],'',clBlack);(time,hour,min,sec,msec); // побудова лінії графіку .Lines.SaveToFile(s); // збереження даних в лог-файлі;; end;;end;

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

Встановлення максимальних та мінімальних значень.TDemoForm.VideoGrabberGraphBuilt(Sender: TObject);.Min := - (VideoGrabber.VideoWidth div 2);.Max := VideoGrabber.VideoWidth div 2;.Min := - (VideoGrabber.VideoHeight div 2);.Max := VideoGrabber.VideoHeight div 2;;

Встановлення висоти, ширини та положення на екрані.TDemoForm.VideoGrabberResize(Sender: TObject);

tbrZoomX.Width:=VideoGrabber.Width;.Height:=VideoGrabber.Height;.Top:=VideoGrabber.Top+VideoGrabber.Height+15;;

Далі розглянемо процедури модулю, що відповідає формі контролю параметрів. Процедура первинного знаходження границь обєкту.TCalibr.BitBtn3Click(Sender: TObject);i:integer;,y,z:array[0..1200]of longint;,g,b:integer;_g,v_g:integer;:boolean;:array[0..1200] of longint;.Enabled:=false;:=false;.Timer1.Enabled:=false; // відключаємо таймер:=strtoint(cxTextEdit2.Text); // визначаємо поріг ( різницю між кодом кольору фона та зображення)i:=0 to imgCapturedFrame.Height-1 do // перебираємо в циклі пікселі зображення[i]:=ColorToRGB(imgCapturedFrame.Canvas.Pixels[imgCapturedFrame.Width div 2,i]); // заносимо код кольору в масив, перетворюючи колір в палітру RGB[i]:= GetRValue(a[i]); // виділяємо червоний каналi=0 then // якщо перший рядок:=x[i]; // початкове значення - колір фону ;

if (abs(x[i]-r)>porog) and (flag=false) then // знайдена верхня границя зображення_g:=i; // координати верхньої границі зображення:=true; // ознака того, що верхня границя знайдена

r:=x[i] // запамятовуємо колір зображення;(abs(x[i]-r)>porog) and (flag=true) then// знайдена нижня границя зображенняn_g:=i; // координати нижньої границі зображення; // вихід із циклу;;imgCapturedFrame do // виводимо лінії границі обєкту

// побудова верхньої границі.Pen.Color:=clRed; // встановлюємо колір лінії.Pen.Style:=psSolid; // стиль лінії.Pen.Width:=2; // товщина лінії.MoveTo(0,n_g);.LineTo(imgCapturedFrame.Width-1,n_g); // будуємо лінію по заданих координатах

// побудова нижньої границі.Pen.Color:=clRed;.Pen.Style:=psSolid;.Pen.Width:=2;.MoveTo(0,v_g);.LineTo(imgCapturedFrame.Width-1,v_g);;

d_et_pic:=abs(n_g-v_g); // визначення довжини еталону в пікселях;

Процедура знаходження коефіцієнту масштабування має наступний вигляд.TCalibr.BitBtn1Click(Sender: TObject);_et_mm:= strtoint(cxTextEdit1.Text); // довжина еталону в міліметрах:=d_et_pic/d_et_mm; // знаходження коефіцієнту.Caption:='m='+floattostrf(m,fffixed,5,2); // вивід значення на екран.Visible:=true;.Enabled:=true;.Enabled:=true;;

Процедура запуску системи контролю.TCalibr.BitBtn2Click(Sender: TObject);:=time; // ознака того, що процес запущений.Timer1.Interval:=integer(cxSpinEdit1.Value); // встановлення інтервалу таймера.Timer1.Enabled:=true; // таймер активний.Clear; .Lines.Add('Дата: '+datetostr(date)+', '+ 'Время: '+timetostr(time)) ; //вивід заголовку - дати та часу початку спостереження(time,hour,min,sec,msec); // отримаємо системний час(date,year,month,day); // отримуємо системну дату

// формування назви лог-файлу на основі дати та часу початку спостереження:=ExtractFilePath(Application.ExeName)+'log'+inttostr(year)+'_'+inttostr(month)+'_'+inttostr(day)+'_'+inttostr(hour)+'_'+inttostr(min)+'_'+inttostr(sec)+'.txt';

Label5.Visible:=true;.LeftAxis.Automatic:=false;.LeftAxis.Maximum:=d_et_mm*1.5;.LeftAxis.Minimum:=0;.Clear; // очищення графіку;

Процедура зупинки процесу спостереженняTCalibr.BitBtn4Click(Sender: TObject);.Timer1.Enabled:=false; // зупинка таймеру:=0; // кількість спостережень.Enabled:=True;:=false; // ознака того, що процес не активний;


4.4 Інтерфейс користувача системи


Після запуску системи необхідно провести настройку зображення. Для цього необхідно вибрати пункт меню Дії - Настройка зображення (рис. 4.4).


Рис. 4.4 - Вікно настройки зображення


На екрані зявиться наступне вікно (рис. 4.5).

Рис. 4.5 - Вікно настройки зображення


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


Рис. 4.6 - Вибір розміру зображення


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

Рис. 4.7 - Вікно властивостей обраного пристрою


Також є можливість налаштувати формат відеопотоку, основним параметром якого є частота кадрів (рис. 4.8).


Рис. 4.8 - Вікно завдання параметрів формату відеопотоку

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

Після того, як всі настройки зображення були проведені, вибираємо в меню пункт меню «Контроль параметрів». Тут ми визначаємо частоту зняття параметрів в мілісекундах (ри.4.9).


Рис. 4.9 - Вікно завдання параметрів формату відеопотоку


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


Рис. 4.10 - Процес калібровки

Після введення параметрів стає активною кнопка «Запуск системи контролю». У текстовому вікні відображається час в мілісекундах з початку запуску системи та значення контрольованого параметра (рис. 4.11). При цьому дані записуються в текстовий лог-файл, назва якого генерується на основі поточної дати і часу запуску системи контролю.


Рис. 4.11 - Відображення параметрів, що контролюються


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


Рис. 4.12 - Графічне відображення параметрів, що контролюються

5. ЕКОНОМІЧНЕ ОБҐРУНТУВАННЯ ДОЦІЛЬНОСТІ РОЗРОБКИ ПРОГРАМНОГО ПРОДУКТУ


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

В ході розробки програмного продукту було використане програмне забезпечення Turbo Delphi 2006 Explorer, яке є безкоштовним. Таким чином, загальна вартість системи складається з витрат на розробку програмного забезпечення та вартості устаткування.

Визначення витрат на створення програмного продукту

Оскільки середа розробки є безкоштовною, витрати на створення програмного продукту складаються з витрат по оплаті праці розробника програми і витрат по оплаті машинного часу при відладці програми:


Зспп=Ззпспп +Змвспп


де

Зспп - витрати на створення програмного продукту;

Ззпспп - витрати на оплату праці розробника програми;

Змвспп - витрати на оплату машинного часу.

Витрати на оплату праці розробника програми (Ззпспп) визначаються шляхом множення трудомісткості створення програмного продукту на середню годинну оплату програміста (з урахуванням коефіцієнта відрахувань на соціальні потреби):


Ззпспп=tTчас

Розрахунок трудомісткості створення програмного продукту.

Трудомісткість розробки програмного продукту можна визначити таким чином:


t= to+ tа+ tб+ tп+ tд+ tот,


де - витрати праці на підготовку опису завдання;а - витрати праці на розробку алгоритму рішення задачі;б - витрати праці на розробку блок-схеми алгоритму рішення задачі;п - витрати праці на складання програми по готовій блок-схемі;д - витрати праці на підготовку документації завдання;от - витрати праці на відладку програми на ЕОМ при комплексній відладці завдання.

Складові витрат можна виразити через умовне число операторів Q. У нашому випадку число операторів у відлагодженій програмі Q=1300.

Розрахунок витрат праці на підготовку опису завдань.

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


to= QB/(75…85K),


де:- коефіцієнт збільшення витрат праці унаслідок недостатнього опису завдання, уточнень і деякої недоробки, B=1,2…5;- коефіцієнт кваліфікації розробника, для тих, що працюють до 2 років K=0.8;

Коефіцієнт В приймаємо рівним 3.

Таким чином отримаємо:= 13003/(780,8) = 62.5 (люд-год).

Розрахунок витрат праці на розробку алгоритму.

Витрати праці на розробку алгоритму рішення задачі:


tа = Q/(60…75K)


tа = 1300/(700,8)=23.21 (люд-год).

Розрахунок витрат праці на розробку блок-схеми.

Витрати праці на розробку блок-схеми алгоритму рішення задачі обчислимо таким чином:


tб= Q/(60…75K)


tб = 1300/(650,8)=25(люд-год).

Розрахунок витрат праці на складання програми.

Витрати праці на складання програми по готовій блок-схемі обчислимо таким чином:


tп= Q/(60…75K)


tп = 1300/(720,8)=22.57 (люд-год).

Розрахунок витрат праці на відладку програми.

Витрати праці на відладку програми на ЕОМ при комплексній відладці завдання:


tот=1.5 tAот,


де tAот - витрати праці на відладку програми на ЕОМ при автономній відладці одного завдання;

tAот= Q/(40…50K)


tAот = 1300/(450,8)=36.11 (люд-год)

Звідси tот=1.536.11=54.17 (люд-год).

Розрахунок витрат праці на підготовку документації.

Витрати праці на підготовку документації по завданню визначаються:


tд= tдр+ tдо,


дедр - витрати праці на підготовку матеріалів в рукопису;до - витрати на редагування, друк і оформлення документації;


tдр= Q/(150…200K)


tдр = 1300/(1800,8) = 9.03 (люд-год)


tдо=0.75tдр


tдо =0.759.03=6,77 (люд-год)

Звідсид=9.03+6.77 =15.8 (люд-год).

Отже, загальну трудомісткість розробки програмного продукту можна розрахувати:


t= to+ tа+ tб+ tп+ tд+ tот,


t = 62.5+23.21+25+22.57+15.8+54.17 = 203.25 (люд-год).

Розрахунок середньої зарплати програміста.

Середня зарплата програміста в сучасних ринкових умовах може варіюватися в широкому діапазоні. Для розрахунку візьмемо середню годинну оплату праці програміста, яка складає Тчас=10 грн/година. Це означає, що вартість розробки буде становитиму 2032.5 грн.

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

Єдине соціальне нарахування становить 37,2%.

Тобто 2032.5грн37,2%=756.09 грн

Звідси витрати на оплату праці програміста складають:

Ззпспп= 2032.5+756.09 = 2788.59 грн.

Витрати на оплату машинного часу.

Витрати на оплату машинного часу при відладці програми визначаються шляхом множення фактичного часу відладки програми на ціну машино-години орендного часу:


Змвспп =СчасtЕОМ,


де

Счас - ціна машино-години, грн/год;ЕОМ - фактичний час відладки програми на ЕОМ;

Розрахунок фактичного часу відладки.

Фактичний час відладки обчислимо за формулою:

дистанційний контроль лазерний трекер

tеом = tп + tдо + tот;

еом =22.57 +6.77 +54.17 = 83.51 години

Розрахунок ціни машино-години.

Сгод = Зеом/Теом,


де

Зеом - повні витрати на експлуатацію ЕОМ на протязі року;

Теом - дійсний річний фонд часу ЕОМ, год/рік.

Розрахунок річного фонду часу роботи ПЕОМ.

Загальна кількість днів в році - 365. Число святкових і вихідних днів - 114(10 святкових і 522- вихідні).

Час простою в профілактичних роботах визначається як щотижнева профілактика по 3 години.

Разом річний фонд робочого часу ПЕОМ складає:

Теом = 8(365-114)-523=1852 год.

Розрахунок повних витрат на експлуатацію ЕОМ.

Повні витрати на експлуатацію можна визначити по формулі:


Зеом = (Ззп+ Зам+ ЗЕЛ+ Здм+ Зпр+ Зін),


де:

Ззп - річні витрати на заробітну плату обслуговуючого персоналу, грн/рік;

Зам - річні витрати на амортизацію, грн/рік;

ЗЕЛ - річні витрати на електроенергію, споживану ЕОМ, грн/рік;

Здм - річні витрати на допоміжні матеріали, грн/рік;

Зпр - витрати на поточний ремонт комп'ютера, грн/рік;

Зін - річні витрати на інші і накладні витрати, грн/рік.

Амортизаційні відрахування.

Річні амортизаційні відрахування визначаються по формулі:


Зам=СбалНам,

де: Сбал - балансова вартість компютера, грн/шт.;

Нам - норма амортизації, %;

Нам =25%.

Балансова вартість ПЕОМ включає відпускну ціну, витрати на транспортування, монтаж устаткування і його відладку:


Сбал = Срин +Зуст ;


де:

Срин - ринкова вартість компютеру, грн/шт.,

Зуст - витрати на доставку і установку комп'ютера, грн/шт;

Комп'ютер, на якому велася робота, був придбаний за ціною Срин =5000 грн, витрати на установку і наладку склали приблизно 10% від вартості комп'ютера.


Зуст = 10% Срин


Зуст =0.15000=500 грн.

Звідси, Сбал = 5000 +500 =5500 грн./шт.,

а Зам=55000.25= 1375 грн/год.

Розрахунок витрат на електроенергію.

Вартість електроенергії, споживаної за рік, визначається по формулі:


Зел = Реом Теом Сел А,


де:

Реом - сумарна потужність ЕОМ,

Теом - дійсний річний фонд часу ЕОМ, год/рік;

Сел - вартість 1кВтгод електроенергії;

А - коефіцієнт інтенсивного використання потужності машини.

Згідно технічному паспорту ЕОМ Реом =0.22 кВт, вартість 1кВтгод електроенергії для споживачів Сел =0.2436 грн., інтенсивність використання машини А=0.98.

Тоді розрахункове значення витрат на електроенергію:

Зел = 0.22 1852 0.2436 0.30 = 29.78 грн.

Розрахунок витрат на поточний ремонт.

Витрати на поточний і профілактичний ремонт приймаються рівними 5% від вартості ЕОМ:


Зтр = 0.05 Сбал


Зтр = 0.05 5500 = 275 грн.

Розрахунок витрат на допоміжні матеріали.

Витрати на матеріали, необхідні для забезпечення нормальної роботи ПЕОМ, складають близько 1 % від вартості ЕОМ:

Звм =0.01 5500 =55 грн.

Інші витрати по експлуатації ПЕОМ.

Інші непрямі витрати, пов'язані з експлуатацією ПЕОМ, складаються з вартості послуг сторонніх організацій і складають 5% від вартості ЕОМ:

Зпр = 0.05 5500 =275 грн.

Річні витрати на заробітну плату обслуговуючого персоналу.

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


Ззп = Зоснзп +Здопзп +Зотчзп.


Основна заробітна плата визначається, виходячи із загальної чисельності тих, що працюють в штаті:


Зоснзп =12 ?Зіокл,

де:

Зіокл - тарифна ставка і-го працівника в місяць, грн;

- кількість місяців.

У штат обслуговуючого персоналу повинні входити інженер-електронщик з місячним окладом 1800 грн. і електрослюсар з окладом 1500 грн. Тоді, враховуючи, що даний персонал обслуговує 20 машин, маємо витрати на основну заробітну плату обслуговуючого персоналу, які складуть:

Зоснзп = 12(1800+1500)/20=1980 грн.

Додаткова заробітна плата складає 60 % від основної заробітної плати:

Здопзп = 0.6 1980 = 1188 грн.

Відрахування на соціальні потреби складають 37.2% від суми додатковою і основною заробітних плат:

Зотчзп = 0,372(1980+1188) = 1178.49 грн.

Тоді річні витрати на заробітну плату обслуговуючого персоналу складуть:

Ззп = 1980 +1188 +1178.49 = 4346.49 грн.

Повні витрати на експлуатацію ЕОМ в перебігу року складуть:

Зеом = 4346.49 + 1375+ 29.78 + 55 + 275+ 275= 6081.27 грн.

Тоді ціна машино-години часу, що орендується, складе

Сгод = 6081,27 /1852 = 3.28 грн.

А витрати на оплату машинного часу складуть:


Змвспп =Сгодtеом


Змвспп = 3.28 83.51= 273.91 грн.

Розрахунок вартості устаткування

Для роботи системи необхідно: персональний компютер на базі Intel процесору з частотою не менше 2,4 ГГц, з ОЗУ рівним 512Мб, з SVGA - відеоадаптером і монітором 17 дюймів; web-камера; USB-кабель, що зєднує ПЕОМ з web-камерою.

Таблиця 5.1 - Вартість устаткування

№п/пНайменуванняМаркаК-тьЦіна, грн.Сума, грн.1ЕОМ (зі встановленою операційною системою Windows XP)13700,153700,152Джерело безперебійного живленняAPC Back-Bk500 EI1343,00343,003WEB камера A4 PK-835- MJ1120,00120,004Кабель USB Alan AL-AM/Bm4-10 (AM/miniB 4pin)10019,001900Разом:6063,15

Вартість устаткування збільшується на вартість транспортування - 10% і вартість монтажа - 15%. Разом вартість устаткування складе:

СЗАГ = 6063.15+606.32+909.47=7578.94 (грн.)

Розрахунок економічного ефекту.


Зспп=Ззпспп +Змвспп+ СЗАГ


Зспп =2788.59+ 273.91+7578.94 = 10641.44 грн.

Тобто собівартість створеного продукту 10641.44 грн.

А зараз визначимо ціну розробки:


Ц = Зспп + Р,


Де Ц - ціна розробки;

Р - 15% від витрат на розробку системи.

Ц = 10641.44 + 1596.216= 12237.656 грн.

Ціна розробки дорівнює 12237.656 грн.

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

Наприклад, ціна оптичного координатографа виробництва «Фрайбергер прецизионс-механик-ГмбХ», Німеччина при точності вимірювань в 100 мкм складає близько 10000$. Неавтоматизований оптичний координатограф «Ecartometr» (Німеччина) при точності 100 мкм і діапазоні переміщень 25мм пропонується за 6500 $.

Економія від використання однієї розробленої системи представлятиме:

ЕК = $6500 * 8.0- 12237.65 = 39762.35грн.

,0 - курс долара Національного банку України.

6. ОХОРОНА ПРАЦІ


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

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

Працівник - особа, яка працює на підприємстві, в організації, установі та виконує обовязки або функції згідно з трудовим договором (контрактом).

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

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

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

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


6.1 Аналіз шкідливих та небезпечних факторів


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

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

Шкідливі та небезпечні фактори класифікують відповідно до ДЕРЖСТАНДАРТУ 12.0.003-74 по природі дії на наступні групи:

фізичні;

психофізичні.

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

Фізичні небезпечні й шкідливі виробничі фактори підрозділяються на наступні:

підвищений рівень шуму на робочому місці;

відсутність або недолік природного світла;

недостатня освітленість робочої зони;

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

Психофізичні небезпечні й шкідливі виробничі фактори по характеру дії підрозділяються:

фізичні перевантаження (статичні й динамічні);

нервово-психічні перевантаження (розумова напруга й перенапруга, монотонність праці, емоційні перевантаження, стомлення, емоційний стрес, емоційне перевантаження).

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

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

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

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

Електричний струм являє собою схований тип небезпеки, тому що його важко визначити в струмо- і не струмоведучих частинах устаткування, які є гарними провідниками електрики. Смертельно небезпечним для життя людини вважають струм, величина якого перевищує 0,05 А, струм менш 0,05 А - безпечний (до 1000 В). З метою попередження поразок електричним струмом до роботи допускаються тільки особи, що добре вивчили основні правила по техніці безпеки.

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

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

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


6.2 Заходи щодо нормалізації шкідливих і небезпечних факторів


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

Висота робочої поверхні стола повинна регулюватися в межах 680-800 мм; при відсутності такої можливості повинна становити 725 мм.

Дисплей задовольняє наступним вимогам:

найважливіші елементи конструкції розташовані в центрі поля зору (клавіатура);

елементи згруповані по функціональній ознаці;

робочі поверхні розташовані похило, по можливості перпендикулярно погляду оператора;

Екран монітору перебуває від очей користувача на оптимальній відстані 600-700 мм, але не ближче 500 мм із урахуванням розмірів знаків і символів.

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

для екрана: білий на чорному;

для клавіатури: чорний на білому.

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

Клавіатура повинна розташовуватися на поверхні стола таким чином, щоб відповідати ліктеві сидячого оператора. Його рука повинна бути зігнута на 90 градусів у ліктьовому суглобі, а передпліччя - лежати горизонтально. Клавіатуру варто розташовувати на відстані 100-300 мм від краю, зверненого до користувача.

Приміщення відповідає кількості працюючих і розташовуваному в них КТЗ (комплекс технічних засобів). Відстань між робочими столами з моніторами не менш 2,0 м, а відстань між бічними поверхнями моніторів - не менш 1,2 м. У приміщеннях з ПЕОМ щодня проводитися вологе прибирання, необхідне наявність аптечки першої допомоги.


Рис. 6.1 - Схема робочого місця програміста: 1-стіл; 2-стілець; 3-підставка для ніг; 4-системний блок; 5-монітор; 6-клавіатура; 7-принтер; 8-лоток для паперу


Як джерела загального освітлення використаємо лампи типу ЛБ і ДРЛ із індексом передачі кольору не менш 70 (R>70), як світильники - установки з переважно відбитим або розсіяним світлом. Світильники загального освітлення розташовуємо над робочим столом у рівномірно прямокутному порядку. Для запобігання відблисків екрана дисплея прямими світловими потоками застосовуємо світильники загального призначення, розташовані між рядами робочих місць. При цьому лінії світильників розташовуються паралельно світлоприйому. Освітлювальні установки забезпечують рівномірну освітленість за допомогою приглушеного або неуважного світлорозподілу. Для виключення відблисків застосовуємо спеціальні фільтри для екранів, захисні козирки або розташовувати джерела світла паралельно напрямку погляду на екран монітора по обидва боки. Місцеве освітлення забезпечується світильниками, установленими безпосередньо на стільниці або на його вертикальній панелі, а також вмонтованими в козирок пульта. Джерела світла стосовно робочого місця маємо у своєму розпорядженні такий образ, щоб виключити влучення в очі прямого світла. При природному освітленні необхідно застосовувати сонцезахисні засоби, що знижують перепади яскравості між природним світлом і світінням екрана дисплея. При такому засобі, використаємо регульовані жалюзі.

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


(6.1)


Е - нормована освітленість, Лк (для нашого випадку 300)- коефіцієнт запасу » 1.3;

А - площа підлоги, м2 (=25м2);- коефіцієнт, що враховує нерівномірність освітленості

(Для ламп накалювання =1.5, для люмінесцентних =1.1.);л - кількість ламп в одному світильнику (=2);

Фл - світловий потік лампи (Для ламп ЛБ-40 = 3000 лм.);св - коефіцієнт використання світильників. Визначається по індексу приміщення:

, (6.2)


а - ширина приміщення, м;- довжина приміщення, м;- висота підвісу світильників над робочою поверхнею, м.

Приймаючи, що а=5 м., b=5 м., h=2 м., обчислюємо p=1.25. Тепер по таблиці відповідності визначаємо, що Uсв=0.63.

Підставляючи всі необхідні дані одержуємо:св = (300*1.3*20*1.1) / (2*3000*0.55) = 2,6 » 3

Таким чином, одержуємо, що для освітлення нашого приміщення необхідно 3 світильники, по 2 лампи марки ЛБ-40 у кожному.

Оптимальні норми температури, відносній вологості й швидкості руху повітря в робочій зоні виробничого приміщення відповідно до ДЕРЖСТАНДАРТ 12.1.005-88 приведені в таблиці 6.1.


Таблиця 6.1 - Оптимальні норми температури, відносної вологості і швидкості руху повітря

Період рокуКатегорія роботиТемпература СВідносна влаж. повітря, %Швидкість руху повітря, не більше м/сХолодний і перехіднийлегка20-2360-400,2Теплийлегка22-2560-400,2

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

надходження тепла від людей;

виділення тепла від обладнання та допоміжної апаратури;

надходження тепла від сонячної радіації;

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

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

Компютер живиться від однофазної мережі перемінного струму промислової частоти із заземленою нейтралі, напругою 220 В. Системний блок компютера має напруги сигналів ТТЛ рівнів (-1, +4 В), цифрові й аналогові мікросхеми живляться постійною напругою (5 та 12 В), які утворюються шляхом перетворення перемінної напруги 220 В в блоці живлення. Блок живлення містить у собі схеми перетворення напруги, схеми стабілізації й схему захисного відключення при короткому замиканні. Тому що корпус компютера виконаний з металу, то існує небезпека пробою фази на корпус. Монітори сучасних компютерів практично завжди виготовляються із пластику, тому незважаючи на велику напругу, що є присутнім у моніторі, поразка струмом людини практично виключено.

Для забезпечення захисту від поразки електричним струмом при дотику до металевих не струмоведучих частин, які можуть виявитися під напругою в результаті пошкодження ізоляції, я рекомендую застосовувати захисне заземлення. Заземлення корпуса ЕОМ забезпечено підведенням заземлюючої жили до живильних розеток. Опір заземлення 4 Ом (Rн) для електроустановок з напругою до 1000 В. З метою профілактики один раз у рік визначається опір ґрунту.

У робочих приміщеннях фахівців операторів ЕОМ рівень шуму згідно норм не повинен перевищувати 65 дб. На робочих місцях у приміщеннях для розміщення шумних агрегатів обчислювальних машин (АЦПУ, роботи, принтери й т.і.) рівень шуму не повинен перевищувати 75 дб. Стіни й стелі виробничих приміщень, де встановлені ЕОМ й інше обладнання, що є джерелом шумоутворення, облицьовані звуковбирним матеріалом з максимальним коефіцієнтом звукопоглинання в області частот 63-8000 Гц, незалежно від кількості одиниць установленого обладнання. Зниження шуму, створюваного на робочих місцях лабораторії внутрішніми джерелами, а також шуму проникаючого ззовні, є дуже важливим завданням. Зниження шуму в джерелі випромінювання забезпечуємо застосуванням пружних прокладок між основою машини, приладу й опорною поверхнею. В прокладках використаються гума, повсть, пробка, амортизатори різної конструкції. Під настільні шумливі апарати можна підкладати мякі килимки із синтетичних матеріалів, а під ніжки столів, на яких вони встановлені, - прокладки з мякої гуми, повсті, товщиною 6-8 мм. Кріплення прокладок можливо шляхом приклейки їх до опорних частин. Можливо також застосування звукоізолюючих кожухів, які не заважають технологічному процесу. Не менш важливим для зниження шуму в процесі експлуатації є питання правильного й своєчасного регулювання, змазування й заміни механічних вузлів шумливого встаткування.

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

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

послабити шум самих джерел (застосування екранів, звукоізолюючих кожухів);

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

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


6.3 Пожежна безпека


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

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

Причинами пожеж та вибухів на підприємстві є порушення правил і норм пожежної безпеки, невиконання Закону «Про пожежну безпеку».

Небезпечними факторами пожеж є:

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

замикання електронних частин компютера.

підвищена концентрація СО та інші токсичні продукти горіння.

знижена концентрація кисню в повітрі.

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

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

Пожежа може виникнути й від зовнішніх джерел. Тому необхідні наступні заходи забезпечення пожежної безпеки:

ефективне видалення диму, тому що в приміщеннях, що мають оргтехніку, міститься велика кількість пластикових речовин, що виділяють при горінні летучі отруйні речовини та їдучий дим;

правильний шлях евакуації;

наявність вогнегасників і пожежної сигналізації;

дотримання всіх протипожежних вимог до систем опалення й кондиціонування повітря.

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

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

Оскільки в розглянутому випадку при загоряннях електронних пристроїв можуть знаходитися під напругою, то використовувати воду й піну для гасіння пожежі неприпустимо, оскільки це може призвести до електричних травм. Іншою причиною, по якій небажане використання води, є те, що на деякі елементи ЕОМ неприпустиме влучення вологи. Тому для гасіння пожеж у розглянутому приміщенні можна використати або порошкові вогнегасники, або установки вуглекислотного гасіння. Але оскільки останні призначені тільки для гасіння невеликих вогнищ загоряння, то галузь їхнього застосування обмежена. Тому для гасіння пожеж у цьому випадку застосовуються порошкові сполуки, тому що вони мають наступні властивості: діелектрики, практично не токсичні, не надають корозійного впливу на метали, не руйнують діелектричні лаки.

У приміщенні будівлі ОЦ використаються в основному вуглекислотні вогнегасники ОУ-5, ОУ-10 достоїнство яких є висока ефективність гасіння пожежі, збереження електронного обладнання, діелектричні властивості вуглекислого газу, що дозволяє використовувати ці вогнегасники навіть у тому випадку, коли не вдається знеструмити електроустановку відразу. Згідно СНиП 2.04.09-84 у приміщенні площею 72 м2 ми встановлюємо 8 вогнегасників. У будівлі вивішені плани евакуації на випадок пожежі в доступних для огляду місцях.

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

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

У будинку розроблені й на видних місцях вивішені плани (схеми) евакуації людей у випадку пожежі (ППБ 01-03). Призначення плану евакуації - чітко позначити шляхи евакуації, евакуаційні виходи, а також указати розташування пожежного обладнання, засобів оповіщення про пожежу, і нагадати про першочергові дії, які необхідно почати. План евакуації може бути виконаний на фотолюмінесцентному (світному в темряві) або звичайному пластику, на плівці, папері. Плани евакуації відповідно до ДЕРЖСТАНДАРТ Р 12.2.143-2002 являють собою схеми, на яких нанесені внутрішні контури приміщень, коридорів, сходових маршів у будинках і спорудах, де можуть перебувати й працювати люди. На цих схемах умовними позначками зазначені шляхи евакуації, евакуаційні й аварійні виходи, місця розташування протипожежного обладнання, телефони, засоби першої медичної допомоги, і додаткові засоби порятунку (протигазів, респіраторів тощо), а також установлені в організації правила поведінки людей, порядок і послідовність їхніх дій в умовах надзвичайної (аварійної) ситуації.

ВИСНОВКИ


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

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

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

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

Таким чином, середовище програмування Delphi є одним з визнаних лідерів серед візуальних систем програмування і могутнім інструментом для створення прикладних програмних систем.

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

СПИСОК ЛІТЕРАТУРИ


1.Верхаген К. и др. Распознавание образов: состояние и перспективы. М.: Радио и связь, 1985.

2.Власов А.В., Шамис А.Л. Экспериментальные системы зрительного восприятия для роботов (обзор в сб. "Интегральные роботы). М.: Мир, 1975, с. 28-46.

.Гаевский А. Разработка программных приложений на Delphi 7 - М.: Киев, 2003.

.Глинский Я.Н., Анохин В.Е., Ряжская В.А. Turbo Pascal 7.0 и Delphi. Учебное пособие. СПб.: ДиаСофтЮП, 2003.

.Дарахвелидзе П.Г., Марков Е.П. Delphi - среда визуального программирования. СПб.: BHV- Санкт-Петербург, 2009.

.Дуда Р., Харт П. Распознавание образов и анализ сцен. М.: Наука, 1976.

.Загоруйко Н.Г. Методы распознавания и их применение. М.: Сов. Радио, 1972.

.Катыс Г.П. Оптические информационные системы роботов-манипуляторов. М.: Машиностроение, 1977.

.Климова Л.М. "Delphi 7. Самоучитель. М.: ИД КУДИЦ-ОБРАЗ, 2005.

.Корн Г., Корн Т. Справочник по математике. М.: Наука, гл. ред. физ.-мат. литературы, 1970.

.Кузин Е.С. Концепция информационной технологии функционально-ориентированного проектирования прикладных информационных систем. Информационные технологии, №1, 2000.

.Мадрел Тео. Разработка пользовательского интерфейса/ Пер. с англ.- М.:ДМК, 2001.

.Немнюгин С.А. Программирование - CПб.: Питер, 2007.

.Орлов И.А. Эксплуатация и ремонт ЭВМ, организация работы ВЦ. Москва -2009.

.Павлидис Т. Алгоритмы машинной графики и обработки изображений. М.: Радио и связь, 1990.

.Попов Э.В., Фридман ЕР. Алгоритмические основы интеллектуальных роботов и искусственного интеллекта.М.: Наука, 1976.

.Ревнич Ю.В. Нестандартные приемы программирования на Delphi. - СПб.: БХВ-Петербург, 2005.

.Ремизов Н. Delphi - CПб.: Питер, 2007.

.Ту Дж., Гонсалес Р. Принципы распознавания образов. М., Мир, 1978.

.Уинстон П.Г. Психология машинного зрения. М.: Мир, 1978.

.Фараонов В. Система программирования Delphi. CПб.: БХВ-Петербург, 2005.

.Ханекамп Д., Вилькен П. Программирование под Windows/ Пер. с нем. -М.: ЭКОМ, 2006.

.Шенк Р. К. Обработка концептуальной информации. М.: Энергия, 1980.

.Inoue H. Computer Controlled Bilateral Manipulator. Bulletin of the Japanese Society of Mechanical Engineers, vol. 14, No. 69, 1971, pp. 199-207.

25.Wichman W. M. Use of Optical Feedback in Computer Control of an Arm. Stanford Artificial Intelligence Project, Memo. No. 56, August 1967.



ВСТУП Для контролю геометричних параметрів застосовують різні типи вимірювальних систем. Цілі контролю можуть бути різними - від вхідного і вихідного кон

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ