Обробка відео потоку в реальному часі: накладання фільтрів

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

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

Однією із складнощів обробки відео є обробка відео в реальному часі, що зумовлює проводити обробку 25 і більше кадрів в секунду. Ці труднощі в першу чергу пов’язані з тим, що дуже швидко потрібно проводити багато математичних операцій над великими обсягами даних (для прикладу на відеопотоці з розміром кадру 640х480, одним каналом та 8-мибітним представленням, щоразу потрібно обробляти 307200 байт даних). Тому завжди проводять оптимізацію обробки даних як на програмному рівні (удосконалюються алгоритми) так і на апаратному (впроваджуються нові архітектури процесорів, що оптимізовані для обробки векторів та матриць).

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

Демонстрація роботи розробленої системи обробки відео-потоку з цифрової камери на платі Altera DEII:

Деякі теоретичні відомості

Інверсія зображення

Перетворення зображення в негатив з яскравостями в діапазоні [0, L  1] здійснюється за допомогою негативного перетворення, яке визначається виразом:

s = L – 1 – r.

Цей тип обробки підходить для підсилення білих або сірих деталей на фоні темних областей зображення, особливо коли темні області мають більші розміри. Приклад приведення картинки у негатив (для сірого і кольорового зображень) показано на рисунку 1.1.

Виділення компоненти кольору

Зазвичай кожне кольорове зображення представляється у одному з кольорових просторів. Для виділення певної компоненти достатньо проводити обробку над одним із вимірів простору, наприклад в RGB проводити обробку компоненти червоного кольору – R. Приклад показано на рисунку 1.2.


Рис. 1.1. – Перетворення у негатив


Рис. 1.2 – Складові формату RGB.

Порогове перетворення

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

T = T(x, y, p(x, y), f),

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


Таким чином, пікселі, яким привласнено значення 1 (або інший відповідний рівень яскравості), відповідають об’єктам, а пікселі із значенням 0 (або будь-яким іншим, відмінним від значень об’єкту) відповідають фону. Якщо значення T залежить тільки від f, тобто однаково для всіх точок зображення, то такий поріг називається глобальним. Якщо поріг T залежить від просторових координат x та у, то він називається локальним або динамічним. Якщо T залежить від р(х, у), то такий поріг називається адаптивним. [1]


Рис. 1.3 – Приклад бінарізації

Морфологічні операції

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

Бінарна морфологія

У бінарної морфології двійкове зображення , представлене у вигляді впорядкованого набору (упорядкованої множини) чорно-білих крапок (пікселів), або 0 і 1. Під областю зображення зазвичай розуміється деяке підмножина точок зображення. Кожна операція двійковій морфології є деяким перетворенням цієї множини. В якості вихідних даних приймаються двійкове зображення B і деякий структурний елемент S. Результатом операції також є двійкове зображення.

Структурний елемент

Структурний елемент являє собою деяке двійкове зображення (геометричну форму). Він може бути довільного розміру і довільної структури. Частіше всього використовуються симетричні елементи, як прямокутник фіксованого розмірі (BOX (l, w)), або коло деякого діаметру (DISK (d)). У кожному елементі виділяється особлива точка, звана початковою (origin). Вона може бути розташована в будь-якому місці елемента, хоча в симетричних це зазвичай центральний піксель.

Дилатація та ерозія

Нехай А та В – множини з простору Z2. Дилатація множини А по множині В (або відносно В) позначається А ⊕ В і визначається як:

A ⊕ B = {z | (B)z ∩ A ≠ ∅}.

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

Для множин А і В з простору Z2 ерозія А по В, що позначається А Θ В, визначається як:

А Θ В = {z | (B)z ∩ Ас = ∅}.

Інакше кажучи, ерозія множини А по примітиву В – це множина всіх таких точок z, при зсуві в які множина В цілком міститься в А.

Розмикання та замикання

Розмикання множини А по примітиву В позначається А°В і визначається рівністю:

А ° В = (А Θ В) ⊕ В.

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

Замикання множини А по примітиву В позначається як А•В і визначається наступним чином:

А • В = (А ⊕ В) Θ В,

тобто, як дилатація А по В, результат якої потім піддається ерозії по тому ж примітиву В.

Детектор Собела

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

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


Докладний розрахунок наведений нижче:


G = SQRT (Gx2 + Gy2)

Іноді, з метою підвищення ефективності, ми використовуємо наближення наведеного вище рівняння: |G| = |Gx| + |Gy|. Якщо значення G більше певного порогу, тоді можна розглядати цей піксель в якості граничного пікселя. [2]


Рис. 1.4 – Приклад застосування оператора Собела

Ефект «мультиплікації» зображення

Під даним ефектом розуміємо зменшення кольорності зображення а також виділення чорним границь на зображення, в результаті виходить ефект ніби зображення нарисоване художником (рис 1.5). Операцію зменшення кольорності можна провести просто зафіксувавши сталими деякі із складових кожної із компонент зображення. Для прикладу, якщо в восьмибітному зображенні зафіксувати на певному рівні половину бітів, замість 2553 кольорів ми отримаємо 163. Якщо маємо два зображення, imageRGB – зображення з зменшеною кількістю кольорів, та imageSobel – зображення границь, операцію рисування контурів можна провести наступним чином:

imageOut = imageRGB & imageSobel

де & – побітова операція І.


Рис. 1.5 – Приклад застосування ефекту мультиплікації

Автор: Дрозд В.П., студент кафедри КЕОА, ФЕЛ, НТУУ «КПІ».