Здавалка
Главная | Обратная связь

Можливості реалізації машинного зору у середовищі Matlab.



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

У даному курсі, основна увага буде приділена додаткам: Image Acquisition Toolbox – який використовуються для захвату зображень з використанням вбудованих та сторонніх апаратних засобів ПК та Image Processing Toolbox – який використовуються для аналізу та обробки цифрових зображень та відеоданих.

Image Acquisition Toolbox – являє собою набір функцій, які суттєво розширюють можливості обчислень в середовищі MATLAB. Додаток підтримує широкий діапазон операцій із захвату зображень, включаючи
захоплення зображень з різного роду пристроїв, від професійних пристроїв захоплення до web-камер з USB-входом, перегляд потокового відео
управління захватом (включаючи зовнішні пристрої захвату) вибір потрібної конфігурації функцій передачі даних в робоче середовище MATLAB.

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

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

Щоб використовувати Image Acquisition Toolbox для захоплення зображень, потрібно реалізувати наступні кроки:

1. Інсталяція та конфігурування пристрою захоплення зображень.

2. Отримання інформації, яка однозначно ідентифікує пристрої захоплення зображень в Image Acquisition Toolbox.

3. Створення вихідних об’єктів відео-послідовності.

4. Попередній перегляд відео-послідовності (не обов’язково).

5. Формування властивостей об’єктів захопленого зображення (не обов’язково).

6. Захоплення даних зображення.

7. Очищення даних.

Загальна характеристика призначення додатку. Додаток Image Acquisition Toolbox служить для вирішення проблемно-орієнтованих завдань захоплення зображень. Використовуючи функції програми, можна зв'язати в єдину систему можливості MATLAB і пристрої захоплення зображень. Встановлюючи різні властивості об'єктів, існує можливість проведення контролю різноманітних аспектів процесу захоплення, таких як, наприклад, кількість захоплених даних.

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

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

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

Компоненти додатку. Додаток використовує компоненти, іменовані адаптером для комунікації з пристроєм через відповідні драйвери. Програма включає адаптери, які підтримують пристрої, що випускаються декількома виробниками пристроїв захоплення зображень. Крім того, програма включає адаптери пристроїв захоплення зображень для Windows. Нижче на рисунку 5.4. показані основні компоненти програми Image Acquisition Toolbox.

 

Рис. 5.4. Основні компоненти додатку Image Acquisition Toolbox

Пристрої, що підтримуються додатком. Додаток Image Acquisition Toolbox включає адаптери, які забезпечують підтримку професійних пристроїв захоплення зображень виробників, включаючи:

– Coreco Imaging, Inc.

– Data Translation, Inc.

– Matrox, Inc.

Додаток призначений для спільної роботи з цифровими камерами, що підтримують DCAM-специфікацію. Ця специфікація описує інтерфейс обміну даними з цифровою камерою по шині IEEE 1394 (FireWire), яка часто використовується в наукових програмах.

Крім того, додаток з допомогою драйверів Windows Driver Model (WDM) або Video for Windows (VFW) підтримує пристрою захоплення зображень такі як:

– USB і IEEE 1394 (FireWire, i.LINKR) Web-камери;

– Цифрові відеокамери;

– TV тюнер.

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

Встановлення пристрою захоплення зображення. Типовий пристрій захоплення зображень складається з відеокамери, з'єднаної з комп'ютером через плату і високошвидкісної шини обміну даними USB або IEEE 1394 (FireWire).

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

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

– Встановлення фреймграберу на комп'ютер.

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

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

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

Шина IEEE 1394 (FireWire) і Windows-пристрою захоплення зображень, які використовують WDM і VFW драйвера вимагають менше різних установок. Пристрої та відповідні драйвера поставляються виробниками.

Для доступу до DCAM IEEE 1394 (FireWire) камері необхідно інсталювати DCAM-драйвер. Додаток не завжди сумісна з драйверами інших виробників.

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

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

Пристрої, що підтримують індустріально-стандартний формат відео, доставляють фрейми зі стандартною частотою. Для RS170 і NTSC він дорівнює 30 фреймах за секунду (що відповідає частоті – 30 Гц). Для CCIR і PAL стандарт визначає частоту кадрів в 25Гц. Нестандартні пристрої можуть мати частоту кадрів, яка відрізняється від наведених. Пристрої захоплення зображень для Windows, такі як Web-камери, можуть підтримувати різну частоту зміни кадрів. Залежно від якості пристрою, в них існує можливість встановлення частоти зміни кадрів.

Швидкодія, з якою додаток Image Acquisition Toolbox може обробляти зображення, залежить також від продуктивності процесора, ефективності алгоритму і частоти кадрів. Якщо взяти досить швидкий процесор, простий алгоритм і налаштувати гарну частоту кадрів, то обробка в додатку Image Acquisition Toolbox відбуватиметься в масштабі реального часу.

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

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

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

– назва адаптера для підключення пристроїв захоплення зображень;

– ID пристрої для організації доступу (необов'язково);

– формат відеопотоку (необов'язково);

Для пошуку цієї інформації може використовуватися функція imaqhwinfo. Вона описує наступні характеристики:

– визначення назви адаптера;

– визначення ID пристрої;

– визначення підтримуваних форматів.

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

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

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

 

Приклад:imaqhwinfoans = InstalledAdaptors: {'matrox' 'winvideo'} MATLABVersion: '7.0 (R14)' ToolboxName: 'Image Acquisition Toolbox' ToolboxVersion: '1.5 (R14)'

 

Примітка. Функція imaqhwinfo видаватиме список тих адаптерів, підтримуваних додатком Image Acquisition Toolbox, назви яких наведено в поле Installed Adaptors. А назви адаптерів будуть у тому списку тільки тоді, коли драйвера відповідних пристроїв будуть інстальовані в системі.

Адаптер встановлює персональний номер кожного пристрою, з якою він пов'язаний. Адаптер встановлює для першого пристрою номер ID 1, для другого пристрою – відповідно ID 2 і т.д.

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

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

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

 

Приклад:dev_info = imaqhwinfo('matrox',1)dev_info = DefaultFormat: 'M_RS170' DeviceFileSupported: 1 DeviceName: 'Orion' DeviceID: 1 ObjectConstructor: 'videoinput('matrox', 1)' SupportedFormats: {1x10 cell}

 

У таблиці 5.1. описано інформацію, яка подана у полях вище виведеної структури.

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

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

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

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

Таблиця 5.1

Інформація про пристрої, що викликається функцією imaqhwinfo

Поле Опис
DefaultFormat Текстовий рядок, який ідентифікує відоеформат.
DeviceFileSupported Коли встановлено значення 1, тоді пристрій узгоджується із конфігурацією файлів, в інших випадках – 0.
DeviceName Текстовий рядок, який описує адаптер, що ідентифікує пристрій.
DeviceID ID пристрою, який визначає пристрій через адаптер.
ObjectConstructor Визначення синтаксису, який використовується при створенні вихідних відеооб’єктів для представлення пристроїв.
SupportedFormats Масив даних, який ідентифікує відео формати, що підтримуються даним пристроєм.

 

Приклад:

dev_info = imaqhwinfo('matrox',1)dev_info = DefaultFormat: 'M_RS170' DeviceFileSupported: 1 DeviceName: 'Orion' DeviceID: 1 ObjectConstructor: 'videoinput('matrox', 1)' SupportedFormats: {1x10 cell}

 

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

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

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

 

 

Таблиця 5.2

Варіанти конфігурації опцій запуску додатку Image Acquisition Toolbox

Overview Передача та попередній перегляд записаних даних і доставка опису усіх властивостей запуску, які підтримуються вихідними відеооб’єктами.
Setting the Values of Trigger Properties Опис пособу встановлення значень властивостей запуску вихідних відеооб’єктів.
Specifying the Trigger Type Опис особливостей значень властивостей TriggerType.
Controlling Logging Parameters Опис різних аспектів контролю записаних даних за допомогою функції додатку і властивостей вихідних відеооб’єктів.
Waiting for an Acquisition to Finish Опис можливостей використання функції wait у командній стрічці до завершення захоплення даних зображення.
Managing Memory Usage Опис використання функції imaqmem для контролю за використанням пам’яті.
Logging Image Data to Disk Опис конфігурації вихідних відеооб’єктів при запису даних зображення до файлу на диск.

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

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

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

Переміщення декількох фреймів з буферу – Для переміщення описаного числа фреймів з буфера пам'яті в робочий простір використовується функція getdata. Функція getdata переміщує фрейми з буфера пам'яті в робочий простір.

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

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

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

 

 

Рис. 5.5. Формат окремих фреймів

 

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

– визначення розмірності повертаються даних;

– визначення типу даних;

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

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

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

Стандартні відеоформати, такі як RS170 або PAL, включають опис висоти і ширини кадру зображення. Ці параметри пов'язані з роздільною здатністю зображення. Наприклад, у відеостандарті RS170 висота і ширина кадру зображення дорівнює 640x480 пікселів. Інші пристрої, наприклад, цифрові камери, підтримують також багато інших форматів, у тому числі з нестандартним розширенням. Вихідні відеооб'єкти запам'ятовують роздільну здатність у властивості VideoResolution.

Кожен фрейм зображення є тривимірним, оскільки відеоформат визначає число колірних шарів вздовж третьої розмірності. Для кольорових відеоформатів, наприклад RGB, кожен фрейм зображення складається з трьох шарів: червоної, зеленої та синьої складової. Інші відеоформати, наприклад, півтоновий RS170, мають тільки одну складову. Вихідні відеооб'єкти запам'ятовують розмір вздовж третьої розмірності у властивості NumberOfBands.

Примітка. Оскільки зазвичай роздільність відео визначається висотою і шириною кадру зображення, то в додатку це використовується для встановлення значення у властивості VideoResolution. Коли дані зображення будуть передані в робочий простір MATLAB, то розмірність кадру зображення буде записана в такому порядку висота×ширина.

Область цікавості і розмірність зображень. При роботі з областю цікавості (region-of-interest (ROI)), її розмірність визначається з розмірності кадру зображення, на якому ця область виділена. Розмірність зображення, яка пов'язана з властивістю VideoResolution, залежить також і від самого пристрою захоплення зображень.

Нижче розглянемо роботу з зображеннями різних форматів і розмірів,а також зв'язок між цими параметрами.

1. Вибір відеоформату – для перегляду списку відеоформатів, які підтримуються цим пристроєм захоплення зображень, необхідно використовувати функцію imaqhwinfo. У прикладі розглянуто відеоформати, які підтримуються пристроєм захвату зображень Matrox Orion. Це такі загальновідомі формати, як: RS170, NTSC і PAL. Вони визначають роздільність зображення.

Приклад:

info = imaqhwinfo('matrox');info.DeviceInfo.SupportedFormatsans = Columns 1 through 4 'M_RS170' 'M_RS170_VIA_RGB' 'M_CCIR' 'M_CCIR_VIA_RGB' Columns 5 through 8'M_NTSC' 'M_NTSC_RGB' 'M_NTSC_YC' 'M_PAL' Columns 9 through 10'M_PAL_RGB' 'M_PAL_YC'

2. Створення об'єктів захоплення зображень – Необхідно створити вихідні відеооб'єкти для пристрою захоплення зображень Matrox при використанні відеоформату RS170. Для запуску цього прикладу у системі необхідно використовувати функцію imaqhwinfo для отримання конфігурації об'єктів пристрою захоплення зображень. При цьому також можна використовувати такий синтаксис:

vid = videoinput('matrox',1);

 

3. Перегляд відеоформату і його роздільності – Додаток створює об'єкти з тим відеоформатом, який заданий за замовчуванням. Цей формат і буде визначати роздільну здатність відео.

 

Приклад:

get(vid,'VideoFormat')ans = M_RS170get(vid,'VideoResolution')ans = [640 480]

 

Передача окремих фреймів в робочий простір – Виклик функції getsnapshot призводить до передачі фреймів в робочий простір.

 

frame = getsnapshot(vid);

 

Розмірність повертаємих даних нерозривно пов'язана з роздільною здатністю зображення, а також значенням властивості NumberOfBands.

Приклад:vid.NumberOfBandsans = 1size(frame)ans = 480 640

 

4. Запуск об'єктів захоплення зображень – Виклик функції start призводить до запуску об'єктів захоплення зображень.

 

start(vid)

 

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

5. Передача декількох фреймів в робочий простір – Виклик функції getdata дозволяє передавати кілька фреймів зображень в робочий простір MATLAB.


data = getdata (vid, 10);


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

 

Приклад:size(data)ans = 480 640 1 10

 

6. Очищення - Якщо змінні, про які йшла мова раніше, довгий час не використовуються, їх слід видалити їх пам'яті.


delete (vid)

clear vid

 

Узагальнений опис основних функцій додатку Image Acquisition Toolbox. У додатку до вказівок наведено перелік та короткий опис глобальних функцій додатку Image Acquisition Toolbox, які будуть необхідні у використанні при виконанні практичних робіт. Більш детальна інформація та локальні компоненти даних функцій описано у технічній довідці пакету, яку можна викликати командою help з додаванням однієї з функцій додатку, прямо в командному рядку робочого середовища. Тоді перелік локальних компонент та функцій буде виведено в командному вікні середовища MATLAB.

Для відкриття середовища технічних вказівок можна скористатись двома способами:

1. В меню Help, вибрати команду Product Help;

2. В командному вікні написати команду doc help.

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

1. Комбінацією клавіш Shift+F1.

2. В меню Help, вибрати команду Function Browser.

Практична частина







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.