Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/6391| Title: | Системи обробки зображень у реальному часі на основі глибоких згорткових нейронних мереж |
| Authors: | Чичужко Марина Володимирівна Ковіня Дмитро Володимирович |
| Issue Date: | Jan-2026 |
| Abstract: | У кваліфікаційній роботі проведено: аналіз вже готових рішень систем комп'ютерного зору, їхні переваги та недоліки; удосконалення алгоритму для знаходження виділення простих геометричних фігур на зображенні. Описано алгоритм обробки зображення та послідовність кроків обробки зображення для виділення на зображенні об’єктів різної форми, які можна представити простими геометричними фігурами. Реалізовано алгоритми обробки зображень. Застосовано методи обробки зображень у цілісній програмі для виділення простих геометричних фігур на зображенні. Оглянути вже готові рішення комп’ютерного зору. |
| URI: | https://er.chdtu.edu.ua/handle/ChSTU/6391 |
| Appears in Collections: | 123 Комп’ютерна інженерія (Спеціалізовані комп’ютерні системи) |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| М_123_2025_Ковіня.pdf Restricted Access | 3.95 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ І СИСТЕМ
КАФЕДРА РОБОТОТЕХНІКИ ТА СПЕЦІАЛІЗОВАНИХ КОМП’ЮТЕРНИХ
СИСТЕМ
Пояснювальна записка
до кваліфікаційної роботи
освітнього ступеню «магістр»
на тему: СИСТЕМИ ОБРОБКИ ЗОБРАЖЕНЬ У РЕАЛЬНОМУ ЧАСІ НА
ОСНОВІ ГЛИБОКИХ ЗГОРТКОВИХ НЕЙРОННИХ МЕРЕЖ ”
Виконав: студент 2 курсу,
групи МСКС-2407
спеціальності
123 Комп’ютерна інженерія
освітня програма «Спеціалізовані
комп’ютерні системи»
Дмитро КОВІНЯ
(прізвище та ініціали)
Керівник Марина ЧИЧУЖКО
( прізвище та ініціали)
Рецензент
(прізвище та ініціали)
Захист дозволяю:
зав. кафедри, д.т.н., професор Валентина ЛУКАШЕНКО
(підпис) (ім’я та ПРІЗВИЩЕ)
Черкаси 2025 року
2
ЗМІСТ
ПЕРЕЛІК СКОРОЧЕНЬ ТА УМОВНИХ ПОЗНАЧЕНЬ ............................... 3
ЗАГАЛЬНА ХАРАКТЕРИСТИКА РОБОТИ .................................................. 4
РОЗДІЛ 1. ПІДХОДИ ДО ОБРОБКИ ЗОБРАЖЕННЯ У ЗАДАЧАХ
КОМП'ЮТЕРНОГО БАЧЕННЯ ....................................................................... 8
1.1 ПОСТАНОВКА ЗАДАЧІ ВИДІЛЕННЯ КОНТУРІВ НА ЗОБРАЖННІ .................... 10
1.2 АНАЛІЗ АЛГОРИТМІВ, ЩО ВИКОРИСТОВУЮТЬСЯ ДЛЯ ВИДІЛЕННЯ КОНТУРІВ
ОБ’ЄКТІВ У ЗОБРАЖЕННЯХ ............................................................................... 12
1.3 МОДИФІКОВАНИЙ АЛГОРИТМ ВИДІЛЕННЯ КОНТУРІВ ................................ 13
РОЗДІЛ 2. СКЛАДНІ ФІЛЬТРИ .................................................................... 16
2.1 ЛІНІЙНІ ФІЛЬТРИ ........................................................................................ 16
2.2 ФІЛЬТРУВАННЯ НА ОСНОВІ УПОРЯДКУВАННЯ ........................................... 21
2.3 ФІЛЬТРУВАННЯ З ВИКОРИСТАННЯМ НОРМАЛЬНОГО РОЗПОДІЛУ .............. 26
2.4 ПОПЕРЕДНЯ ОБРОБКА ЗОБРАЖЕННЯ ........................................................... 43
РОЗДІЛ 3. МЕТОДИ ОБРОБКИ ЗОБРАЖЕНЬ ............................................ 56
3.1 ВИЗНАЧЕННЯ КРАЇВ ТА ЛІНІЙ У ЦИФРОВИХ ЗОБРАЖЕННЯХ ....................... 56
3.2 ЗАСТОСУВАННЯ ДІАГРАМ ВОРОНОГО ДО АНАЛІЗУ ЗОБРАЖЕННЯ .............. 61
3.3 МЕТОДИ ПОШУКУ ЛІНІЙ НА ЗОБРАЖЕННІ З ВИКОРИСТАННЯМ ГРАДІЄНТІВ
......................................................................................................................... 67
РОЗДІЛ 4. АНАЛІЗ СУЧАСНИХ СИСТЕМ КОМП’ЮТЕНОГО ЗОРУ ... 70
4.1 TESLA AUTOPILOT ...................................................................................... 70
4.2 JOHN DEERE'S SEE & SPRAY ....................................................................... 72
4.3 GOOGLE DEEPMIND'S AI FOR EYE DISEASE DETECTION ............................ 75
ВИСНОВКИ ...................................................................................................... 78
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ........................................................ 80
ПЕРЕЛІК СКОРОЧЕНЬ ТА УМОВНИХ ПОЗНАЧЕНЬ
АС – Автоматизована система
БД – База даних
ЗУ – Засоби управління
ІАФ – Ідентифікація та автентифікація
ІД – Ідентифікатор доступу
ОС – Операційна система
ПЗ – Програмне забезпечення
СЗІ – Система захисту інформації
СКУД – Система контролю та управління доступом
ТЗЗБ – Технічні засоби забезпечення безпеки
3
ЗАГАЛЬНА ХАРАКТЕРИСТИКА РОБОТИ
Актуальність теми
Розпізнавання простих геометричних фігур на зображеннях дуже
поширене в ряді задач, тому що такі фігури часто наявні у середовищі,
створеному людиною. Для цієї задачі останнім часом відкрилася ще одна
область – мобільні сенсорні пристрої. У деяких додатках та іграх потрібно
розпізнавати примітивні фігури, що зчитуються з екрану в результаті
проведення по ньому маніпулятором.
Одним із актуальних напрямків сучасної прикладної науки є
активне впровадження комп'ютерних технологій у медицині. Зокрема,
використання спеціалізованих програмних засобів дозволяє здійснювати
діагностику пацієнтів, швидко обробляти інформацію та обмінюватися
даними, а також навчати майбутніх фахівців. Виділення контурів і
фільтрація зображень є надзвичайно важливими для високоточних
медичних операцій, таких як хірургічні втручання на серці та головному
мозку, де потрібна максимальна точність і розуміння місця проведення
процедур, щоб уникнути шкоди пацієнту.
Алгоритми виділення об'єктів на зображеннях можуть
застосовуватися у різних сферах. Наприклад, вони корисні під час роботи
з архівами фотознімків, створення каталогів товарів для роздрібної
торгівлі, медичної діагностики захворювань, запобігання злочинам та
заворушенням, а також контролю за вмістом великих масивів зображень.
Деякі компанії розробляють програмні продукти, що використовують ці
алгоритми для фільтрації вмісту веб-сторінок, забезпечуючи таким чином
безпеку та ефективність в інтернет-середовищі.
Дослідженням систем обробки зображень у реальному часі на
основі глибоких згорткових нейронних мереж присвячені роботи відомих
вітчизняних та зарубіжних вчених, таких як Каленіченко Дмитро, Редмон
4
Джозеф, Фархаді Алі, Бочковський Олексій, Гіршик Росс, Рен Шаочінг та
багатьох інших.
Загалом, комп'ютерні технології стають невід'ємною частиною
медичної галузі, сприяючи підвищенню точності та швидкості медичних
процедур, а також забезпечуючи високий рівень навчання для нових
фахівців.
Актуальність теми даної кваліфікаційної роботи магістра
підтверджується широким спектром застосувань алгоритмів
розпізнавання та обробки зображень у різних галузях. Розпізнавання
простих геометричних фігур є ключовим завданням у мобільних
сенсорних пристроях, що використовуються у додатках та іграх. У
медицині комп'ютерні технології з спеціалізованим програмним
забезпеченням відіграють важливу роль у діагностиці, обробці даних та
навчанні, а також у проведенні високоточних операцій на серці та
головному мозку, де необхідна максимальна точність. Крім того,
алгоритми виділення об'єктів на зображеннях використовуються для
організації архівів, створення каталогів, медичної діагностики,
запобігання злочинам, контролю вмісту зображень та фільтрації веб-
сторінок, що підкреслює важливість та актуальність цієї теми.
Мета і задачі дослідження. Метою роботи є дослідити та
розробити систему обробки зображень у реальному часі з використанням
глибоких згорткових нейронних мереж, що забезпечує високу точність
розпізнавання та швидкодію за мінімальних обчислювальних витрат.
Для реалізації поставленої мети слід вирішити наступні завдання:
- провести аналіз сучасних підходів та методів обробки зображень у
реальному часі;
5
- описати алгоритм обробки зображення та послідовність кроків
обробки зображення для виділення на зображенні об’єктів різної форми,
які можна представити простими геометричними фігурами;
- реалізувати алгоритми обробки зображення;
- застосувати методи обробки зображення у програмному засобі для
виділення простих геометричних фігур на зображенні.
Об’єкт дослідження – процес обробки та аналізу зображень.
Предмет дослідження – система обробки зображень у реальному
часі на основі глибоких згорткових нейронних мереж.
Методи дослідження базуються на використанні методів
математичного моделювання, машинного навчання, глибокого навчання
на основі згорткових нейронних мереж, методи цифрової обробки
зображень.
Новизна отриманих результатів:
− проведено аналіз існуючих систем обробки зображень у
реальному часі та обрано найбільш доцільну для реалізації програмного
додатка.
− отримав подальший розвиток метод обробки зображення для
виділення простих геометричних фігур.
Практичне значення одержаних результатів полягає в доведенні
отриманих наукових результатів до конкретних інженерних рішень:
− запропоновано алгоритми обробки зображення що дозволяє
виділення простих геометричних фігур;
− створено програмний засіб на основі розробленого алгоритму
6
для виділення простих геометричних фігур.
Апробація результатів роботи. Результати роботи доповідалися й
обговорювалися на студентській науковій конференції:
− дні студентської науки ЧДТУ, 23 квітня, м. Черкаси,
Україна, 2025.
Структура та обсяг випускної роботи. Кваліфікаційна робота
магістра складається із загальної характеристики роботи, 4 розділів,
висновків та списку використаних джерел. Робота викладена на
83 сторінках. Ілюстрована 40 рисунками та має 5 таблиць. Список
використаних джерел містить 41 найменування.
7
РОЗДІЛ 1.
ПІДХОДИ ДО ОБРОБКИ ЗОБРАЖЕННЯ У ЗАДАЧАХ
КОМП'ЮТЕРНОГО БАЧЕННЯ
Алгоритми, методи та програмні інструменти для пошуку
зображень зародилися у сферах обробки сигналів, комп'ютерного зору та
статистики. Найбільш популярними методами опису змісту зображень,
які використовуються для подальшого їх порівняння, є колір, текстура та
форма. Ці методи не прив'язані до жодного конкретного підкласу систем і
широко застосовуються в різних контекстах. Одним із поширених видів
пошуку зображень є пошук за колірними складовими, що виконується
переважно шляхом порівняння точкових або гістограмних колірних
характеристик.
Пошук за текстурними ознаками використовує структури даних, які
містять інформацію про текстуру та її розташування на зображенні.
Текстуру зазвичай представляють як двомірний масив змін яскравості.
Інший різновид пошуку включає опис геометричної форми окремих
регіонів зображення. Для цього регіони спочатку проходять через процес
сегментації або виділення контурів об’єктів.
Процес пошуку зображень, схожих на задане, складається з кількох
етапів. Спочатку створюється опис зображення, яке виступає зразком для
пошуку. Потім цей опис порівнюється з аналогічними описами всіх
зображень, що вже є в колекції, з метою виділення тих, які мають схожі
характеристики. Виділення контурів у зображенні виконується на етапі
створення опису його вмісту. Час, витрачений на виділення контурів,
впливає на загальний час виконання пошуку.
На час пошуку також впливають часові витрати на порівняння
описів вмісту зображень. Тому алгоритм виділення контурів має бути
високошвидкісним і створювати компактний опис контуру, придатний
8
для подальшого порівняння. Це дозволяє зменшити час на порівняння та
підвищити загальну ефективність процесу пошуку зображень. Таким
чином, оптимізація алгоритмів виділення контурів є важливим аспектом
розвитку технологій пошуку зображень, забезпечуючи швидкість та
точність у різних застосуваннях, від медичної діагностики до контролю за
вмістом веб-сторінок. На сьогодні послідовність процедур обробки
зображень прийнято розглядати відповідно до так званої парадигми
Марра [3]. Ця парадигма, запропонована Д.Марром на основі тривалого
вивчення механізмів зорового сприйняття людини, стверджує, що обробка
зображень спирається на кілька послідовних рівнів висхідної
інформаційної лінії "іконічне уявлення об'єктів (растрове зображення,
неструктурована інформація) - символічне уявлення (векторні і
атрибутивні дані в структурованій формі, реляційні структури) "і повинно
здійснюватися за модульним принципом за допомогою наступних етапів
обробки:
⎯ передобробка зображення;
⎯ первинна сегментація зображення; виділення геометричної
структури видимого поля;
⎯ визначення відносної структури і семантики видимої сцени.
Пов'язані з цими етапами рівні обробки зазвичай називаються
обробкою нижнього, середнього і високого рівнів, відповідно. Алгоритми
нижнього рівня обробки, такі як фільтрація простих шумів і гістограмна
обробка, вважаються добре вивченими та опрацьованими. Проте,
алгоритми середнього рівня, зокрема сегментація, залишаються
центральним напрямком дослідницьких зусиль. Останніми роками було
досягнуто значного прогресу в задачах зіставлення точок і фрагментів
зображень (matching), виділення ознак у малих фрагментах,
високоточного 3D-позиціонування точок, що включає моделювання та
9
калібрування датчиків і їх комбінацій, а також виділення простих яскраво-
геометричних структур, таких як "точка", "край", "пляма", "пряма лінія"
та "кут". Ці первинні особливості зображення, відомі також як характерні
риси, відіграють ключову роль у побудові яскраво-геометричних моделей
об'єктів.
Якщо говорити про методи і алгоритми виявлення складних
об'єктів, то одна з центральних проблем, що відрізняють методи обробки
зображень від добре вивченої теорії обробки сигналів, полягає в розробці
методів виявлення об'єктів, слабо чутливих до різноманітних видів
мінливості, характерним лише для зображень. Такими специфічними
видами мінливості є ракурси і радіометричні спотворення, а також різні
види спотворень, що не зводяться до імовірнісних моделей.
Були запропоновані як безліч евристичних алгоритмів виявлення
конкретних типів об'єктів, так і ряд підходів, що володіють більшою
спільністю: методи кореляційного виявлення перетворення Хафа
морфологічні підходи Питьева і Серра. Значний внесок у розробку
методів і алгоритмів обробки зображень і машинного зору стосовно
обговорюваних завданням виявлення внесли роботи Л.П.Ярославского,
В.К.Злобіна, В.Л.Лёвшіна, Р.Хараліка, Е.Девіса, Р.Неватіа, Е.Дікманнса,
В.Фёрстнера і багатьох інших.
Однак, незважаючи на досягнуті результати, загальний стан
проблеми виділення та ідентифікації складнострукурованих об'єктів на
моноскопіческіх зображеннях можна охарактеризувати як незадовільний.
Ще складніше виглядає завдання виявлення тривимірних структур на
стереоскопічних зображеннях. [1]
1.1 Постановка задачі виділення контурів на зображнні
Задача виділення контурів зазвичай формулюється як побудова
зображення кордонів об'єктів і однорідних областей. Коли виділення
10
контурів виконується для пошуку зображень, першочергове завдання
полягає у створенні опису контуру, придатного для подальшого
порівняння. Традиційно контуром називають сукупність пікселів, навколо
яких спостерігається зміна функції яскравості. Оскільки при цифровій
обробці зображення представляється як функція з цілочисельними
аргументами, контури утворюються лініями шириною щонайменше в
один піксель. Надалі, для скорочення обсягу пам'яті, необхідної для
зберігання опису зображення, розглядатимемо контур як сукупність
суміжних прямолінійних відрізків. Нехай вхідне зображення I
представляє собою прямокутну матрицю розміром M*N, де елементами є
кольори відповідних пікселів зображення, а M і N – це ширина і висота
зображення відповідно. Зображення I є сукупністю K фрагментів (вікон).
(1)
Далі, нехай існує F– алгоритм, за допомогою якого виділяються
контури об’єктів, що містяться в зображенні I. Алгоритм працює з певним
вікном W. Позначимо результат обробки зображення I алгоритмом F як А:
A=F(I) (2)
A задає собою множину, кожен елемент якої описує прямолінійний
відрізок, що є фрагментом контуру:
(3)
де -кутовий коефіцієнт прямої, -відстань до середини вікна
Таким чином, задача виділення контурів може розглядатися як задача
отримання множини A для деякого зображення I шляхом виконання
алгоритму F при фіксованому розмірі вікна .
11
1.2 Аналіз алгоритмів, що використовуються для виділення
контурів об’єктів у зображеннях
Алгоритми виділення контурів можна умовно розбити на три групи:
алгоритми відслідковування, алгоритми сканування та їх комбінації.
Алгоритми відслідковування засновані на тому, що на зображенні
відшукується об'єкт (перша точка об'єкта, що зустрілася) і контур об'єкта
описується сукупністю векторів. Простежування контурів є послідовним
процесом, у якому помилка, допущена на будь-якому кроці цього
процесу, робить більш імовірними помилки й на наступних кроках. Тому
алгоритми простежування контурів можуть застосовуватися тільки на
зображеннях з низьким рівнем шуму. Перевагою даних алгоритмів є
простота, до недоліків можна віднести послідовну реалізацію й деяку
складність при пошуку та обробці внутрішніх контурів . Прикладами
таких алгоритмів є алгоритм «жука», метод активних контурів , метод
Canny (оптимальний детектор краю) [3].
Алгоритми сканування засновані на перегляді усього зображення й
виділенні контурних точок без прив’язки до попередніх точок контуру.
Комбінація методів відслідковування й сканування полягає у тому,
що спочатку в результаті скануючого перегляду зображення здійснюється
його попередня розмітка.
З точки зору розміру оброблюваного зображення можна розділити
алгоритми на два великих класи за ознакою розміру оброблюваної
області. Перша група розбиває зображення на окремі частини й обробляє
їх окремо. До неї можна віднести локальні алгоритми виявлення
перепадів яскравості, алгоритм «Snakes on the Watershed».[4]
Друга група передбачає обробку всього зображення. До неї
належать алгоритми жука, активних контурів, Canny. Другу групу так
само можна розділити на дві підгрупи за типом обробки зображення –
12
комплексні й послідовні алгоритми. Перші припускають обробку всього
зображення відразу (це метод активних контурів, метод Canny), а другі –
послідовну (попіксельну) обробку зображення (алгоритм «жука»).З точки
зору кількості контурів, що виділяються алгоритмом, також можна
вирізнити дві підгрупи алгоритмів. До алгоритмів, які можуть виявляти на
зображенні кілька контурів об'єктів, що не перетинаються, належать
алгоритми Canny, «Snakes on the Watershed», алгоритм Перова,
нейромережевий алгоритм. Тільки один контур можуть виявити
алгоритми «жука», активних контурів і динамічного програмування. [5]
1.3 Модифікований алгоритм виділення контурів
Для реалізації процедури виділення контуру за допомогою
нейронної мережі була прийнята наступна модель. На вхід нейронної
мережі подається зображення вікна спостереження розміром M*N. Це
зображення задовольняє наступним вимогам:
а) зображення завжди містить елемент контуру, тобто в будь-якому
представленому зображенні міститься границя перепаду яскравостей
об'єкта й фона;
б) на зображенні є лише один контур;
в) на зображенні може бути присутнім адитивний шум Гаусса, що
перешкоджає правильній роботі алгоритму. Щоб дотриматися вимог до
вікна зображення, рекомендується виконати знаходення попереднього
контуру більш швидким і грубим методом, після чого знайдене
наближення контуру розбити на ділянки для уточнення на нейромережі
[6].
Для попереднього визначення контурів використовується
комбінація кількох етапів алгоритму Canny. Спочатку виконується
згладжування шуму в початковому зображенні за допомогою згортки з
матрицею, що має гауссовий розподіл елементів. Далі застосовується
13
оператор Собеля, який виконує двомірне знаходження градієнта
зображення. Для цього використовуються дві матриці розміром 3x3 для
обчислення горизонтального (Gx) і вертикального (Gy) градієнтів.
Результати двох градієнтів комбінуються за формулою:
(4)
Після цього виконується порогове претворення з метою усунення
переривчастості контуру. На виході алгоритму необхідно отримати
основні параметри прямої, що апроксимує границю перепаду яскравості.
Вхідним
сигнал нейтронної мережі є вектор , де =0,1,
він представляє собою квадратний фрагмент бінаризованого зображення,
що містить елемент контуру.
Вихідний сигнал: kb = , де k–кут нахилу прямої, що апроксимує
даний елемент коду, b–відстань прямої до центру фрагмента. При цьому
k=0 відповідає куту . Значення b=0 відповідає відстані, рівній 0, а b=1
відповідає стороні фрагмента, поділеній на .
Нейронна мережа являє собою двошаровий персептрон, перший
шар якого складається з 10 нейронів, а другий –з 2 нейронів. Кожен з
нейронів першого шару пов'язаний з кожним елементом другого шару.
Кожен елемент вхідної множини подається на кожен з нейронів першого
шару. Функція активації нейронів логістична, описується формулою:
(5)
Функція помилки визначає різницю між фактичним і бажаним
значеннями вихідного сигналу.
14
Система якості вимагає, щоб налаштування нейронної мережі
тривало до тих пір, поки обидва компоненти функції помилки одночасно
не досягнуть заданої точності. Навчання нейронної мережі здійснюється
за допомогою алгоритму зворотного поширення помилки.
15
РОЗДІЛ 2.
СКЛАДНІ ФІЛЬТРИ
2.1 Лінійні фільтри
У лінійних просторових фільтрах отримуються відфільтровані
значення цільових пікселів за допомогою лінійних комбінацій значень
пікселів у сусідстві n × m. Цільовий піксель розташований в центрі.
Лінійна комбінація значень сусідніх пікселів визначається ядром
фільтра або маскою. Ядро фільтра - масив того ж розміру, що і
сусідство, що містить ваги, які призначаються для пікселів навколо
цільового пікселя. Лінійний просторовий фільтр зчіплює значення ядра
та сусідніх пікселів, щоб отримати новий цільовий піксель. Нехай w -
це ядро e×3 і нехай g (x, y) є цільовим пікселем в області 3 × 3 , потім
отримано нове значення цільового пікселя як суму поелементного
добутку векторів рядків. Для пар 1 × n векторів a, b одного розміру
точка являє собою суму значень у відповідних позиціях, тобто :
(6)
Після вибору ядра 3 × 3 значення обраного пікселя g (x, y) в
області 3 × 3 цифрового зображення g обчислюється за формулою:
(7)
Наприклад:
(8)
Ядро w називається маскою Собеля і використовується у
виявленні краю на зображеннях. У Matlab значення цільового пікселя
16
цільового n (2, 2) для заданого масиву 3 × 3 можна обчислити за
допомогою функції двокрапки.
Лістинг 1
w = [ 1 0 -1; 2 0 -2; 1 0 -1 ];
n = [ 1 2 3; 4 5 6; 7 8 9 ] ;
p1 = dot( w( 1,: ),n( 1,: ) );
p2 = dot( w( 2,: ),n( 2,: ) );
p3 = dot( w( 3,: ),n( 3,: ) );
t = ( p1 + p2 ) + p3;
Алгоритм згортки ядра із зображенням сусідства
(Крок 1) Визначити n × n фільтр ядра k.
(Крок 2) Просувати ядро на n × n cусідів
(Крок 3) Помножити значення пікселів на відповідні ваги ядра.
Додати значення отримані з кожного рядка.
(Крок 4) Змінити початкове цільове значення на нове
відфільтроване значення і повернутися до кроку 3.
Використовуючи те, що називається анонімною функцією @, ядро
може бути визначено в Matlab в термінах операції op, таких як max,
median, min, таким чином.
(9)
Nlfilter (фільтр для зсуву по сусідству) фільтрує зображення з точки
зору сусідства n × n та ядра (наприклад, основний підхід полягає в тому,
щоб обчислити значення цільового пікселя в області, замінивши вихідне
цільове значення пікселя на середнє значенням ядра).
Лістинг 2
% --- зчитування зображення та конвертація у відтінки
сірого --------------
filename = 'bee-polen.jpg';
g = rgb2gray( imread( [ 'pictures/' filename ] ) );
% відображення результатів
subplot( 1,4,1 );
imshow( g );
17
subplot( 1,4,2 );
imhist( g );
% --- виконання фільтрації з використанням функції
nfilter ----------------
% налаштування фільтра
func = @( x )median( x( : ) );
% func = @( x )max( x( : ) );
% func = @( x )( uint8( mean( x( : ) ) ) );
% виконання фільтрації
h = nlfilter( g,[ 3 3 ],func );
% відображення результатів
subplot( 1,4,3 );
imshow( h );
title( 'nlfilter(g,[3 3],func)' );
subplot( 1,4,4 );
imhist( h );
Рис. 2.1. Median фільтр cameraman.tif
18
Основна ідея лінійної фільтрація зсуву полягає в тому, щоб
використовувати fspecial для побудови різних лінійних згорток ядра
з'єднань. Для ілюстрації розглянуто побудову ядра, що імітує ефект
розмиття руху. Його можна досягти або шляхом фотографування об'єктів,
що швидко рухаються, стоячи нерухомо або безперервно знімаючи
зображення під час руху камери.
Ефект розмивання руху можна змінювати з різним вибором
довжини пікселя і стрілки кута руху проти годинникової стрілки (за
fspecial встановлюється певне ядро розмивання двигуна). На рисунку
рис.2 глобальне розмивання двигуна показано на картині медової бджоли.
Рис. 2.2. Фільтр розмиття медової бджоли
Лістинг 3
% --- зчитування зображення -----------------------------
------------------
filename = 'bee-polen.jpg';
g = imread( [ 'pictures/' filename ] );
% виведення початкового зображення
subplot( 1,2,1 );
imshow( g );
title( 'початкове зображення' );
% --- налаштування ядра ---------------------------------
------------------
kernel = fspecial( 'motion',50,45 );
19
% len = 20, CCangle = 45;
% --- виконання фільтрації ------------------------------
------------------
h = imfilter( g,kernel,'symmetric' );
% відображення результату
subplot( 1,2,2 );
imshow( h );
title( 'fspecial( motion,20,45 )' );
Основний підхід, що використовує функція roifilt2, наведено в
Лістингу 4, з точки зору несистемної фільтрації однієї з монет, показаних
на рисунку 2.3.
Лістинг 4
% --- зчитування зображення та конвертація у відтінки
сірого --------------
filename = 'bitcoin.jpg';
I = rgb2gray( imread( [ 'pictures/' filename ] ) );
% --- налаштування області інтересу ---------------------
------------------
c = [ 222 272 300 270 221 194 ];
r = [ 21 21 175 221 221 75 ];
% --- обробка області -----------------------------------
------------------
% область, що розглядається
BW = roipoly( I,c,r );
% різкість зображення
H = fspecial('unsharp');
% виконання фільтрації
J = roifilt2( H,I,BW );
% виведення результатів
subplot( 1,2,1 );
imshow( I );
title( 'roi = виділена червоною рамкою');
hold on
plot([ c c(1) ],[ r r(1) ],'r-' );
hold off
subplot( 1,2,2 );
imshow( I );
title( 'filtered roi = виділена червоною рамкою' );
hold on
plot([ c c(1) ],[ r r(1) ],'r-' );
hold off
20
Рис. 2.3. Регіон інтересів
2.2 Фільтрування на основі упорядкування
Mean фільтр (середній фільтр) - найпростіший з лінійних фільтрів.
Ця форма фільтрації дає однакову вагу для всіх пікселів у районі n × m, де
вага w визначається як
(10)
Наприклад, в районі 3 × 3, . Кожне значення пікселя p у
образі замінюється середнім значенням пікселів з n × m району p.
Кінцевим результатом середньої фільтрації є згладжування зображення.
Після того, як встановлено середнє ядро фільтра, функція imfilter
використовується для здійснення середньої фільтрації зображення.
Лістинг 5
% --- зчитування зображення -----------------------------
------------------
filename = 'forest.jpg';
g = imread( [ 'pictures/' filename ] );
% відображення вхідного зображення
subplot( 2,3,1 );
imshow( g );
title( filename );
21
% --- накладання шуму 'salt & pepper' та виведення
результату -------------
nsp = imnoise( g,'salt & pepper',0.05 );
subplot( 2,3,2 );
imshow( nsp );
title( 'шум "salt & pepper"' );
% --- накладання шуму 'localvar' та виведення результату
------------------
g = im2double( g );
v = g( :,:,: );
np = imnoise( g,'localvar',v );
subplot( 2,3,3 );
imshow( np );
title( 'шум "localvar"' );
% --- виконання фільтрації на основі фільтру mean -------
------------------
kernel = ones( 3,3 ) / 9;
g1 = imfilter( g,kernel );
g2 = imfilter( nsp,kernel );
g3 = imfilter( np,kernel );
% відображення результатів
subplot( 2,3,4 );
imshow( g1 );
title( 'фільтроване зображення' );
subplot( 2,3,5 );
imshow( g2 );
title( 'фільтроване зображення' );
subplot( 2,3,6 );
imshow( g3 );
title( 'фільтроване зображення' );
22
Рис. 2.4. Mean фільтр
Медіана фільтрації є більш ефективною, ніж середня фільтрація.
Кожне піксельне значення p у зображенні замінюється середнім
значенням від n × m району р. Ця форма фільтрації зберігає край
зображення, у той час як усуваються шумові коливання у значеннях
пікселів зображення. Замість того, щоб настроїти ядро фільтра, як при
середній фільтрації, функція medfilt2 використовується для здійснення
медіанної фільтрації в межах n × m зображення сусідства.
Лістинг 6
% --- зчитування зображення та конвертація у відтінки
сірого --------------
filename = 'forest.jpg';
g = rgb2gray( imread( [ 'pictures/' filename ] ) );
% відображення вхідного зображення
subplot( 2,3,1 );
imshow( g );
title( filename );
% --- накладання шуму 'salt & pepper' та виведення
результату -------------
nsp = imnoise( g,'salt & pepper',0.05 );
23
subplot( 2,3,2 );
imshow( nsp );
title( 'шум "salt & pepper"' );
% --- накладання шуму 'localvar' та виведення результату
------------------
g = im2double( g );
v = g( :,: );
np = imnoise( g,'localvar',v );
subplot( 2,3,3 );
imshow( np );
title( 'шум "localvar"' );
% --- виконання фільтрації на основі фільтру median -----
------------------
g1 = medfilt2( g,[ 3 3 ] );
g2 = medfilt2( nsp,[ 3 3 ] );
g3 = medfilt2( np,[ 3 3 ] );
% відображення результатів
subplot( 2,3,4 );
imshow( g1 );
title( 'фільтроване зображення' );
subplot( 2,3,5 );
imshow( g2 );
title( 'фільтроване зображення' );
subplot( 2,3,6 );
imshow( g3 );
title( 'фільтроване зображення' );
24
Рис. 2.5 . Median фільтр для зображення
Медіанна фільтрація - це особливий випадок, що називається
фільтрацією сортування за замовчуванням. Максимальний фільтр
замовлень вибирає максимальне значення в певному районі. Аналогічним
чином, мінімальний фільтр замовлень обирає мінімальне значення в
певному районі.
(11)
Функція ordfilt2 виконує фільтрування порядку, використовуючи
синтаксис, замінює кожне значення пікселя в зображенні g за
замовчуванням значення пікселя у упорядкованому наборі сусідів,
вказаних ненульовими значеннями пікселів у домені. Використовуючи
фільтр максимального замовлення на g = forest.tif з сусідством 5 × 5
(12)
25
Щоб реалізувати мінімальний фільтр замовлень на g = forest.tif з
сусідством 5×5
(13)
Лістинг 7
g1 = ordfilt2( g,25,ones( 5,5 ) );
g2 = ordfilt2( nsp,25,ones( 5,5 ) );
g3 = ordfilt2( np,25,ones( 5,5 ) );
Рис. 2.6. Максимальне замовлення фільтрування зображення
2.3 Фільтрування з використанням нормального розподілу
Нехай x позначає піксельну інтенсивність цифрового зображення g,
середню інтенсивність пікселя зображення, а σ - стандартне відхилення
інтенсивності пікселя. Дискретною формою нормального розподілу
інтенсивностей пікселів є гауссова функція f: X → R
26
(14)
Для проведення нормальної фільтрації розподілу за допомогою
спеціальної функції необхідно вибрати ядро n × m (зазвичай, n = m) і
стандартне відхилення σ.
Лістинг 8
% --- зчитування зображення -----------------------------
------------------
filename = 'forest.jpg';
g = imread( [ 'pictures/' filename ] );
% виведення початкового зображення
subplot( 2,3,1 );
imshow( g );
title( filename );
% --- накладання шуму 'salt & pepper' та виведення
результату -------------
nsp = imnoise( g,'salt & pepper',0.05 );
% nsp = imnoise( g,'salt&pepper',0.15 );
subplot( 2,3,2 );
imshow( nsp );
title( 'шум "salt & pepper"' );
% --- накладання шуму 'localvar' та виведення результату
------------------
g = im2double( g );
v = g( :,:,: );
np = imnoise( g,'localvar',v );
subplot( 2,3,3 );
imshow( np );
title( 'шум "localvar"' );
% --- виконання фільтрації на основі Гаусіану -----------
------------------
lowpass = fspecial( 'gaussian',[ 5 5 ],2 );
g1 = imfilter( g,lowpass );
g2 = imfilter( nsp,lowpass );
g3 = imfilter( np,lowpass );
% відображення результатів
subplot( 2,3,4 );
imshow( g1 );
title( 'фільтроване зображення' );
27
subplot( 2,3,5 );
imshow( g2 );
title( 'фільтроване зображення' );
subplot( 2,3,6 );
imshow( g3 );
title( 'фільтроване зображення' );
Рис. 2.7. Максимальне замовлення фільтрування зображення
Подвійний точний лапласовий фільтр
Лістинг 9
% --- зчитування зображення та конвертація у відтінки
сірого --------------
filename = 'circuit.jpg';
g = rgb2gray( imread( [ 'pictures/' filename ] ) );
% --- виконання фільтрації з різними ядрами -------------
------------------
gr = edge( g,'roberts' );
gp = edge( g,'prewitt' );
gs = edge( g,'sobel' );
% відображення результатів
28
subplot( 2,3,1 );
imshow( g );
title( filename );
subplot( 2,3,2 );
imshow( ~gr );
title( 'фільтр Робертса' );
subplot( 2,3,3 );
imshow( ~gp );
title( 'фільтр Прюітта' );
subplot( 2,3,4 );
imshow( ~gs );
title( 'фільтр Собеля' );
% --- використання Лапласіана ---------------------------
------------------
k = fspecial( 'laplacian' );
glap = imfilter( double( g ),k,'symmetric' );
glap = medfilt2( glap,[ 3 3 ] );
subplot( 2,3,5 );
imshow( glap );
title( 'Лапласіан з дійсними числами' );
% --- використання логарифмічного фільтра ---------------
------------------
k = fspecial( 'log' );
glog = imfilter( double( g ),k,'symmetric' );
glog = medfilt2( glog,[ 3 3 ] );
subplot( 2,3,6 );
imshow( glog );
title( 'логарифмічний фільтр з низьким шумом' );
Ранні спроби виявлення краю Робертсом, Превитом та Собелем
зосереджені на виявленні точок, де градієнт краю краю першого порядку
високий. Починаючи з середини 1960-х р, видимими є стрибки яскравості
виявлених Робертсом країв. Похідні апроксимації були обчислені Р.М.
Haralick або безпосередньо з значень пікселів або з локальних найменших
квадратів. Фільтри першого порядку краю, такі як фільтри Робертса,
Прейвіта та Собела, часто використовуються як крок до сегментації
цифрових зображень. Для зображень, де важливо доопрацювання краю,
29
використовуються методи фільтрації зображення другого порядку.
Загальним методом заточення краю як кроку до покращення зображення є
другий лапласовський фільтр.
Для пікселя g(x∇, y) у зображенні g недискретна форма
лапласовського фільтра 2g (x, y) визначається шляхом
(15)
Для цілей реалізації дискретна форма лапласианського фільтра ∇2g
(x, y) визначається як
(16)
Основним підходом до похідного методу другого порядку для
посилення зображення є віднімання відфільтрованого зображення з
вихідного зображення, тобто в термінах значення пікселя g (x, y),
обчислення
(17)
30
Рис. 2.8. Подвійна точність фільтра Лапласа
Лістинг 10
% --- робота з Лапласіаном ------------------------------
------------------
% налаштування ядра
k = fspecial( 'laplacian',1 );
% виконання фільтрації
h2 = imfilter( g,k );
% вилучення фільтрованого зображення з початкового
ge = imsubtract( g,h2 );
% відображення результатів
subplot( 3,1,1 );
imshow( g );
title( [ filename 'fossil' ] );
subplot( 3,1,2 );
imagesc( ~h2 );
title ( 'фільтрація Лапласіаном' );
axis image;
subplot( 3,1,3 );
imshow( ge );
title( 'покращене зображення' );
31
Рис. 2.9. Покращення зображення за допомогою фільтра Лапласа
Карл Фрідріх Гаус (1777-1895), який представив функцію ядра (або
нормальний розподіл), названу на його ім'я. Нехай x, y є лінійно
незалежними, випадковими дійсними змінами зі стандартним
відхиленням σ і середнім μ. Мета полягає в тому, щоб показати розподіл
або значень x самостійно, або поєднаних x, y значень навколо походження
з μ = 0 для кожного експерименту. Ширина σ> 0 набору значень x або x, y
називається стандартним відхиленням і σ2 називається дисперсією. Як
правило, графік набору значень вибірки з нормальним розподілом має
форму кривої дзвоника (також називають нормальною кривою,
розташованою навколо середини значень).
Коли всі від'ємні значення x, y представлені їхніми абсолютними
значеннями, тоді гауссові значення називаються складчастим нормальним
розподілом. Існує дві форми гауссового ядра, які слід розглянути.
32
Ядро Гаусса 1D. Якщо розглядати лише значення вибірки x зі
стандартним відхиленням σ та середнім μ = 0, то функція ядру 1D
(позначена f (x; σ)) визначається шляхом
(18)
2D Гауссовське ядро Якщо розглядати значення вибірки x та y зі
стандартним відхиленням σ і означати μx = 0, μy = 0, то функція 2D
Gaussian ядра (позначена f (x, y; σ)) визначається
(19)
Приклад.
Безперервні та дискретні 2D-гауссові ділянки ядра наведені на рис..
Дискретний графік виходить з дискретних значень. За дискретністю ми
мається на увазі, чіткі, відокремлені. У цьому прикладі дискретні
значення використовуються для отримання графіка на рис. Рис для менш
відокремлених значень і, отже, має безперервний вигляд, навіть якщо
графік витягується з дискретних значень.
Лістинг 11
% --- налаштування параметрів ---------------------------
------------------
rng( 'default' );
nos = randn( 1,100 );
fineness = mean( nos ) * 5;
FWHM = 4;
sig = FWHM / sqrt( 8*log( 2 ) );
Dim = [20 20];
% --- розрахунок значень для двовимірного Гаусіана ------
------------------
% fineness = 0.55;
33
[ x2d,y2d ] = meshgrid( -( Dim(2)-1 )/2 : ...
fineness : ...
( Dim(2)-1 )/2, ...
-( Dim(1)-1 )/2 : ...
fineness : ...
( Dim(1)-1 )/2 );
gf = exp( -(x2d.*x2d+y2d.*y2d)/(2*sig*sig) );
gf = gf / sum( sum( gf ) ) / ( fineness^2 );
% виведення результату
figure
colormap hsv
surfc( x2d + Dim( 1 )/2,y2d + Dim( 2 )/2,gf );
legend( 'f(x,y,sigma=1.6986)','Location','NorthEast' );
% --- розрахунок значень для дискретного гаусіана -------
------------------
beta = 1;
brighten( beta );
% дискретне ядро на основі двовимірного Гаусіана
[ x2d,y2d ] = meshgrid( -( Dim( 2 )-1 )/2 : ...
( Dim( 2 )-1)/2,-( Dim( 1 )-1)/2 :
...
( Dim( 1 )-1)/2 );
gf = exp( -(x2d.*x2d + y2d.*y2d) / (2*sig*sig) );
gf = gf / sum( sum( gf) );
% виведення результату
figure
bar3( gf,'r' );
legend( 'f(x,y,sigma=1.6986)','Location','NorthEast' );
axis( [ 0 Dim( 1 ) 0 Dim( 2 ) 0 max( gf( : ) )*1.2 ] );
axis xy
34
Рис. 2.10. 2D Гаусове ядро
Рис. 2.11. 2D Гаусове ядро
Нехай x, y - координати пікселя у 2D-образі Img, Img (x, y)
інтенсивність пікселя, розташованого на (x, y), а σ - стандартне
відхилення інтенсивності пікселя відносно середньої інтенсивності
пікселів в околиці Img. Припущення, зроблене тут, полягає в тому, що σ -
35
це стандартне відхилення розподілу імовірності інтенсивності пікселів в
сусідстві зображень. Гауссовський фільтр (згладжування) 2D функція G
(x, y; σ) визначається як
(20)
(21)
Img(x, y) := G(x, y; σ) (G(x, y; σ) (22)
(20) – відфільтроване значення.
(21) - спрощена фільтроване значення.
(22) - замінює інтенсивність пікселів Img (x, y).
Основним підходом для фільтрації зображення тут є присвоєння
кожній інтенсивності пікселів у вибраному районі зображення
фільтроване значенням G (x, y, σ), причому σ пропорційна розміру
околиці, на якій працює гауссовий фільтр .
Приклад
Гауссова фільтрація при згладженні зображення.
Лістинг 12
% --- зчитування зображення -----------------------------
------------------
filename = 'CNTrain.jpg';
img = imread( [ 'pictures/' filename ] );
% --- вибір області зображення --------------------------
------------------
% використання інструменту вибору області
img = imcrop( img );
% відображення результату
figure;
36
imshow( img );
grid on
title( 'виділена область зображення' );
% --- розрахунок значень Гаусіана та фільтрація
зображення ----------------
% використання матриці 5 x 5, sigma = 2
G = fspecial( 'gaussian',[5 5],2 );
Ig = imfilter( img,G,'same' );
% відображення результату
figure;
imshow(Ig);
grid on;
title( 'розмите зображення: [5 5],2' );
% --- розрахунок значень Гаусіана та фільтрація
зображення ----------------
% використання матриці 3 x 3, sigma = 1.2
G2 = fspecial( 'gaussian',[3 3],1.2 );
Ig2 = imfilter( img,G2,'same' );
% відображення результату
figure;
imshow(Ig2);
grid on;
title( 'розмите зображення: [3 3],1.2' );
% --- розрахунок значень Гаусіана та фільтрація
зображення ----------------
% використання матриці 2 x 2, sigma = 0.8
G3 = fspecial( 'gaussian',[2 2],0.8 );
Ig3 = imfilter( img,G3,'same' );
% відображення результату
figure;
imshow(Ig3);
grid on;
title( 'розмите зображення: [2 2],0.8' );
37
а) початкове зображення
б) виділена область зображення в) розмите зображення [5 5]
г) розмите зображення [3 4] д) розмите зображення [2 2]
Рис. 2.12. Зображення потяга з різними фільтрами
38
Гауссівська фільтрація підрівнюваних і затуманиваних квадратних
підпрограм.
Лістинг 13
% --- зчитування зображення -----------------------------
------------------
filename = 'tissue.jpg';
img = imread( [ 'pictures/' filename ] );
% виведення зображення
figure;
imshow( img );
grid on;
axis tight;
title( filename);
% --- 2 --- вибір області зображення --------------------
------------------
% використання інструменту вибору області
img = imcrop( img );
% img = img( 125+[1:256],1:256,: ); % програмне
виділення області
% відображення результату
figure;
imshow( img );
title( 'виділена область зображення' );
% --- 3 --- розмиття виділеного зображення з використання
Гаусіана --------
% psf - функція розкидання точок
psf = fspecial( 'gaussian',11,5 );
% згортка зображення img з використанням psf
blurred = imfilter( img,psf,'conv' );
% відображення результату
figure;
imshow( blurred );
title( 'розмите зображення 1' );
% --- 4 --- накладання Гаусового шуму -------------------
------------------
% можливі значення v = 0.02, 0.002, 0.001, 0.005
v = 0.02;
blurredNoisy = imnoise( blurred,'gaussian',0.000,v );
figure;
imshow( blurredNoisy );
title( 'зашумлене зображення 1' );
39
% --- 5 --- відновлення зображення (етап 1) -------------
------------------
% рівень зашумленості
np = v * prod( size(img) );
[ reg1 LAGRA ] = deconvreg( blurredNoisy,psf,np);
% відображення результату
figure;
imshow( reg1 );
title( 'відновлене зображення 1' );
% --- 6 --- об'єднання з початковим зображенням ---------
------------------
psf2 = fspecial( 'gaussian',8,5 );
blurred2 = imfilter( img,psf2,'conv' );
% відображення результату
figure;
imshow( blurred2 );
title( 'розмите зображення 2' );
% --- 7 --- накладання шуму -----------------------------
------------------
v2 = 0.005;
blurredNoisy2 = imnoise( blurred2,'gaussian',0.001,v2 );
% відображення результату
figure;
imshow( blurredNoisy2 );
title( 'розмите зашумлене зображення 2' );
% --- 8 --- відновлення зображення (етап 2) -------------
------------------
np2 = v2*prod(size(img) );
[ reg2 LAGRA2 ] = deconvreg( blurredNoisy2,psf2,np2 );
% відображення результату
figure;
imshow( reg2 );
title( 'відновлене зображення 2' );
Альтернативою простим лапласовим фільтрам другого порядку є
другорядний лапласіан гауссового фільтра. Це впроваджено в Matlab,
використовуючи параметр log з fspecial функції.
40
a) початкове зображення б) виділена область зображення
в) розмите зображення г) зашумлене зображення
д) відновлене зображення е) розмите зашумлене
зображення
41
є) друге розмите зашумлене ж) друге відновлене зображення
зображення
Рис. 2.13. Зображення клітин з різними фільтрами
Лістинг 14
% --- зчитування зображення та конвертація у відтінки
сірого --------------
filename = 'circuit.jpg';
% g = rgb2gray( imread( [ 'pictures/' filename ] ) );
g = imread( [ 'pictures/' filename ] );
% --- налаштування фільтра та проведення фільтрації -----
------------------
k = fspecial( 'log',[ 3 3 ],0.2 ) ;
h2 = imfilter( g,k );
ge = imsubtract( g,h2 );
% відображення результатів
figure;
subplot( 3,1,1 );
imshow( g );
title( filename );
subplot( 3,1,2 );
imagesc( ~h2 );
title ( 'фільтроване зображення' );
axis image;
subplot( 3,1,3 );
imshow( ge );
title( 'перетворене зображення' );
42
Рис. 2.14. Лапласівське покращення зображення
2.4 Попередня обробка зображення
Нехай α - скаляр, такий що ∈α ∈ R. Функція (mapping) f: X → Y є
лінійною функцією, якщо для a, b X, f (a + b) = f (a) + f (b ) (властивість
аддитивності) і f(αb) = α f (b) (властивість однорідності). Наприклад,
відображення f (x) = x є лінійним, оскільки f (a + b) = a + b = f (a) + f (b) і f
(αb) = αb = α f (b). Іншими словами, графік лінійної функції - пряма. На
відміну від цього, нелінійна функція є функцією, яка має нелінійний вихід
43
(нелінійна функція не задовольняє властивості аддитивності та
однорідності лінійної функції). Крім того, графік нелінійної функції - це
крива лінія.
Рис. 2.15. Гаусове ядро f (x; σ = 0.61)
Приклад.
Зразок гауссових ділянок ядра. Нехай σ> 0 - параметр шкали, який є
стандартним відхиленням (середня відстань від середнього значення).
Вираз називається дисперсією. Середнє значення, середнє або середина
набору даних позначається μ. У цьому випадку μ = 0 .Функція гауссова
ядра f: R→ визначається як
(23)
це нелінійна функція з вигнутою плоскою ділянкою, такою як ті, що
показані на рис. 16. У визначенні функції 1D Гауссового ядра f (x; σ), x є
просторовим параметром, а σ - параметр масштабу. При зменшенні σ
44
(наприклад, з σ = 0,41 на рис 8 до σ = 0,81 на рис. 9, а потім на σ = 0,61 на
рис. 10), ширина смуги ядра гауссіани зменшується. З цієї причини σ
називається параметром ширини.
Рис. 2.16. Гаусове ядро f (x; σ = 0.41)
Рис. 2.17. Гаусове ядро f (x; σ = 0.81)
Це ядро Гаусса називається 1D (1-мірним) ядром, оскільки для
визначення ядра використовується лише один просторовий параметр, а
саме x.
Кути в цифровому зображенні забезпечують гарне джерело
сітчастих генераторів Воронного. Вона отримана з кутів зображення,
45
забезпечує сегментацію зображення. Кожен сегмент у такій сітці є
опуклим багатокутником. Мотивація для розгляду такої форми
сегментації зображення полягає в тому, що полігони сітки надають засіб:
1. Сегментація зображення. Сітки Воронного представляють
собою прямий спосіб розбиття зображення на непересічні опуклі
полігони, які полегшують аналіз зображення, а також розуміння образу.
2. Розпізнавання об'єкта. Об'ємні кути визначають відмітні
(впізнавані) опуклі многокутники, які можна розпізнати та порівнювати.
3. Розпізнавання образів. Розташування кутових випуклих
образів являє собою схему зображень, які можна розпізнати та
порівнювати.
Приклад
Сегментування кольорового зображення. Сегментація зразка
кольорового зображення показана на рисунку 11. На цьому зображенні
сітка Воронного виводяться з деяких кутів на цьому зображенні. Заднє
колесо в основному покрито 7-сторонним опуклим багатокутником.
Завдяки функціям roipoly або impoly, можна в інтерактивному
режимі вибрати багатокутну область інтересу в образі. Цей інструмент
дозволяє використовувати курсор для вибору вершин. Функція повертає
подвійне зображення, яке може використовуватися як ядро в згортці.
Приклад використання цього інструменту наведено на рис.11. Після
вибору roi, натиснувши на вершини багатокутника на зображенні, roi - це
зображення з власним правом. Зразок гістограми та bar3 (3D-графік) для
вибраного roi наведено на рис. 12.
Щоб вирішити проблему пошуку векторів c, r для roi для
зображення g, такого як та, що використовується в лістингу 9,
(24)
46
Потім перепишемо код, використовуючи roipoly, щоб отримати
вектори c, r, а не вставляти вручну вектори c, r, щоб визначити бажаний
roi.
Лістинг 15
% --- зчитування зображення та конвертація у відтінки
сірого --------------
filename = 'bee-polen.jpg';
g = rgb2gray( imread( [ 'pictures/' filename ] ) );
% --- виділення на зображенні області інтересу ----------
------------------
[ BW,r,c ] = roipoly( g );
B = roipoly( g,r,c );
% відображення результатів
figure ;
subplot( 1,3,1 );
imshow( g );
title( 'вихідне зображення' );
% subplot( 1,3,2 );
% imhist( g( B ) );
% title( 'гістограма області' );
subplot( 1,3,2 );
bar3( g,0.25,'detached' );
colormap( [ 1 0 0; 0 1 0; 0 0 1 ] );
title( 'bar3(B,detached)' );
subplot( 1,3,3 );
bar( B,'stacked' );
axis square;
title( 'bar(B,stacked)' );
% subplot( 1,3,3 );
% bar3( npix,'grouped' );
% title( 'графік bar3' );
% subplot( 1,3,3 );
% bar3( npix,’stacked’ );
% title( 'графік bar3' );
47
Рис. 2.18. Вибір регіону інтересу
Рис. 2.19. Вибір регіону інтересу
Однією з головних завдань фільтрації є поліпшення зображення,
видалення шуму. Для демонстрації основного підходу щодо видалення
шумів на зображенні, проілюстровано як шум може бути доданий, а потім
видалений з зображення.
Функція imnoise полягає у створенні шуму на зображенні. Це
робиться шляхом додавання одного з наступних типів зображення g та
використання середньої фільтрації для видалення шуму.
48
(Шум 1) 'gaussian': додає білого шуму з середнім значенням m (за
умовчанням = 0) та дисперсією v (за умовчанням = 0,01), з синтаксисом
(25)
(Шум 2) ‘localvar': додає нульовий середній гауссовський білий шум
з інтенсивністюзалежної дисперсії, з синтаксисом
(26)
(Шум 3) 'Poisson': породжує шум Пуассона з значень пікселів
замість додавання штучного шуму до значень пікселів, з синтаксисом
(27)
(Шум 4) 'salt & pepper': додає «сіль та перець», на зображення, з
синтаксисом
(28)
(Шум 5) 'speckle': додає мультиплікативний шум зображення, з
синтаксисом
(29)
використовуючи рівняння
(30)
49
де n рівномірно розподілений випадковий шум із середнім 0 і
дисперсією
v (значення за замовчуванням v становить 0,04).
Лістинг 16
% --- накладання шуму 'salt & pepper' та виведення
результату -------------
nsp = imnoise( g,'salt & pepper',0.05 );
subplot( 3,1,2 );
imshow( nsp );
title( 'шум "salt & pepper"' );
% --- накладання шуму 'localvar' та виведення результату
------------------
g = im2double( g );
v = g( :,:,: );
np = imnoise( g,'localvar',v );
50
Рис. 2.20. Додавання шуму до зображення
Було запропоновано цілий ряд методів виявлення краю (і ліній).
Серед таких методів фільтрації відмінні ті, що запропоновані Л.Г.
Робертс, Превиттом Собелем та більш пізні способи перетину фільтрації
Лапласа та Нуля.
Фільтри Лапласа та Нуля впливають на значні покращення у
порівнянні з попередніми методами виявлення краю. Це видно на рис.
2.20.
51
Лістинг 17
% --- зчитування зображення та конвертація у відтінки
сірого --------------
filename = 'circuit.jpg';
g = rgb2gray( imread( [ 'pictures/' filename ] ) );
% --- виконання фільтрації з різними ядрами -------------
------------------
gr = edge( g,'roberts' );
gp = edge( g,'prewitt' );
gs = edge( g,'sobel' );
gl = edge( g,'log' );
gz = edge( g,'zerocross' );
% відображення результатів
subplot( 2,3,1 );
imshow( g );
title( filename );
subplot( 2,3,2 );
imshow( ~gr );
title( 'фільтр Робертса' );
subplot( 2,3,3 );
imshow( ~gp );
title( 'фільтр Прюітта' );
subplot( 2,3,4 );
imshow( ~gs );
title( 'фільтр Собеля' );
subplot( 2,3,5 );
imshow( ~gl );
title( 'фільтр Лапласіаном' );
subplot( 2,3,6 );
imshow( ~gz );
title( 'фільтр Zero cross' );
52
Рис. 2.21. Виявлення краю за допомогою фільтрів
Підхід на рис 2.21 може бути використаний для зміни образу
кожного відфільтрованого зображення від білих країв на чорному тлі до
чорних країв білого кольору. Основний підхід у фільтрах виявлення краю
полягає в тому, щоб згортати n × n сусідів кожного пікселя у зображенні з
n × n маскою (або ядром фільтра), де n зазвичай є непарним цілим числом.
Термін "convolve" означає "складання" (roll) разом.
Для реального прикладу згортання. Наприклад, фільтри краю
Prewitt і Sobel використовуються для згортання кожного окремого
зображень 3 × 3 (також називається 8-сусіднім) за допомогою крайового
фільтра.
Поняття 8-сусідства пікселя походить від А. Розенфельда.
Розташування 8-сусідів Розенфельда - квадратний масив із 8 пікселів, що
оточують центр пікселів. Prewitt і Собел крайові фільтри являють собою
53
пару з 3 × 3 масок (одну маска, що представляє градієнт пікселя в
напрямку осі х, і другу маску для градієнта пікселя в напрямку у) .Matlab
виступає в горизонтальному напрямку, фільтрації зображення з маскою,
що представляє градієнт пікселя у напрямку х. Щоб побачити приклади
масок:
Лістинг 18
% налаштування фільтрів
mPrewitt = fspecial( 'prewitt' )
mSobel = fspecial( 'sobel' )
mLaplace = fspecial( 'laplacian' )
Рис. 2.33. Маски
Маски, доступні за допомогою спеціальної функції Matlab,
сприяють горизонтальному напряму. Наприклад, маска Prewitt 3 × 3
визначається як
(31)
Фільтр Лапласа L (x, y) для визначення краю - це 2D-ізотропна міра
2-ї похідної зображення g з інтенсивністю пікселів g (x, y), визначена
54
(32)
Часто використовувана лапласовська маска визначається наступним
масивом 3 × 3.
(33)
55
РОЗДІЛ 3.
МЕТОДИ ОБРОБКИ ЗОБРАЖЕНЬ
3.1 Визначення країв та ліній у цифрових зображеннях
Термін "напрямок краю" означає напрямок дотичної до контуру,
який край визначається у 2D просторі. Канні ввів маску для виявлення
напрямку краю шляхом згортання лінійної функції детектування краю,
вирівняної нормально до краю напрямку проекції з проекційною
функцією, паралельною напряму краю. Проекційна функція вибору є
гауссовою. Після того, як зображення було зведено з симетричним
гаусовим, тоді функція log застосовується до згладжених зображень.
Лістинг 19
% --- зчитування зображення -----------------------------
------------------
filename = 'circuit.jpg';
g = imread( [ 'pictures/' filename ] );
% відображення результату
subplot( 2,3,1 );
imshow( g );
title( filename );
% --- розрахунок гауссіана ------------------------------
------------------
g1 = fspecial( 'gaussian',[ 15 15 ],6 );
g2 = fspecial( 'gaussian',[ 30 30 ],12 );
% відображення результату
subplot( 2,3,2 );
imagesc( g1 );
title( 'Гаусіан,[15 15],6' );
axis image;
subplot( 2,3,3 );
imagesc( g2 );
title( 'Гаусіан,[30 30],12' );
axis image;
% --- виконання згладжування ----------------------------
------------------
[ bw,~ ] = edge( rgb2gray( g ),'log' );
56
% відображення результату
subplot( 2,3,4 );
imshow( ~bw,[] );
title( 'log-фільтрація' );
% згладжування за допомогою фільтра Кенні
[ bw,~ ] = edge( rgb2gray( g ),'canny' );
% відображення результату
subplot( 2,3,5 );
imshow( ~bw,[] );
title( 'фільтр Кенні' );
% логарифмічне згладжування
[ bw,thresh ] = edge( imfilter( rgb2gray( g ),g1 ),'log'
);
% відображення результату
subplot( 2,3,6 );
imshow( ~bw,[] );
title( 'log-згладжування' );
Рис. 3.1. Визначення краю Канні в circuit.tif
Метод виявлення краю LoG (Laplacian of Gauss) обчислюється за
допомогою гаусового згладжування circuit.tif з використанням ядра 3 × 3
зі стандартним відхиленням 1.5. Цей підхід до виявлення краю
призводить до певного поліпшення виявлення краю Канні, застосованого
до оригінального зображення. Це видно з збільшенням кількості
горизонтальних та вертикальних країв у фільтрі. Це показано на рисунку
57
3.1 Також було встановлено, що збільшення розміру ядра зменшує
продуктивність фільтра LoG.
Лістинг 20
filename = 'circuit.jpg';
g = imread( [ 'pictures/' filename ] );
g0 = fspecial( 'gaussian',[ 3 3 ],1.5 );
g1 = fspecial( 'gaussian',[ 15 15 ],7.5 );
g2 = fspecial( 'gaussian',[ 31 31 ],15.5 );
% відображення результату
subplot( 2,3,1 );
imagesc( g1 );
title( 'g0 = Гаусіан,[3 3],1.5' );
axis image;
subplot( 2,3,2 );
imagesc( g1 );
title( 'g1 = Гаусіан,[15 15],7.5' );
axis image;
subplot( 2,3,3 );
imagesc( g2 );
title( 'g2 = Гаусіан,[31 31],15.5' );
axis image;
% --- виконання фільтрації/згладжування та відображення
результатів -------
[ bw,~ ] = edge( rgb2gray( g ),'log' );
subplot( 2,3,4 );
imshow( ~bw,[] );
title( 'log-фільтрація' );
[ bw,~ ] = edge( rgb2gray( g ),'canny' );
subplot( 2,3,5 );
imshow( ~bw,[] );
title( 'фільтрація Кенні' );
[ bw,~ ] = edge( imfilter( rgb2gray( g ),g0 ),'log' );
subplot( 2,3,6 );
imshow( ~bw,[] );
title( 'log-згладжування' );
58
Рис. 3.2. Визначення краю Канні
Кут визначається як перетин кордонів (наприклад, цільовий піксель,
де розташовані два домінанти та різні напрямки краю в околиці цільового
пікселя). Наприклад, кути всередині пунктирних кіл на рисунку 3.2, де
кожен кут є точкою для пари ребер з різними напрямками краю. У
конфлікті з виявленням кута є точки відомі як точки інтересу.
Точка інтересу - це ізольована точка, яка є локальною
максимальною або мінімальною інтенсивністю лінією кінця або точки на
кривій, як хребет (увігнутість вниз) або долини (увігнутість вгору). Якщо
виявляються лише кути, то виявлені області включатимуть точки
інтересу.
Після цього необхідно виконати пост-обробку, щоб ізолювати
реальні кути. Результати виявлення кута для kingfisher1.jpg є
вражаючими, де детектування кутів виконується лише в невеликій області
інтересу до зображення
59
Лістинг 21
filename = 'house.jpg';
g = rgb2gray( imread( [ 'pictures/' filename ] ) );
% g = g( 10:250,300:600 );
% --- використання метрики Харріса ----------------------
------------------
corners = cornermetric( g,'Harris');
corners( corners<0 ) = 0;
cornersgray = mat2gray( corners );
% відображення результату
figure;
subplot( 1,3,1 );
imshow( ~cornersgray );
title( 'метрика Харріса' );
% --- використання метрики мінімального власнго значення
------------------
corners2 = cornermetric( g,'MinimumEigenvalue' );
corners2 = mat2gray( corners2 );
% відображення результату
subplot( 1,3,2 );
imshow( imadjust( corners2 ) );
title( 'min eigenvalue' );
% --- використання метрики imregionalmax ----------------
------------------
cornerpeaks = imregionalmax( corners );
results = find( cornerpeaks == true );
[ r g b ] = deal( g );
r( results ) = 255;
g( results ) = 255;
b( results ) = 0;
RGB = cat( 3,r,g,b );
% відображення результату
subplot( 1,3,3 );
imshow( RGB );
title ( 'imregionalmax(corners)' ) ;
60
Рис. 3.3. findcorners.m
3.2 Застосування діаграм Вороного до аналізу зображення
Сітка Вороного також називається тесонетою Вороного. Вороне
покриття цифрового зображення опуклими багатокутниками називається
тесселяцією Вороного. Це відрізняється від поняття 2D тесселації, яка є
покриттям плоскої області правильними многокутниками. Многокутники
у покритті Вороного, як правило, не є правильними. Опуклі многокутники
у сітці Вороного н⊂азивають областями Вороного.
Нехай S E, кінечномірний нормований лінійний простір.
Евклідовим літаком є приклад. Елементи S називаються сайтами, щоб
відрізняти їх від інших точок в E. Нехай p ∈ S. Область Вороного p ∈ S
(позначена Vp) визначається як
(34)
Область Воронного, зображена як перетин кінцевого числа
замкнутих півплощин. Едельсбруннера де кожна половина площини
визначається зовнішньоспрямованим нормальним вектором
Область Вороного сайту ρ S містить кожну точку площини, яка є
ближчою до p, ніж до будь-якого іншого сайту в S. Нехай Vp, Vq - це
багатогранники Вороного ( Наприклад, рис 35). Якщо Vp Vq - лінійний,
променевий або прямий сегмент, то його називають краєм Вороного.
Якщо перетин з трьох або більше областей Вороного є точкою, то ця
61
точка називається вершиною Вороного. Непуста множина А просторiв X
являє собою опуклу множину, якщо , для кожного α
[0, 1]. Простий опуклий набір - це замкнута половина площини.
Лемма 1 Перетин вихмових множин опуклий.
Доведення Нехай A, B ⊂ є ∈випуклими множинами і нехай K = A
∩ B. Для кожних парних точок x, y K лінійний відрізок , який з'єднує
x та y, належить K, оскільки це властивість для всіх точок в A і B. Отже, K
є опуклим.
Лемма.2 Область Вороного з точками являє собою перетин
замкнутих половинних площин, а кожна з них - опуклий багатокутник
.
Рис. 3.4. Область Вороного Vp = перетин замкнутих півплощин
Доведення Від визначення замкнутої півплощини.
(35)
Vp - перетин замкнутих півплощин для всіх q ∈ S - {p} , що
утворює багатокутник. З лемми 2 Vp випукла.
З точки зору застосування, сітки Вороного сегментують цифрове
зображення. Це особливо важливо в тому випадку, коли сайти, що
62
використовуються для побудови сітки, мають певне значення в структурі
зображення. Наприклад, вибравши кути у вигляді зображень, що містять
183 зображення, як набір сайтів, у кожному районі Вороного сайту p, який
має властивість, що всі точки в регіоні є найближчими до будь-якого
іншого кута на зображенні. Точки в області Вороного в кутовій ділянці p
розташовані симетрично навколо певного кута р. Це властивість
справедливо для кожного регіону Вороного в кутовій сітці. Наступні
кроки побудовані на сітці Вороного на цифровому зображенні:
⎯ виберається цифрове зображення Im.
⎯ виберається верхня межа n за кількістю кутів для виявлення в
Im.
⎯ знаходиться до n кутів у Im. Виявлені кути утворюють набір
сайтів.
⎯ відображаються кути в im.
⎯ Знаходиться регіон Вороного для кожного сайту. Цей крок
конструює сітку Вороного для зображення.
Щоб включити граничні кути зображення в набір сіточних
генераторів, використовуються наступні кроки.
1. im: = зображення у градаціях сірого;
2. [m, n]: = розмір зображення im; % використовувати розмір [im] в
Matlab
3. let C: = набір внутрішніх кутів зображення;
4 let f c - координати крайніх кутів зображення;
5. let Cim: = [C; f c]; % Cim містить координати. з усіх кутів
6. Накладення Cim на зображення im;
63
Приклад .
Кольорове зображення 480x640 показано на рисунку 3.5. Кути
знаходяться як у повному зображенні на рисунку 3.8, так і у обрізаному
зображенні на рисунку. 3.9.
Рис. 3.5. Початкове зображення
Рис. 3.6. Вибрана частина
64
Рис. 3.7. Діаграми Вороного
Рис. 3.8. Кути на усьому зображенні
65
Рис. 3.9. Кути на вибраній частині
Рис. 3.10. Діаграми Вороного для усього зображення
66
3.3 Методи пошуку ліній на зображенні з використанням
градієнтів
Цей пункт демонструє ефективність включення кутів зображення в
безліч генераторів при побудові сітки Вороного на 2D цифровому
зображенні. Щоб накласти сітку Воронного на зображення,
використовуючи набір сайтів, що включають крайні кути зображення,
виконуються наступні дії.
1. Почати з Cim з кроку 5 у методі "кут зображень";
2. let X: = Cim (:, 1), x-координати кутів зображення;
3. let Y: = Cim (:, 2), y-координати кутів зображення;
4. let [vx, vy]: = voronoi (X, Y), координати кутів зображення;
5. накладіть результати на зображення;
Приклад
Включивши крайні кути зображення в набір генеруючих точок ,
одержано сітку Вороного, як показано на рисунку 3.7.
Звернено увагу на опуклі багатокутники навколо частин внутрішніх
кутів на рисунку 3.7, які є результатом включення крайніх кутів у набір
генераторів, які використовуються для виведення знімка зображення.
67
Рис. 3.11. Виявлення краю
Для того, щоб знайти кути зображень, часто потрібно виділяти край
зображень. Основний підхід полягає в обмеженні пошуку кутів
зображення до частин країв зображення без шуму зображень регіонів, які,
як правило, оточують кути зображення. Крім того, кут детектування
допомагає зменшувати край зображень. Основні кроки для цього є
наступні.
1 Знайти градієнти зображення у напрямках x- і y (Gx, Gy).
Звернено увагу, що кожна пара градієнтів визначає вектор у площині
евклідів для 2D-зображення.
2 Відтворити градієнтну величину для
кожного градієнтного вектора зображення.
3 Нехай magnitudes: = масив градієнтних величин.
4 Перетворити білі краї, оточені чорними областями, до чорних
країв, оточених білими областями. Це можна зробити, використовуючи
або imcomplement Matlab, або комбінацію Mathematica 10 ColorNegate та
Binarize, щоб досягти збору чітких чорних країв на білому.
68
Приклад
Граничне розрізання за допомогою магнітних градієнтів
зображення. Зразок вимивання товстих ліній в площині зображення
показано на рисунку 3.12. У цьому зображенні кожен з товстих поверхонь
плану кордонів був зведений до тонких сегментів лінії. Результатом є
колекція тонко облямованих великомасштабних опуклих багатокутників.
Рис. 3.12. Виявлення країв
69
РОЗДІЛ 4.
АНАЛІЗ СУЧАСНИХ СИСТЕМ КОМП’ЮТЕНОГО ЗОРУ
Комп'ютерний зір - це технологія, яка дозволяє комп'ютерам
інтерпретувати та розуміти візуальну інформацію з реального світу. За
допомогою алгоритмів машинного навчання, глибоких нейронних мереж
та обробки зображень, комп'ютери можуть аналізувати та інтерпретувати
дані з камер, відеозаписів та інших візуальних сенсорів. Ця технологія
дозволяє автоматизувати процеси, які раніше потребували людського
втручання, підвищуючи ефективність, точність і безпеку в різних сферах.
Завдяки цьому комп'ютерний зір вже знайшов широке застосування у
багатьох галузях, значно впливаючи на їх розвиток. Нижче наведені
конкретні рішення, що використовують алгоритми комп'ютерного зору, з
детальним описом кожного з них.
4.1 Tesla Autopilot
Tesla Autopilot - це передова система допомоги водію, розроблена
компанією Tesla, яка включає набір функцій, які дозволяють частково
автоматизувати процес керування автомобілем. Система використовує
комплекс датчиків, камер, радарів та програмного забезпечення для
забезпечення безпечного та ефективного керування автомобілем у різних
дорожніх умовах.
Tesla Autopilot використовує апаратне та програмне забезпечення
для збору і обробки даних з навколишнього середовища. Основні
компоненти системи включають:
Tesla оснащені високою камерою, яка забезпечує 360-градусний
огляд навколишнього простору на відстані до 250 метрів. Камери
розташовані спереду, постраждали та з боків автомобіля, що дозволяє
відстежувати об'єкти і рух у всіх напрямках[16].
70
Один фронтальний радар доповнює камери, дозволяючи бачити
крізь дощ, туман, пил та навіть попереду транспортні засоби. Радари
допомагають виявляти об'єкти на великій відстані та з високою точністю.
Дванадцять ультразвукових датчиків забезпечують виявлення
об'єктів навколо автомобіля на відстані до 8 метрів. Вони
використовуються для точної парковки та об'єктів на малій відстані.
Tesla розробила потужний комп'ютерний блок для обробки даних з
усіх датчиків і камер. Цей блок використовує спеціалізовані алгоритми
машинного навчання для прийняття рішень у реальному часі.
Tesla приділяє велику увагу безпеці своєї системи. Автопілот
постійно аналізує дані з датчиків і камер, забезпечуючи безперервний
моніторинг навколишнього середовища. Система розпізнає деякі загрози і
може автоматично проводити заходи для уникнення аварій. Основні
функції безпеки включають:
АЕВ система автоматично активує гальма у випадку виявлення
неминучої загрози зіткнення. Це дозволяє уникнути аварії або зменшити її
слідки[17].
Система Collision Warning попереджає водія про можливість
зіткнення з транспортним засобом або об'єктом попереду. Це дозволяє
водію вчасно реагувати на небезпеку.
Система Lane Departure Warning Система попереджає водія про
ненавмисний вихід із смуги руху, допомагаючи уникнути виїзду на
зустрічну смугу або узбіччя.
Використовуючи камери і радари, система Blind Spot Monitoring
виявляє транспортні засоби в "сліпих зонах" і попереджає водія про якусь
небезпеку під час перестроювання.
Незважаючи на численні переваги, Tesla Autopilot має деякі виклики
та обмеження. Система поки що не є повністю автономною і вимагає
постійної уваги водія. Водій повинен бути готовий взяти водіння в будь-
71
який момент і відповідати за безпеку руху. Деякі ситуації, такі як складні
дорожні умови, погана видимість або несподівані перешкоди, можуть
вимагати втручання водія.
Tesla активно працює над вдосконаленням Autopilot, зокрема над
розвитком повного автономного режиму Full Self-Driving (FSD), який має
забезпечити повну автоматизацію керування автомобілем у всіх умовах.
4.2 John Deere's See & Spray
John Deere's See & Spray - це інноваційна система точного внесення
гербіцидів, розроблена для підвищення ефективності
сільськогосподарських операцій і зменшення витрат на хімікати.
Використовуючи технології комп’ютерного зору та штучного інтелекту,
ця система здатна розпізнавати бур’яни серед культурних рослин і
цілеспрямовано втратити гербіциди тільки на них, мінімізуючи при цьому
витрати на хімічні засоби та вплив на навколишнє середовище.
John Deere See & Spray використовує декілька ключових
технологій та компонентів для досягнення високої точності та
ефективності.
Камери, встановлені на обприскувачах, постійно сканують поле,
захоплюючи зображення рослинного покриву. Ці камери можуть знімати
з високою частотою кадрів, що дозволяє точно визначити положення та
вид рослин.
Система використовує алгоритми машинного навчання для аналізу
зображення, отриманого з камери. Ці алгоритми були навчені
розпізнавати відмінності між культурними рослинами і бур'янами,
аналізуючи їх форму, колір і текстуру.
Використання системи GPS та RTK (Real-Time Kinematic) дозволяє
системі точно визначити кожну рослину на полі з точністю до кількох
сантиметрів. Це забезпечує точність прицілювання гербіцидів.
72
Інтелектуальні форсунки обприскувача оснащені індивідуальними
клапанами, які можуть відкриватися і закриватися з високою швидкістю
та точністю. Це дозволяє цілеспрямовано обробляти тільки бур'яни, не
торкаючись культурних рослин.
Використання See & Spray пропонує низку значних переваг для
фермерів:
Цілеспрямоване застосування гербіцидів дозволяє значно знизити їх
витрати, оскільки обприскати лише бур'яни, а не все поле.
Менша кількість використаних хімікатів означає менший вплив на
навколишнє середовище, зокрема на підставі та водні ресурси.
Точне внесення гербіцидів забезпечує кращий захист культурних
рослин від бур’янів, що сприяє їх здоровому росту та підвищенню
врожайності.
Система автоматично виконує всі необхідні операції, що
дозволяють фермерам економити час на ручному обприскуванні та
контролі за станом посівів.
Попри численні переваги системи John Deere's See & Spray, має
також певні дефекти та обмеження.
Система See & Spray включає в себе складні технології, такі як
високоякісні камери, алгоритми комп'ютерного зору, інтелектуальні
форсунки та GPS-обладнання з RTK. Це означає, що початкова вартість
інсталяції та впровадження цієї системи може бути досить високою. Для
невеликих фермерських господарств або тих, що працюють з обмеженими
бюджетами, це може бути значною перешкодою.
Складні системи, які пропонують передові технології, потребують
регулярного технічного обслуговування для забезпечення їх ефективної
роботи. Високотехнологічні компоненти, такі як камери та інтелектуальні
форсунки, можуть вимагати частого обслуговування або заміни у разі
поломок, що збільшує експлуатаційні витрати.
73
Ефективність системи See & Spray може зменшуватися в певних
умовах, таких як погана видимість, сильний дощ, туман або пил. Ці
фактори можуть вплинути на якість зображення, отриманого камерами,
що у вашому сайті може сприяти меншій ідентифікації бур'янів і
культурних рослин.
Фермерам та операторам може знадобитися додатковий час і
ресурси для навчання користування системою See & Spray. Це включає не
тільки навчання роботі з обладнанням, але й розуміння принципів роботи
технології та її обмеження. Адаптація до нової системи може бути
викликом, особливо для тих, хто звик до традиційних методів ведення
сільського господарства.
Система See & Spray розроблена для спеціальних видів
сільськогосподарських культур і бур'янів. Це означає, що її ефективність
може варіюватись у залежності від регіону, типу обґрунтування,
кліматичних умов та видів культури, які вирощуються. Крім того, система
не може бути універсальною і може потребувати адаптації для різних
умов.
Оскільки система See & Spray використовує складні алгоритми
комп'ютерного зору і машинного навчання, її ефективність сильно
залежить від якості програмного забезпечення. Будь-які збої або помилки
в програмному забезпеченні можуть привести до неточностей у визначені
бур'янів і культурних рослин, що можна вплинути на результати
обприскування.
Високотехнологічні компоненти, такі як камери високої роздільної
здатності та обчислювальні блоки для обробки даних, можуть споживати
значну кількість енергії. Це може збільшити загальні енергетичні витрати
фермерського господарства та вимагати додаткових ресурсів для
забезпечення ефективної системи роботи.
74
4.3 Google DeepMind's AI for Eye Disease Detection
Google DeepMind's AI for Eye Disease Detection - це передова
система, розроблена для допомоги в діагностиці захворювань очей,
зокрема, ретинопатії, дегенерації жовтої плями, діабетичної ретинопатії та
інших серйозних очних станів. Використовуючи штучний інтелект та
глибоке навчання, ця система здатна аналізувати зображення сітківки ока
і виявляти ознаки хвороби з високою точністю.
Система використовує конволюційні нейронні мережі (CNN), які є
особливо ефективними для обробки та аналізу зображення. У цій мережі,
навчені на великому обсязі даних, зображені сітківки, в тому числі як
здорові, так і уражені хворобами ока.
Алгоритми аналізують скановані зображення сітківки, шукаючи
характерні ознаки захворювання. Це включає виявлення крововиливів,
зміни в структурі сітківки, накопичення рідини та інші аномалії.
Серед переваг можна зазначити те що, система може інтегрувати
дані медичних записів для більш точної діагностики, враховуючи
хворобу, симптоми та інші клінічні фактори.
Алгоритми DeepMind досягають високої точності виявлення очних
захворювань, що дозволяє лікарям швидше і точніше встановити діагнози.
Це особливо важливо для раннього захворювання, що може призвести до
сліпоти, якщо не будуть вчасно відраховані.
Використання AI дозволяє автоматизувати аналіз зображень,
зменшуючи навантаження на офтальмологів і дозволяючи їм
зосереджуватися на лікуванні вашої допомоги. Це особливо корисно в
умовах дефіциту медичних кадрів та у віддалених районах.
Завдяки можливості швидкого і точного аналізу зображення,
технологія може бути використана в телемедицині, надаючи доступ до
високоякісної діагностики пацієнтам у віддалених регіонах, де немає
доступу до офтальмологів.
75
Система здатна постійно вдосконалюватися за рахунок навчання на
нових даних. Це означає, що з часом точність і ефективність діагностики
буде лише зростати.
Однак система має певні недоліки а саме, для точної діагностики
система потребує високоякісних зображень сітківки. Погана якість
зображення може призвести до неточностей у діагностиці, що може бути
проблемою в деяких медичних установах з обмеженим доступом до
сучасного обладнання.
Інтеграція системи в клінічного практикума вимагає наявності
відповідної інфраструктури, включаючи комп'ютерні системи,
підключення до Інтернету та навчального персоналу. Це може бути
складним завданням для лікарів у країнах, що розвиваються.
Використання ШІ в медичній діагностиці піднімає питання
конфіденційності даних, відповідальності за випадки помилкової
діагностики та інших етичних аспектів. Необхідно розробити чіткі
правила безпеки та регулювання для забезпечення і правової безпеки.
Хоча система добре працює з певними відомими захворюваннями,
вона може мати обмеження виявлення нових або рідкісних хвороб, які не
були включені в початковий набір даних для навчання.
Розроблена система виділяється своєю доступністю та
універсальністю у порівнянні з такими передовими рішеннями, як Tesla
Autopilot, John Deere's See & Spray і Google DeepMind's AI для діагностики
очних захворювань. На відміну від цих високотехнологічних і дорогих
систем, моя система розроблена для використання доступніших
компонентів і вимагає менше ресурсів для встановлення та
обслуговування. Це знижує загальні витрати і робить її доступною для
ширшого кола користувачів, включаючи невеликі підприємства та
фермерські господарства.
76
Крім того, розроблена система є універсальною і може адаптуватися
до різних галузей та умов використання. Вона легко інтегрується в
існуючі інфраструктури без значних модифікацій і забезпечує високу
ефективність у різних контекстах. Завдяки своїй гнучкості, вона може
бути налаштована відповідно до специфічних потреб користувачів, що
робить її привабливим вибором для тих, хто шукає ефективне та доступне
рішення.
77
ВИСНОВКИ
Тему кваліфікаційної роботи магістра розкрито в повному обсязі.
Проведено аналіз вже готових рішень систем комп'ютерного зору,
їхні переваги та недоліки. В ході аналізу були розглянуті такі системи, як
Tesla Autopilot, John Deere's See & Spray та Google DeepMind's AI для
діагностики очних захворювань. Було виявлено, що ці системи мають
високу точність і ефективність у своїх специфічних галузях застосування,
проте вони також характеризуються значними витратами на
впровадження і обслуговування, а також можуть мати обмежену
універсальність.
Описано алгоритм обробки зображення та послідовність кроків
обробки зображення для виділення на зображенні об'єктів різної форми,
які можна представити простими геометричними фігурами.
Реалізовано алгоритми обробки зображення. Застосовано лінійні
фільтри та складні фільтри обробки зображення, що включають в себе
лінійну функцію, додавання шуму до зображення, виявлення краю
зображення, подвійний точний лапласовий фільтр, гауссовий фільтр,
лапласовий фільтр в цілісній програмі для виділення простих
геометричних фігур на зображенні. Реалізований пошук кутів на
зображенні за допомогою побудови сітки Вороного.
У контексті розробленої системи, головною перевагою є її
доступність та універсальність. Використання менш дорогих компонентів
і оптимізація процесу обробки зображень дозволяють знизити загальні
витрати, роблячи технологію доступнішою для широкого кола
користувачів. Завдяки універсальності, система може бути адаптована до
різних галузей і умов застосування, що підвищує її практичну цінність.
Вона легко інтегрується в існуючі інфраструктури і забезпечує високу
ефективність у різних контекстах, включаючи промислове виробництво,
медицину, автоматизацію процесів та інші сфери.
78
Розроблена система також демонструє високу точність у виділенні
та класифікації об'єктів різної форми. Це досягається завдяки комбінації
лінійних і складних фільтрів обробки зображень, що забезпечує
ефективне зменшення шуму, підвищення контрастності, виявлення
контурів та ідентифікацію геометричних характеристик об'єктів. Пошук
кутів за допомогою сітки Вороного дозволяє точно визначати ключові
точки на зображенні, що є важливим для подальшого аналізу і
класифікації.
Таким чином, кваліфікаційна робота магістра демонструє успішну
реалізацію комплексного підходу до обробки зображень, що включає
сучасні методи та алгоритми для виділення та класифікації об'єктів.
Система відзначається доступністю, універсальністю і високою точністю,
що робить її ефективним інструментом для широкого спектра застосувань
у різних галузях.
79
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. James F.Peters. ” Foundations of Computer Vision”. Intelligent Systems
Reference Librar, 145-198, 2019.
2. John Canny, ”A computational approach to edge detection.” IEEE
Transactions on PAMI, 8(6):679–698, 2020.
3. TMS320C64x+ DSP Image/Video Processing Library (v2.0.1)
4. Vision Library (VLIB) Application Programming Interface Reference
Guide (SPRUG00). Describes the VLIB Application Programming
Interface (v2.1)
5. Castleman, K.R., Digital Image Processing, Prentice Hall, 2023.
6. Scott Konishi, Alan Yuille, James Coughlin, and Song Chun Zhu,
”Statistical edge detection: Learning and evaluating edge cues.” IEEE
Transactions on PAMI, 25(1):57–74, 2021.
7. William Freeman and Edward Adelson, ”The design and use of steerable
filters.” IEEE Transactions on PAMI, 13:891–906, 2023.
8. David Martin, Charless Fowlkes, and Jitendra Malik, ”Learning to detect
natural image boundaries using local brightness, color, and texture cues.”
IEEE Transactions on PAMI, 26(5):530–549, 2019.
9. R. Deriche, Using Canny's criteria to derive a recursively implemented
optimal edge detector, Int. J. Computer Vision, Vol. 1, pp. 167–187,
April 2020.
10. Lindeberg, Tony "Edge detection and ridge detection with automatic
scale selection", International Journal of Computer Vision, 30, 2, pp
117—154, 2022. (Includes the differential approach to non-maximum
suppression.)
11. Молчанова М.О. Протасов М.В. Дослідження впливу параметрів
навчання когнітрону на якісить розпізнавання вихідних образів:
2021. – 246 c.
80
12. Fukushima K. Cognitron. A self-organizing multilayered neural
network.1975
13. Насрутдинов М. Ф. Робота в Matlab 2020 - 14 c.
14. Michael Paluszek and Stephanie Thomas Matlab Reecipes 2019 - 316 c.
15. Naik, A. R. (2021, July 13). All The Innovations By Tesla Beyond
Electric Cars. In Analytics India Magazine.
16. Min, C. (2021, November 3). Talking about the history of driverless cars
(V) - Tesla Autopilot evolution history. In Zhihu
17. С. Забара. Моделювання систем у середовищі MATLAB 2021.
18. Cun, X., Pun, C. M., & Shi, C. (2020, April). Towards ghost-free shadow
removal via dual hierarchical aggregation network and shadow matting
gan. In Proceedings of the AAAI Conference on Artificial Intelligence
(Vol. 34, No. 07, pp. 10680-10687).
19. Inoue, N., & Yamasaki, T. (2020). Learning from synthetic shadows for
shadow detection and removal. IEEE Transactions on Circuits and
Systems for Video Technology, 31(11), 4187-4197.
20. Abro, A. A. (2021). Vote-based: Ensemble approach. Sakarya University
Journal of Science, 25(3), 858-866.
21. Hu, X., Jiang, Y., Fu, C. W., & Heng, P. A. (2019). Mask-shadowgan:
Learning to remove shadows from unpaired data. In Proceedings of the
IEEE/CVF international conference on computer vision (pp. 2472-2481).
22. Abro, A. A., TAŞCI, E., & Aybars, U. G. U. R. (2020). A Stacking-based
Ensemble Learning Method for Outlier Detection. Balkan Journal of
Electrical and Computer Engineering, 8(2), 181-185.
23. Cun, X., Pun, C. M., & Shi, C. (2020, April). Towards ghost-free shadow
removal via dual hierarchical aggregation network and shadow matting
gan. In Proceedings of the AAAI Conference on Artificial Intelligence
(Vol. 34, No. 07, pp. 10680-10687).
81
24. Inoue, N., & Yamasaki, T. (2020). Learning from synthetic shadows for
shadow detection and removal. IEEE Transactions on Circuits and
Systems for Video Technology, 31(11), 4187-4197.
25. Abro, A. A. (2021). Vote-based: Ensemble approach. Sakarya University
Journal of Science, 25(3), 858-866.
26. Hu, X., Jiang, Y., Fu, C. W., & Heng, P. A. (2019). Mask-shadowgan:
Learning to remove shadows from unpaired data. In Proceedings of the
IEEE/CVF international conference on computer vision (pp. 2472-2481).
27. Abro, A. A., TAŞCI, E., & Aybars, U. G. U. R. (2020). A Stacking-based
Ensemble Learning Method for Outlier Detection. Balkan Journal of
Electrical and Computer Engineering, 8(2), 181-185.
28. Cun, X., Pun, C. M., & Shi, C. (2020, April). Towards ghost-free shadow
removal via dual hierarchical aggregation network and shadow matting
gan. In Proceedings of the AAAI Conference on Artificial Intelligence
(Vol. 34, No. 07, pp. 10680-10687).
29. Inoue, N., & Yamasaki, T. (2020). Learning from synthetic shadows for
shadow detection and removal. IEEE Transactions on Circuits and
Systems for Video Technology Abro, A. A. (2021).
30. Vote-based: Ensemble approach. Sakarya University Journal of Science.
Gonzales C. Rafael, Woods E. Richard, Digital image Processing,
Prentice Hall, 2022 New York Gonzales C. Rafael, Woods E. Richard,
Eddins L. Steven, Digital Image Processing using MATLAB, Prentice
Hall, 2022 New York.
31. Marchand Patrick, Holland O. Thomas, Graphics and GUIs with
MATLAB, Chapman & Hall/CRC, 2022.
32. Gürcan, E. "Computer Vision in Industrial Automation." Master Thesis,
Yildiz Technical University, 2019.
33. Shu C. and Gerhardrothrogerscom G. R., "Introduction to Computer
Vision What is Computer Vision? The goal of computer vision is to
82
develop Machine Vision General visual perception is hard, " pp. 1–12,
2019.
34. Yetik İ.Ş., ELE 473-573 "Digital Image Processing - Projects", 2021.
35. Golnabi, Hossein, and A. Asadpour. "Design and application of industrial
machine vision systems." Robotics and Computer-Integrated
Manufacturing 23.6 (2021).
36. Snyder, Wesley E., and Hairong Qi. Machine vision. Vol. 1. Cambridge
University Press, 2019.
37. Kattan P.I. Matlab For Beginners: AGentle Approach, Createspace, 2008.
38. Bennett K., editor,. Matlab.Applications for the Practical
Engineer,IntechOpen London UK, 2019.
39. KatsikisV., editor, Matlab AFundamental Tool for ScientificComputing
and EngineeringApplications - Volume 1, IntechOpen,London UK, 2022.
40. Assi A., editor, EngineeringEducation and Research Using
MatlabIntechOpen London UK 2021.
41. Elmer, K.; Soffer, R.J.; Arroyo-Mora, J.P.; Kalacska, M. ASDToolkit:
ANovel Matlab Processing Toolbox forASD Field Spectroscopy Data.
2020.
83