Мои Конспекты
Главная | Обратная связь


Автомобили
Астрономия
Биология
География
Дом и сад
Другие языки
Другое
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Металлургия
Механика
Образование
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Туризм
Физика
Философия
Финансы
Химия
Черчение
Экология
Экономика
Электроника

Шина USB

Лабораторна робота № 4

Програмна обробка сигналу з USB-відеокамери

Мета: ознайомитися з принципами роботи пристроїв, які під’єднуються до шини USB; вивчити способи програмної обробки сигналу з USB-відеокамери.

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

Обладнання: відеокамера „G-Cube GWL-835B”, тримач відеокамери, персональний комп’ютер.

Програмне забезпечення: програма „USB_Video_11s”, середо­вище програмування Delphi.

ТЕОРЕТИЧНІ ВІДОМОСТІ

Шина USB

Універсальний послідовний інтерфейс USB (Universal Serial Bus) дозволяє під’єднувати до комп’ютера всі сучасні периферійні пристрої [1-3]. Створено наступні версії інтерфейсу (шини) USB:

· 1996 р. – інтерфейс USB 1.0; низькошвидкісний (LS, Low-Speed); швидкість передачі даних 1,5 Мбіт/с;

· 1998 – USB 1.1; повношвидкісний (FS, Full-Speed), 12 Мбіт/с (передача аудіо потоку);

· 2000 – USB 2.0; високошвидкісний (HS, High-Speed), 480 Мбіт/с (передача відеопотоку);

· 2004 – Wireless USB, безпровідний зв’язок, 480 Мбіт/с (до 10 м).

Практично єдиним конкурентом USB є шина FireWire, проте вони реалізують різні схеми під’єднання: FireWire реалізовує схему „Майстер-Майстер”, а USB – „Майстер-Ведений”.

Шина USB розроблялася для домашній користувачів, тому вона забезпечує з’єднання на досить короткій відстані. У більшості випадків USB – мережа для одного комп’ютера.

Архітектура USB передбачає під’єднання до комп’ютера одного чи кількох пристроїв. Комп’ютер є головним пристроєм і називається хостом (рис. 1.1). Для з’єднання комп’ютера і пристрою використовують хаб. Комп’ютер має вбудований хаб, який називається кореневим.

 

 
 

 

 


Рис.1.1. Архітектура USB

Фізична архітектура USB (рис. 1.2) визначається наступними правилами:

1. Пристрої під’єднуються до хоста.

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

3. Допускається 5 рівнів каскадування хабів (крім кореневого)

Деталі фізичної архітектури приховані від користувачів, тому логічна архітектура USB – звичайна зірка, центром якої є програмне забезпечення, а вершинами – набір кінцевих точок (рис. 1.3).

Шина USB складається з наступних елементів:

· Хост-контролер (Host Controler) – головний контролер шини, входить до складу системного блоку ПК.

· Пристрій (Device) – це хаб, функція або їх поєднання.

· Порт (Port) – точка під’єднання.

· Хаб (hub, концентратор) – пристрій, що забезпечує додаткові порти (розгалужує шину). Хаб розпізнає під’єднання і від’єднання пристроїв, конфігурує швидкість передачі і струм споживання пристроїв.

· Кореневий хаб (Root Hub) – хаб, що входить до складу хоста.

· Функція (Function) – периферійний пристрій, здатний приймати і передавати інформацію по шині USB. Перед використанням функція повинна бути конфігурована хостом.

· Логічний пристрій (Logical Device) – набір кінцевих точок.

· Кінцева точка - найменша частина пристрою, що має унікальний ідентифікатор.

 

 

       
 
   

 


Рис. 1.2. Фізична архітектура USB Рис. 1.3. Логічна архітектура USB

(рівні нумеруються зверху вниз,

рівень кореневого хаба – 0)

 

Відносно живлення є три класи USB пристроїв:

1. Мале споживання (менше 100 мА – 1 блок).

2. Не більше 100 мА при включенні і не більше 500 мА (5 блоків) в робочому режимі.

3. З власним блоком живлення.

Якщо на шині відсутня активність 3 мс, то пристрій переходить в режим малого енергоспоживання (500 мкА).

Існує чотири типи передач по шині USB:

1. Керуючі передачі (для конфігурування мережі).

2. Передачі масивів даних (низький пріоритет, використовуються принтерами і сканерами).

3. Передачі по перериваннях (маніпулятор миша, клавіатура та ін.).

4. Ізохронні передачі (в режимі реального часу, передача аудіо- та відеопотоку).

Довжина з’єднання між пристроями – до 5 м, тому для п’яти хабів максимальна відстань – до 30 м. До шини дозволяється під’єднання до 127 функцій (адреса функції – 7 біт) та 16 кінцевих точок для кожної функції (адреса кінцевої точки – 4 біт).

1.2. Програма „USB_Video_11s”

Програма „USB_Video_11s” призначена для зчитування та обробки зображень з USB-відеокамери (рис. 1.4). Програма взаємодіє з відеокамерою за допомогою драйверів, які повинні бути попередньо встановлені на ПК.

У роботі використовується відеокамера „G-Cube GWL-835B”, яка забезпечує максимальну роздільну здатність 640×480 пікселів, зчитування 30 кадрів у секунду, фокусування від 10 см до безкінечності. Окремі кадри (Frame) відеопотоку зчитуються з інтервалом, що встановлюється компонентом „Timer1_Video” (по замовчуванню 112 мс). Дозвіл за зчитування кадрів встановлюється командою „Старт”, а забороняється – командою „Стоп”. Зчитані або „захоплені” (capture) з відеопотоку кадри відображаються на зображенні „Image_Video”. Програма використовує роздільну здатність зображень 320×240 пікселів при максимальній роздільній здатності відеокамери 640×480 пікселів.

Захоплення відео у програмі виконується за допомогою функцій Windows API, які містять префікс cap (capture). Основна функція, яка використовується при захопленні відео, це „capCreateCaptureWindowA”. Вона використовує стандартний драйвер „AVICAP32.DLL” і створює графічне вікно, призначене для показу відеопотоку. Цьому вікну посилаються всі керуючі повідомлення (SendMessage). Роздільну здатність відео можна встановити командою „Video_Parameters” на формі „Опції” (рис. 1.5).

Окремі зображення з відеопотоку записуються у вхідне зображення „Image_Input” командою „Зчитати”. Такі зображення можуть записуватися у файл командою „Зберегти”. Зображення „Image_Input” також зчитується з файлу командою „Відкрити” (без використання відеокамери). На зображенні „Image_Input” користувач може вибрати певний об’єкт (наприклад, геометричну фігуру) за допомогою маркера (хрестик). Розпізнавання виділеного об’єкта, який сприймається програмою як один сегмент (зв’язна область зображення), виконується командою „Розпізнати” і процедурою „p_Rec_Image”. Обробка полягає у сегментації зображення, обчисленні параметрів сегменту та розпізнаванні виділеного об’єкта.

Процедура розпізнавання зображень „p_Rec_Image” містить наступні основні методи:

1. p_Read_Image – зчитування RGB складових кольору кожного пікселя зображення „Image_Input” у масив mI, при цьому розмір зображення за шириною у пікселях – qXi, за висотою – qYi.

2. p_Image_Segment – сегментація зображення „Image_Input”.

3. p_Image_Contour – виділення контуру сегментованого зображення.

4. p_Segment_Color – визначення кольору сегмента.

5. p_Segment_Geometr_Par – визначення геометричних параметрів сегмента.

Рис. 1.4. Головна форма програми „USB_Video_11s

Рис. 1.5. Форма „Опції

Сегментація зображення (процедура „p_Image_Segment”) полягає у виділенні зв’язної області приблизно однакового кольору з центром xc, yc (зображення „Image_Segment”). Координати центру сегменту встановлюються маркером на зображенні „Image_Input”. До сегменту відносяться всі пікселі, для яких різниця кольору відносно центру сегмента не перевищує значення Seg_Color_Dif (рис. 1.4).

Пікселі сегмента на зображенні „Image_Segment” показані сірим кольором (масив mS), а пікселі контуру – білим (масив mCont). На основі виділеного сегментом (наприклад, геометричної фігури „Квадрат”), визначаються його параметри.

Процедура „p_Segment_Color” визначає RGB складові кольору сегмента: Seg_Color_R, Seg_Color_G, Seg_Color_B.

Процедура „p_Segment_Geometr_Par” визначає геометричні параметри сегмента:

1. kcs – відношення кількості пікселів контуру до кількості пікселів сегмента.

2. rMin_Max – відношення мінімальної відстані контуру від центра сегмента до максимальної.

3. aMax – напрям на точку контуру, максимально віддалену від центра.

Розпізнавання виділеного сегмента (Результати розпізнавання) виконується за наступними параметрами:

1. Rec_Color – колір сегмента (наприклад, чорний)

2. Rec_Shape – розпізнавання форми (наприклад, еліпс)

3. Rec_Direct – розпізнавання орієнтації (наприклад, вертикальна)

Лістинг 1. Фрагмент процедури „p_Rec_Image”, який виконує розпізнавання зображення сегмента:

// Recogn. Color ----------------------------------------------------------------------

Re:=45; // Etalon Color R

Ge:=45;

Be:=45;

difCe:=abs(Re-cSeg1[1])+abs(Ge-cSeg1[2])+abs(Be-cSeg1[3]);

if DifCe<50 then // Color Difference Etalon-Segment

begin

L_Rec_Color.Caption:='Rec_Color= Black';

end else

begin

L_Rec_Color.Caption:='Rec_Color= Not Black';

end;

// Recogn. Shape -----------------------------------------------------------------------

bcs:=(kcs>0.086) and (kcs<0.101); // Pixels Contour/ Segment

brMin_Max:=(rMin_Max>0.4) and (rMin_Max<0.6); // rMin/ rMax

if (bcs and brMin_Max) then

begin

L_Rec_Shape.Caption:='Rec_Shape= Ellipse';

end else

begin

L_Rec_Shape.Caption:='Rec_Shape= Not Ellipse';

end;

// Recogn. Direction / Angle -------------------------------------------------------

ban1:=(aMax_g>0) and (aMax_g<30);

ban2:=(aMax_g>150) and (aMax_g<210);

ban3:=(aMax_g>330) and (aMax_g<360);

if (ban1 or ban2 or ban3) then

begin

L_Rec_Direct.Caption:=' Rec_Direct= Horizontal';

end else

begin

L_Rec_Direct.Caption:=' Rec_Direct= Vertical';

end;

В програмі використовуються наступні режими відео (рис. 1.4):

· Show – показувати відео (звичайний режим).

· Change – ввімкнути детектор змін (руху).

· Track – відслідковувати траєкторію руху виділеного сегменту на зображенні.

При ввімкненні режиму детектора змін (рис. 1.6) програма для кожного кадру (Frame) відеопотоку визначає різницю Dif_Image поточного кадру з попереднім (як різницю RGB складових кольору всіх пікселів зображень). Інтервал часу між кадрами встановлюється через властивість компонента „Timer2_Change” (500 мс). Значення мінімальної зміни кадру, яка сприймається програмою як рух, встановлюється у полі вводу „Dif_Image_Max”. Максимальна кількість кадрів, різниця між якими показується на графіку, встановлюється значенням „q_Frame_Max”.

Рис. 1.6. Форма детектора змін (руху)

При відслідковуванні траєкторії руху виділеного сегменту на зображенні (рис. 1.4) програма спочатку виділяє сегмент, на якому знаходить маркер (хрестик). Далі при повільному зміщенні об’єкта, який відповідає сегменту, перед відеокамерою програма відслідковує зміщення сегменту на зображенні і відповідно зміщує маркер. Інтервал часу між кадрами встановлюється через властивість компонента „Timer3_Track” (500 мс).