Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/9081| Title: | Перетворення зображеннь моніторинговим програмним агентом |
| Authors: | Голуб, Сергій Васильович Стороженко, Анастасія Олегівна |
| Keywords: | Агент;зображення;масив вхідних даних;OpenCV;перетворення зображень;сегментація |
| Issue Date: | 2022 |
| Abstract: | Стороженко Анастасія Олегівна, кваліфікаційна робота магістра на тему: “Перетворення зображень моніторинговим програмним агентом”. Напрям підготовки 121 “Інженерія програмного забезпечення”, ЧДТУ, Черкаси 2022. При виконанні даної роботи досліджується процес перетворення зображення у масив вхідних даних та вплив результатів дослідження на формування вимог. Також було виконано пошук існуючих методів для сегментування зображення та попередньої обробки зображень для отримання більшої кількості інформації чи усунення недоліків зображення. В результаті виконання роботи, буде розроблена програма, що перетворює обране зображення у масив даних, який потім можна використати для навчання моделей. Обсяг роботи – сторінок, вона містить 4 розділи, ілюстрацій, таблиць, джерел в переліку посилань, додатки. Використані програмні засоби – Python, OpenCV, PySimpleGui, Numpy, image_slicer. |
| URI: | https://er.chdtu.edu.ua/handle/ChSTU/9081 |
| Appears in Collections: | 121 Інженерія програмного забезпечення (Інженерія програмного забезпечення) |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| Стороженко Анастасія. Маг. 2002.pdf Restricted Access | 3.15 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 курсу, групи МПЗ-2104
Напряму підготовки:
121“Інженерія програмного забезпечення”
(шифр і назва напряму підготовки)_
Магістрант Стороженко А. О. .
(прізвище та ініціали)
Керівник Голуб С.В. .
(прізвище та ініціали)---
Рецензент ________________________________
(прізвище та ініціали) -----
Черкаси 2022
2
_____Черкаський державний технологічний університет___________________
повне найменування вищого навчального закладу
Факультет інформаційних технологій і систем____________________________________
Кафедра програмного забезпечення автоматизованих систем______________________
Освітній рівень магістр____________________________________________________________
Спеціальність 121 «Інженерія програмного забезпечення»_____________________________
Освітня програма Інженерія програмного забезпечення__________________________________
ЗАТВЕРДЖУЮ
Зав. кафедри ПЗАС, професор
___________ Голуб С.В.
«___» _______________ 2022 року
З А В Д А Н Н Я
НА КВАЛІФІКАЦІЙНУ РОБОТУ СТУДЕНТУ
______ ____________________Стороженко Анастасія Олегівна____________________________
(прізвище, ім’я, по батькові)
4.Тему проекту (роботи) Перетворення зображеннь моніторинговим програмним агентом___
Керівник проекту (роботи) Голуб Сергій Васильович д.т.н, професор________________________
(прізвище, ім’я , по батькові, науковий ступінь, вчене звання)
Затверджені наказом Черкаського державного технологічного університету від « 10 » жовтня
2019 року №333/01
2. Строк подання студентом проекту (роботи)____________________________________________
3. Вхідні дані до проекту (роботи) метод сегментації; структура масиву вхідних даних________
4. Зміст розрахунково-пояснювальної записки (перелік питань, які потрібно розробити)
Вступ; Існуючі методи та засоби розв’язання поставлених завдань;__Теоретичні та
експериментальні дослідження;_Впровадження результатів досліджень у практику.
Проектування програмного забезпечення інформаційних систем;__Розробка та тестування
програмного забезпечення Висновки;_Список використаних джерел; Додатки.___
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових робіт проекту);
Зображення для досліджень_Результати навчання моделей._Діаграми_UML. Структурна схема
Функціональна схема._Схеми алгоритмів. Моделі бази даних_
6. Консультанти розділів проекту (роботи)
Розділ Прізвище, ініціали та посади Підпис, дата
консультанта
Завдання видав Завдання прийняв
1
2
3
3
7. Дата видачі завдання____________________________________________________
КАЛЕНДАРНИЙ ПЛАН
№ Строк виконання
Назва етапів
п/п етапів випускної Примітки
випускної роботи
роботи
1 Постановка задачі 02.05.2022 виконано
2 Погодження завдання 09.05.2022 виконано
3 Затвердження завдання 16.05.2022 виконано
Основна стадія
1 Пошук існуючих методів сегментації 06.06.2022 виконано
2 Дослідження процесу перетворення зображення 20.06.2022 виконано
3 Проектування, розробка та тестування системи 01.09.2022 виконано
4 Проведення досліджень 03.10.2022 виконано
Заключна стадія
1 Перевірка результатів керівником 07.10.2022 виконано
2 Оформлення пояснювальної записки 20.11.2022 виконано
3 Попередній захист роботи 22.11.2022 виконано
4 Затвердження роботи
5 Рецензування роботи
6 Захист роботи
Студентка ______________________ Стороженко А. О.
(підпис) (прізвище та ініціали)
Керівник проекту(роботи) ______________________ ___Голуб С.В.___
(підпис) (прізвище та ініціали)
4
Зміст
АНОТАЦІЇ ........................................................................................................................ 7
Ключові слова .................................................................................................................. 7
ПЕРЕЛІК УМОВНИХ ПОЗНАЧЕНЬ ............................................................................ 9
ВСТУП ............................................................................................................................ 10
РОЗДІЛ 1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ ПОСТАВЛЕНИХ
ЗАВДАНЬ ....................................................................................................................... 12
Висновки до першого розділу ................................................................................... 19
РОЗДІЛ 2 ТЕОРЕТИЧНІ ТА ЕКСПЕРИМЕНТАЛЬНІ ДОСЛІДЖЕННЯ............... 20
2.1. Теоретичні дослідження ..................................................................................... 20
2.1.1 Дослідження процесу перетворення зображення в масив вхідних даних 20
2.1.2 Вплив результатів дослідження на процес формування вимог................. 22
2.2. Експериментальні дослідження ......................................................................... 23
2.3. Висновки до другого розділу ............................................................................. 30
РОЗДІЛ 3. ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У ПРАКТИКУ
ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ІНФОРМАЦІЙНИХ
СИСТЕМ ........................................................................................................................ 31
3.1 Моделювання предметної області ...................................................................... 31
3.1.1 Предметна область моделювання. Модель предметної області. Словник
предметної області. ................................................................................................. 31
3. 1.2 Елементи моделювання предметної області .............................................. 32
3.1.3. Робоча область моделювання ...................................................................... 34
3.2 Формування та аналіз вимог ............................................................................... 34
3.2.1 Формування вимог до програмного забезпечення. Первинні і детальні
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні
вимоги....................................................................................................................... 34
3.2.2 Формування вимог за допомогою діаграми прецедентів .......................... 36
3.2.3 Проектування логічної структури програмного комплексу ...................... 38
3.3 Архітектурне проектування ................................................................................ 40
3.3.1 Діаграма компонентів .................................................................................... 40
3.3.2 Розгортання програмної системи на апаратних засобах. Діаграма
розгортання .............................................................................................................. 42
3.3.3 Моделювання поведінки системи ................................................................ 43
3.4 Висновки до третього розділу ............................................................................. 48
5
РОЗДІЛ 4. РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ . 49
4.1. Обґрунтування вибору засобів реалізації ......................................................... 49
4.2 Розробка бази даних ............................................................................................. 59
4.3 Розробка інтерфейсу користувача ...................................................................... 60
4.4 Опис розробки програмних компонентів .......................................................... 63
4.4.1 Опис розробки компонента інтерфейсу ....................................................... 63
4.4.2 Опис розробки компонента для виконання алгоритму .............................. 64
4.4.3 Опис розробки компонента для перетворення зображення ...................... 65
4.4.4 Опис розробки компонента для отримання даних ..................................... 66
4.4.5 Опис розробки компонента формування масиву вхідних даних .............. 68
4.5 Тестування системи ............................................................................................. 69
4.5.1 Модульне тестування .................................................................................... 69
4.5.2 Інтеграційне тестування ................................................................................ 71
4.5.3 Системне тестування ..................................................................................... 74
4.5.4 Приймальне тестування ................................................................................. 75
4.6 Приклади впровадження програмного комплексу ........................................... 75
4.7 Висновки для четвертого розділу ....................................................................... 80
ВИСНОВКИ ................................................................................................................... 81
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ..................................................................... 83
ДОДАТКИ ...................................................................................................................... 84
6
АНОТАЦІЇ
Стороженко Анастасія Олегівна, кваліфікаційна робота магістра на тему:
“Перетворення зображень моніторинговим програмним агентом”. Напрям
підготовки 121 “Інженерія програмного забезпечення”, ЧДТУ, Черкаси 2022.
При виконанні даної роботи досліджується процес перетворення зображення
у масив вхідних даних та вплив результатів дослідження на формування вимог.
Також було виконано пошук існуючих методів для сегментування зображення та
попередньої обробки зображень для отримання більшої кількості інформації чи
усунення недоліків зображення.
В результаті виконання роботи, буде розроблена програма, що перетворює
обране зображення у масив даних, який потім можна використати для навчання
моделей.
Обсяг роботи – сторінок, вона містить 4 розділи, ілюстрацій, таблиць,
джерел в переліку посилань, додатки.
Використані програмні засоби – Python, OpenCV, PySimpleGui, Numpy,
image_slicer.
Ключові слова
Агент, зображення, масив вхідних даних, OpenCV, перетворення зображень,
сегментація.
7
ABSTRACTS
Anastasiya Olehivna Storozhenko, master's qualification thesis on the topic:
"Transformation of images by a monitoring software agent". Field of training 121
"Software engineering", CSTU, Cherkasy 2022.
When performing this work, the process of image transformation into an array of
input data and the impact of research results on the formation of requirements are
investigated. A search was also made for existing methods for image segmentation and
image preprocessing to obtain more information or remove image defects.
As a result of the work, a program will be developed that converts the selected
image into an array of data, which can then be used to train models.
The volume of the work is pages, it contains 4 sections, illustrations, tables, sources
in the list of references, and appendices.
The software tools used are Python, OpenCV, PySimpleGui, Numpy, image_slicer.
Keywords
Agent, Image, Input array, OpenCV, Image transformation, Segmentation.
8
ПЕРЕЛІК УМОВНИХ ПОЗНАЧЕНЬ
1. UML – Unified Modeling Language;
2. ПЗ – Програмне забезпечення;
3. RGB - red(червоний), green(зелений), blue(синій) - колірна модель;
4. HEX - колірна модель.
9
ВСТУП
Актуальність досліджень, результати яких подані в роботі, визначаються
потребою в розробкі технології створення програмного забезпечення
моніторингового агента, призначеного для інтелектуальної обробки зображень. У
цій роботі досліджено процес моделювання предметної області аналізу зображень
та визначення особливості формування вимог та побудови процесу створення
програмного агента, що забезпечує інтелектуальний моніторинг зображень.
Аналіз зображень є важливою функцією віртуального робота, що забезпечує
консолідацію інформації та знань, отриманих також від аналізу звукових та
текстових повідомлень. Дослідження процесу об’єктно-орієнтовного проектування
та конструювання програмних агентів дозволяє розробити методику створення
однотипних елементів віртуального робота.
Метою роботи є підвищення ефективності програмної реалізації
моніторингового агента шляхом дослідження процесів перетворення
фотографічних зображень.
Для досягнення мети, необхідно виконати наступні завдання дослідження:
провести інформаційний пошук існуючих методів та засобів розв’язання задачі;
дослідити процес перетворення зображення у масив вихідних даних; визначити як
впливають результати попередніх досліджень на формування вимог до ПЗ агента
для перетворення зображення в масив вхідних даних; представити результати у
вигляді технології агентного програмування перетворення зображень
моніторинговим програмним агентом.
Дослідження в роботі пов’язані з науковою програмою спеціальності
‘‘Інженерія програмного забезпечення’’ тому, що досліджується вплив результатів,
отриманих під час дослідження, на формування вимог, щоб забезпечити правильне
функціонування програмного забезпечення.
Об’єкт дослідження технологія агентного програмування процесу
перетворення фотографічного зображення.
10
Предмет дослідження процес формування вимог до програмного
забезпечення процесу перетворення зображень моніторинговим агентом.
Методи досліджень. До загальнонаукових методів теоретичних досліджень
належить аналіз, синтез, індукція, дедукція, ідеалізація, формалізація,
аксіоматичний метод та системний підхід. Для дослідження було обрано системний
підхід та індукцію. Системний підхід - об’єкт вивчається як сукупність елементів,
що утворюють систему. Індукція це коли на підставі знання про частину предметів
класу робиться висновок про властивості класу в цілому.
Наукова новизна отриманих результатів. Удосконалено метод
перетворення фотографічних зображень до форми масиву вхідних даних за рахунок
застосування нової форми сегментації зображень. Це дозволяє підвищити
ефективність роботи системи за рахунок збільшення кількості правильно
класифікованих зображень.
Практичне значення отриманих результатів. Програмно реалізовано
технологію моніторингу фотографічних зображень у формі програмного агента.
Розроблено методику формування вимог до програмного забезпечення та адаптації
етапів архітектурного та детального програмування програмного агента.
Дослідження, що описані в роботі були проведені здобувачем особисто.
Також було досліджено необхідність створення агентів, що працюють з великою
кількістю зображень та відео і виконують завдання класифікації, ідентифікації та
інші[1].
Результати було оприлюднено у наступних двох конференціях: п’ятнадцята
міжнародна науково-практична конференція 17-18 травня 2022 року ‘‘Інтегровані
інтелектуальні робототехнічні комплекси’’ та дванадцята міжнародна науково-
технічна конференція 2022 року “Сучасні напрями розвитку інформаційно-
комунікаційних технологій та засобів управління”.
11
РОЗДІЛ 1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ
ПОСТАВЛЕНИХ ЗАВДАНЬ
Попередня обробка зображення є важливим етапом при роботі із
зображеннями. Більшість розробників витрачають велику кількість часу на це.
Завдання попередньої обробки це покращити характеристики зображення, що є
важливими для обробки і аналізу та усунути дефекти чи зробити їх менш
помітними.
Щоб виконати попередню обробку зображення, можна використати один з
наступних способів:
- змінення яскравості пікселів;
- геометричні перетворення;
- фільтрування та сегментування;
- перетворення Фур’є та відновлення зображення.
При зміні яскравості пікселів, результат залежить від значень пікселя.
Поширеними операціями перетворення яскравості пікселів є:
- гамма-кореляція та трансформація степеневого закону;
- сигмовидна розтягування;
- вирівнювання гістограми.
Гамма кореляція - коригування значень певних пікселів нелінійно та бути
причиною змінення насиченості зображення.
Вирівнювання гістограми - спосіб підвищення контрастності, що є
ефективним на всіх видах зображення. Він надає складний метод для змінення
динамічного діапазону та контрасту, при цьому вони змінюються так, щоб
отримати гістограму необхідної форми. Оператори моделювання гістограми
можуть виконувати нелінійні та немонотонні функції для порівняння
інтенсивності пікселів у вхідному і вихідному зображенні.
Сигмовидна функція є суцільною нелінійною функцією активації. При
змінені контрасту та порогового значення з'являється можливість встановити
12
кількість освітленості та затемнення для можливості контролювати підвищення
контрастності[1].
При геометричних перетвореннях колір зображення не змінюється, проте
вони допомагають усунути геометричні спотворення. Геометричними операціями
є масштабування, обертання та спотворення[1].
Фільтри для зображень використовують для виконання перетворень, що
допоможуть в результаті отримати корисну інформацію із зображення, як
наприклад краї чи кути. Способи фільтрування:
- методом згладжування. Різниця між значеннями пікселів зменшується після
знаходження середнього значення між сусідніми пікселями;
- спрямований фільтр може використовуватись для обчислення першої
похідної зображення. Перші похідні знаходяться на пікселях, де значення
суміжних пікселів сильно змінюється.
- фільтрування Лапласа визначає другу похідну та швидкість зміни першої
похідної. Це допомагає визначити чи місце, де суміжні значення змінюються
є краєм[1].
Перетворення Фур’є використовується для розділення зображення на синуса
та косинуса частиною. Результатом буде зображення в Фур’є чи частотній області
та вхідне зображення буде еквівалентом просторової області. Перетворення Фур’є
використовується в аналізі зображень, фільтрації та реконструкції[1].
Сегментація зображення — це процес, під час якого зображення поділяється
на деяку кількість частин, що не перекривають один одного. Сегментація
зображення є важливою складовою обробки зображень. Її точність має великий
вплив на наступні етапи обробки зображення[2].
Це допомагає зменшити складність зображення та полегшити аналіз
зображення. Розпізнавання об’єктів на зображеннях можливе тому, що методи
сегментації зображень намагаються згрупувати пікселі, що мають подібності. До
процесу розпізнавання об’єктів використовують два підходи, які залежать від
характеристик зображень. Це регіональний та граничний підхід.
13
Регіональний підхід(Region Approach) - знаходить схожі пікселі на
зображенні. Для цього використовуються пороги та зростання, розширення, злиття
регіонів. Цей підхід використовується для кластеризації за не відомими ознаками
та класифікації, де подібність визначається за допомогою наперед визначених
характеристик.
Граничний підхід - це алгоритм, що шукає границі та відмінності. Даний
підхід використовується для визначення країв, точок, ліній. Краї знаходяться за
допомогою значень характеристик, що відображають переривчастість.
Методи сегментації зображень умовно можна поділити на три типи:
структурні, стохастичні та гібридні. Структурні алгоритми використовують дані
про структуру зображення тобто про пікселі, щільність пікселів, гістограми,
значення кольорів у пікселі та структурні дані про область, який необхідно
отримати із зображення.
Стохастичні алгоритми потребують інформацію про значення дискретних
пікселів зображення повністю. Це надає значну перевагу, коли потрібно в
працювати з великою кількістю зображень та є високий рівень, що дані про
потрібний об’єкт у недостатній кількості. Один із прикладів є метод К-
сегментування.
Гібридні методи поєднують в собі структурні та стохастичні методи. Для
використання цих методів необхідно структурну інформацію про область та
дискретну піксельну інформацію про зображення[3].
Порогові методи - один з фундаментальних методів для знаходження об’єкта
на зображенні. При використані порогових методів кластери будуть розділенні
після порівняння погового значення з значенням інтенсивності пікселя. За умови,
що на зображенні фон має меншу інтенсивність та більше шуму, ніж об’єкт
використання таких методів буде ефективним. Порогове значення може бути
задане константою або змінюватись відповідно до характеристик зображень, що
допоможе отримати більш точні результати.
Алгоритм бінарного підходу до порогового сегментування є замінення
пікселів зображення білим чи чорним кольором. Якщо інтенсивність пікселя менша
за порогове значення замінюється чорним кольором, якщо більше - тоді білим.
14
Якщо на зображені немає чіткого розділення на передній і задній план,
використання одного значення як порогу може не дати бажаний результат. При
використані цього методу, зображення ділиться на частини та порогове значення
вираховується для кожної з ним.
Метод Оцу, наприклад, призначений для знаходження порогового значення,
що буде оптимальним та щоб значення дисперсії всередині класу була
мінімальною, а між класами максимальною. Для використання цього методу
необхідно виконати наступне:
- розрахувати гістограму зображення та ймовірність можливих рівнів
інтенсивності;
- вказати стартову ймовірність класу та його середнє значення;
- для кожного порогового значення від 1 до максимальної інтенсивності:
- змінити значення ймовірності та середнього значення;
- визначити міжкласову дисперсію;
- найкращим значенням для порогу буде максимальне значення міжкласової
дисперсії[4].
Ітераційне порогове значення це - метод на основі метода Оцу. Метод Оцу
використовується для обробки зображення та середнього значення двох класів. В
результаті буде отримано порогове значення. Тепер метод ітераційного визначення
розділяє зображення на три класи, використовуючи середнє значення попередньо
визначених класів. Серед трьох класів буде виділено передній план, задній план та
що буде використано в наступній ітерації. Передній план буде визначено за
пікселями, що матимуть значення більше ніж найбільше із значень двох середніх.
Задній план визначатиметься за пікселями, що мають значення менше ніж менше
середнє. Пікселі зі значенням між більшим і меншим будуть визначені для
наступного кроку, в той час як значення переднього та заднього плану не будуть
змінюватись. Визначенні пікселі будуть знову розділені на три класи за подібним
алгоритмом та в кінці обробки пікселі будуть розділені на дві групи передній план
і фон[5].
15
Методи сегментації на основі знаходження країв визначають краї на
зображені за допомогою розривів рівнів сірого та кольорів, яскравості, текстури,
насиченості та інших. Ці види методів також можна поділити на методи, що
визначають краї за допомогою градієнту та гістограми рівня сірого. Мета цих
методів отримати хоча б часткову сегментацію, тобто бінарне зображення, на
якому будуть зображені тільки всі знайдені краї об’єкта чи частини зображення[6].
Основні складові, які необхідні для виконання алгоритму це ізольовані точки,
лінії та краї. Крайніми пікселями є ті, в яких інтенсивність функції зображення
різко змінюється, тому краї це набір об’єднаних крайніх пікселів[7].
Регіональні методи сегментації, при яких сегменти формуються при
поділенні зображення на частини(набори пікселів), що мають схожі
характеристики.
Метод нарощування регіонів спочатку має певний набір пікселів та певний
набір ознак подібності. Регіон збільшується за рахунок сусідніх пікселів у яких є
подібність до початкового набору пікселів. Коли регіон більше не може
збільшуватись, алгоритм бере інший набір пікселів, що не належать будь-якому
іншому регіону і знову починається процес нарощування.
Методи поділу та злиття регіонів виконують розділення зображення на
регіони, що мають спільні характеристика та об’єднують суміжні області, що
чимось подібні.
При використані методів на основі кластеризації непотрібно наперед
визначати набір характеристик, класів чи інших типів даних. Алгоритми
кластеризації сегментують зображення на кластери чи непересічні групи пікселів,
що мають схожі характеристики[8].
Є два типи кластерів:
- жорстка кластеризація(Hard clustering). Зображення ділиться на кластери і
піксель або належить одному кластеру або ні. Прикладом є метод k-середніх,
який визначає центри, а потім піксель прикріплюється до найближчого
центру;
16
- м’яка кластеризація(Soft clustering), є більш корисна для сегментації
зображення тому, що ділення нечітке та піксель може належати тільки
одному кластеру.
Мета методу k-середніх отримати певну k-кількість груп об’єктів, що мають
певну схожість та мінімізувати суму квадратів відстаней між точками та центром
кластера[9]. Проблема використання цього метода в тому, що важко обчислювати
та неправильно визначене k дає неточні результати. Проте цей алгоритм є простим
та швидким. До того ж він також є високо ефективним та може використовуватись
для великого набору даних. Ще одним недоліком алгоритму k-середніх є те, що
значення k важко визначити і немає певних критеріїв для визначення.
Fuzzy C - середніх -метод, що дозволяє даним належати більше ніж одному
кластеру. Кожна точна в певній мірі належить до кожного кластера, але повністю
не належить нікому. Через те, що алгоритми не враховують просторову інформація
в зображені, на них впливають недоліки зображення та виникають проблеми при
роботі з неоднорідною інтенсивністю. Ефективність метода Fuzzy C - середніх
зменшується, якщо зображення має недоліки та шум.
Алгоритм:
- вибрати кількість кластерів:
- кожній точці довільно присвоїти коефіцієнт належності кластеру:
- виконувати наступні 2 етапи, поки значення коефіцієнтів між двома
ітераціями не більша ніж наперед заданий поріг чутливості;
- визначити центроїд для всіх кластерів;
- визначити для кожної точки коефіцієнт належності до кластера[10].
Основна ідея методу вододілу походить від географії, де вододіл це хребет,
що розділяє річкові системи. Градієнт зображення уявляється як рельєф, де кожне
значення градієнту відповідає висоті. Якщо зробити отвори в кожному мінімуму і
занурити карту у воду, то вода заповнює простір з басейнами та підніметься вище
них. Тоді на межі, де об’єднуються два різних водоймища, утворюються дамби. В
результаті отримаємо сегментоване зображення з дамбами, що утворюють контури
17
сегментів та водозбірний басейнами, що зображають сегментовані регіони. Методи
вододілу використовує цю ідею для сірого зображення, що допомагає вирішити
багато проблем сегментації[11].
Кінцевий результат використання методу вододілу є глобальна сегментація,
закриті кордони та висока її точність. Так як метод базується на представленні
значення рівня сірого зображення в його топографічному вигляді, він має три види
точок. Перший вид це точки, що створюють різні мінімуми топографічного
середовища. Другий вид створюють внутрішній градієнт, що називається
водозбірний басейн. Третій вид це лінії, що розділяють водозбірні басейни,
називаються вододільними лініями[12].
Для сегментування методом вододілу, може використовуватись підхід
дистанційного перетворення, градієнтне перетворення та методи, що
контролюються маркером. Дистанційне перетворення в більшості випадків
використовується з вододільним перетворенням та має мету вирахувати дистанцію
від кожного пікселя до найближчого пікселя з значенням відмінним нулю. Бінарне
зображення може бути перетворене у сіре завдяки дистанційному перетворенню,
щоб потім можливо було виконати сегментацію методом вододілу[13].
Значення градієнта для зображення описує як швидко зображення
змінюється використовується для підготовки його до сегментації методом
вододілу. Це зображення містить в собі високі значення пікселів на кордонах та
низькі на інших ділянках, тому після вододільних перетворень такого зображення
утворюються вододільні хребти. Проте градієнтне перетворення має недоліки у
вигляді надмірної сегментації. Для вирішення цієї проблеми, виконується
глобальний аналіз зображення, що надає градієнт, після чого всі кількість зайвих
контурів, які виникли через наявність шуму на зображенні, зменшується. Цю
проблему можна вирішити, тому сегментацію можна виконати за допомогою
топологічний градієнтного підходу[13].
Для контролю надмірної сегментації зображення використовуються
спеціальні методи. Маркер це зв’язаний компонент, що належить зображенню.
Вони використовуються для налаштування градієнтного зображення. Внутрішні
використовуються для об’єктів, а зовнішні для меж. маркери краще
18
використовувати для сегментації зображень з замкнутими контурами та де краї у
виглядів хребтів. Внутрішні маркери в середині об’єктів, а зовнішні на задньому
плані. Після сегментації зображення, на хребтах розміщуються межі вододільних
ділянок. Якщо буде велика кількість мінімумів, то через це може виникнути
пересегментация. Щоб виправити це, цей метод сегментує об’єкти з замкнутими
краями. Маркери визначаються з самого початку. Зовнішні маркери визначається
вручну, намалювавши межу навколо об’єкта, внутрішні маркери визнаються
автоматично при поєднанні різних технік, наприклад визначення порогів або
виконання морфологічні операції.
Спочатку метод вододілу використовувався лише для сірих зображень, проте
зараз використовується і на кольорові зображення. Межі, що були отримані в
результаті сегментації відповідають межам, що є на зображені[13].
Висновки до першого розділу
Під час аналізу знайденої інформації, що стосується теми дослідження, було
виявлено, що більшість методів сегментації мають свої переваги та недоліки при
використанні їх до різних типів зображення, тому метод сегментування слід
вибирати залежно від типу зображень. Для проведення досліджень будуть
використанні фотографічні зображення та метод сегментації, який передбачає
розділення зображення на однакові сегменти(вікна та кластери).
19
РОЗДІЛ 2 ТЕОРЕТИЧНІ ТА ЕКСПЕРИМЕНТАЛЬНІ ДОСЛІДЖЕННЯ
2.1. Теоретичні дослідження
2.1.1 Дослідження процесу перетворення зображення в масив вхідних
даних
Щоб використати зображень для навчання моделей, необхідно перетворити
його в масив вхідних даних. Процес перетворення поділяється на наступні декілька
процесів:
- сегментація зображення;
- отримання значень характеристик;
- позначення частин зображення, що належать об’єкту;
- формування масиву вхідних даних.
Під час сегментації, зображення поділяється на частини, кожна з яких
відрізняється певними характеристиками від інших. Існує багато методів для
сегментування. Перед використанням методів сегментації, за потреби, виконують
різні перетворення зображення для отримання більш точних результатів та для
полегшення подальшої роботи з ним.
20
Рис. 2.1 Результат поділення зображення на вікна
Сегментування зображення виконувалось за допомогою методу поділу на
рівні частини. Спочатку зображення ділиться на вікна, які потім в свою чергу
поділяються на кластери.
Кількість сегментів визнається перед початком сегментації. Масиви вікон(Рис.
2.1) та кластерів зберігаються на комп’ютері. Такий метод може бути корисним,
якщо на зображені є об’єкти невеликого розміру на зображеннях великого розміру.
Для навчання моделей, необхідно зображення перетворити в масив даних.
Масив даних складається з числових характеристик зображення, що можуть бути
вирахуванні за допомогою формул чи отримані після перетворення зображення у
різні кольорові простори такі, як RGB, HEX та інші.
Зображення представляється у вигляді матриці чисел, де розмір матриці
залежить від кількості пікселів у зображенні. Числа матриці вказують який колір
має піксель та яку яскравість. У кольорових зображень є три матриці для значень
червоного, зеленого та синього кольору, що означають інтенсивність у пікселі
кожного з кольорів. При їх накладені одна на одну утворюється кольорове
зображення[14].
Для обчислення значення яскравості було використано значення кольорів у
пікселях у формулі:
(0.21 * R) + (0.72* G) + (0.07 * B)
Яскравість для зображення це абсолютна кількість світла, яка об’єкт
випромінює на певну одиницю площі. При роботі з різними перетвореннями чи
обробкою зображення, яскравістю вважається ступінь кількості світла, що
потрапляє на поверхню[15].
Насиченість(saturation) - це значення, що описує кількість сірого в кольорі.
Значення може бути в межах від 0 до 100 або від 0 до 1. Чим менше це значення,
тим більше сірого і колір більше здається вицвілим[16]. Різне значення можуть
мати кольорові зображення, проте сірі та чорно-білі не мають насиченості
21
кольору[17]. Насиченість можна отримати перетворивши зображення з
кольорового простору RGB в HSV.
Барвистість зображення досить часто збільшується разом з яскравістю.
Винятком є випадки, коли зображення має високе значення яскравості. Для
визначення барвистості потрібно визначити чи є кольори з високим значенням
насиченості. Щоб вирахувати числове значення барвистості можна використати
формулу:
де σ та μ стандартне відхилення та середнє значення масивів rg та yb, що
знаходяться за формулами[18]:
Для вирахування значення контрасту зображення необхідно визначити
різницю між максимальною та мінімальною інтенсивністю зображення.
В масиві вхідних даних повинні бути позначені кластери, що повністю
належать виділеному об’єкту. Навчання моделей відбувається на основі даних, які
позначені як свої, тобто ті, що належать об’єкту, тому після поділення зображення
на сегменти відбувається перевірка, якщо кластер не належить виділеній ділянці
або належить тільки частково, то він буде позначено як чужий.
2.1.2 Вплив результатів дослідження на процес формування вимог
Під час дослідження процесу перетворення зображення, було визначено
способи отримання значень характеристик та способи перевірки отриманих
значень. Тобто окрім вирахування значень, розробник має перевіряти результати
обчислень на коректність.
Також після дослідження, було виявлено деталі стосовно даних, що повинні
обов’язково бути в готовому масиві даних. Це позначення чи належить сегмент
об’єкту. Без даних позначення навчання моделей не буде ефективним.
22
2.2. Експериментальні дослідження
Перед проведення експериментальних досліджень було сформовано наступні
гіпотези:
- точність ідентифікації моделлю об’єкта, залежить від кількості ознак в
масиві даних;
- програма, що була розроблена створює масиви даних, за допомогою яких
можна навчити моделі та ідентифікувати об’єкти;
- від різноманітності масиву зображень, що були перетворені в масиви
вхідних даних, залежить різноманітність зображень на яких модель впізнає об’єкт.
Для дослідження цінності програми, що була розроблена для перетворення
зображення було використано програму, що навчає моделі, тестує та за допомогою
них ідентифікує їх. Масиви даних для навчання та тестування складаються з
наборів перетворених зображень, які збережені в одному файлі. В результаті
програма покаже кількість кластерів, які модель розпізнала як ті, що належать
об’єкту у текстовому наборі даних. Для створення набору даних було використано
чотири зображення(Рис. 2.2). Їх було поділено на 50 вікон та кожне вікно на 4
кластери та перетворено у масиви даних(Рис. 2.3).
Рис. 2.2 Зображення, що були використані під час досліджень
23
При перетворення програмою зображення, масив даних має вигляд як
зображено на рис. 2.3. Щоб навчити моделі, необхідно створити набір із декількох
таких масивів даних.
Рис. 2.3 Масив даних отриманих із завантаженого зображення
Тестові набори також було утворюються з таких масивів даних, проте
зображення мають бути схожі, але інші. Це допоможе визначити перевірити чи
модель правильно знаходить дані об’єкта. На рис. 2.4 показано результат перевірки
моделі на тестових даних. Де вказано кількість даних, що були визначені моделлю
як свої у кожному файлі.
24
Рис. 2.4 Результат тестування моделі
На рис. 2.4 зображено частину набору даних для навчання, де показано
присутність декількох зображень, які також мають різні назви.
Рис. 2.4 Приклад набору даних для навчання моделей
25
Для перевірки гіпотези було взято три зображення для навчання та три для
тестування. Зображення було поділено на 30 вікон по 4 кластери.
При використанні масиву даних з 4 характеристиками для вікон та їх
кластерів, на тестових даних навчанні моделі розпізнали кластери у кожному
наборі даних та при ідентифікації з використанням масиву даних, де присутній
потрібний об’єкт визначили як своє. Те, що спрогнозувала модель та дані у файлі
співпадають на 93% (Рис. 2.4).
Рис. 2.4 Результат прогнозування моделі та її точність
Рис. 2.5 Результат ідентифікації об’єкта
На вікні програми відображається результат ідентифікації моделлю (Рис.
2.5). Під час тестування, моделі з усіма характеристиками розпізнали на тестових
даних певну кількість кластерів у кожному масиві даних(Рис. 2.6).
26
Рис. 2.6 Результат перевірки однієї з моделей на тестових даних
При роботі з наборами даних, де характеристик менше вдвічі, моделі на
тестових даних не розпізнали жодного кластера (Рис. 2.7).
Рис. 2.7 Результат тестування моделі
Щодо використання такої моделі для ідентифікації, програма показала
результат прогнозування нею та які дані є насправді(Рис. 2.8), що означає, що
модель розпізнала масив даних як чужі.
Рис. 2.8 Відображення результату ідентифікації
27
Для наступного зображення(Рис.2.9), одна з навчаних моделей
ідентифікувала як ‘‘свій’’ з кількістю співпадінь 81%, інша 75%, проте визначила
як ‘‘чужий’’.
Рис. 2.9 Зображення для ідентифікації
При ідентифікації масиву даних утвореного з рис. 2.10, обидві моделі
показали результат ‘‘свій’’ з точністю 90%.
Рис. 2.10 Зображення для ідентифікації
Використані вище моделі були навчанні на зображеннях, де позначались як
свої тільки м’ячі з білим та чорним кольором, тому при спробі ідентифікувати м’яч
іншого кольору, модель розпізнавала як ‘‘чужий’’. Тому було створено новий набір
28
даних, де були присутні м’ячі різного кольору. Моделі були навчанні та
протестовані на інших даних.
В результаті при ідентифікації зображень на рис. 2.11, модель визначала як
‘‘свій’’.
Рис. 2.11 Зображення для ідентифікації
На рис. 2.12 зображено результат ідентифікації.
Рис. 2.12 Результат ідентифікації моделлю
29
2.3. Висновки до другого розділу
Результати теоретичних досліджень мають значний вплив на процес
формування вимог тому, що під час дослідження виникають різні умови від яких
залежить кінцевий результат перетворення. Наприклад, при досліджені процесу
визначення характеристик, було виявлено, що значення насиченості зображення
має бути в межах від 0-100 або 0-1 та при перетворені сірого та чорно-білого
зображення значення барвистості дорівнює нулю.
Експериментальні дослідження було підтверджено гіпотези описані на
початку цих досліджень. А саме кількість ознак в масиві даних впливає на точність
ідентифікації об’єкта. Результат перетворення зображення програмою, може бути
використаний для навчання моделей та ідентифікації. Для того, щоб модель
розпізнавала різні види об’єкта на зображеннях, необхідно навчати моделі на
інформативному масиві даних.
30
РОЗДІЛ 3. ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У
ПРАКТИКУ ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
ІНФОРМАЦІЙНИХ СИСТЕМ
3.1 Моделювання предметної області
Щоб отримати в результаті розробки систему, що задовольнятиме всі
необхідні вимоги та коректно виконувати свої функції, потрібно, щоб розробник
мав уявлення про особливості функціонування системи. Тому є необхідність в
моделюванні предметної області.
3.1.1 Предметна область моделювання. Модель предметної області.
Словник предметної області.
Модель предметної області є системою, що відображає структуру чи
функціонал певної предметної області. Властивості моделей відображаються за
допомогою графічних методів, що повинні відображати інформацію про частини
системи.[19]
Словники це перелік термінів, що використовуються в одній області та часто
не змінюються. Їх можуть використовувати під час розробки ПЗ, коли необхідно
утворити групи з існуючих даних та потім використовувати ці групи. Також вони
повинні бути прості та змінюватись лише у виняткових випадках[20].
Рис. 3.1 Словник предметної області
Для даної предметної області, було сформовано словник(Рис. 3.1), що містить
інформацію про масив вхідних даних. В ньому описано, які потрібно виконати дії
31
для формування масиву та з чого він має складатись. Всі пункти в словнику рідко
змінюються. Проте можуть змінюватись методи виконання дій для створення
масиву.
3. 1.2 Елементи моделювання предметної області
Моделювання відбувалось з використанням мови UML, що була створена для
візуального моделювання складних та простих програм: їх структуру та
функціонал.[21] Для цього, UML має велику кількість елементів, що полегшують
процес моделювання. При побудові моделей з використанням UML,
використовуються основні три компоненти - об’єкти чи сутності, їх взаємодії та
діаграми.
Структурні об’єкти відображають реальні сутності та речі, які мають
статичну поведінку. Їх приклади зображено на рис. 3.2.
Рисунок 3.2 Структурні об’єкти
32
Поведінкові об’єкти зображують поведінку системи. Наприклад у діаграмі
діяльності, поведінка системи описується за допомогою об’єктів, що зображено на
рис. 3.3.
Рис. 3.3 Об’єкти діаграми діяльності
За необхідності елементи моделі можна згрупувати за допомогою об’єкту
‘пакет’(package). Існують також об’єкти для створення описів і коментарів на
діаграмах(note).
Важливою складовою моделі є взаємодії між сутностями. Вони описують як
сутності повинні взаємодіяти між собою для коректної роботи системи, модель якої
створюється. Типи взаємодій на діаграмах позначаються відношеннями(Рис.
3.4)[22]
Рис. 3.4 Приклади відношень між об’єктами
33
3.1.3. Робоча область моделювання
Для розробки якісної та корисної системи необхідно визначити всі вимоги до
системи та виконувати моделювання згідно з ними. На рис. 3.5 зображено модель
предметної області для програми, що розробляється. На ній відображено процеси,
що вона має виконувати. Основний процес це перетворення зображення. Він
складається з чотирьох інших процесів, що зображено на рис. 3.5 та залежить від
введених даних в інтерфейсі.
Рис. 3.5 Модель предметної області
3.2 Формування та аналіз вимог
3.2.1 Формування вимог до програмного забезпечення. Первинні і
детальні вимоги. Вимоги замовника і розробника.
Функціональні та нефункціональні вимоги.
3.2.1.1. Первинні вимоги (вимоги замовника)
34
1. Програма повинна перетворювати зображення у масив вхідних даних.
2. Результат перетворення повинен зберігатись у зовнішній файл.
3. Користувач вибирає зображення та вводить дані для перетворення.
4. Користувач виділяє об’єкт на зображені.
3.2.1.2. Детальні вимоги (вимоги розробника)
1. Необхідно створити інтерфейс для введення даних та зображення.
2. Інтерфейс має бути зрозумілим для користувача без досвіду використання
схожих програм.
3. Завантажене зображення повинне бути відображене користувачу.
4. Для перетворення використовуються дані, що ввів користувач.
5. Перетворення має початись після натиснення користувачем відповідної
кнопки.
6. Програма має показати повідомлення про початок перетворення та назву
файлу, де буде збережений результат.
7. Готовий масив даних зберігається у доступному вигляді.
3.2.1.3. Функціональні вимоги
1. Агент має надати можливість користувачу вибрати зображення з файлів
через доступний інтерфейс.
2. Агент має зчитувати зображення, що було завантажене.
3. Програма повинна надати можливість користувачу виділити ділянку на
зображені та зберегти її для подальшого використання.
4. Програма повинна позначити у масиві вхідних даних кластери, що належать
виділеній ділянці.
5. Зображення має ділитись на введену користувачем кількість рівних вікон та
кластерів.
6. Мають бути вирахувані середні значення характеристик для кожного вікна та
кластера.
3.2.1.4. Нефункціональні вимоги
35
1. Програма повинна запускатись без використання консолі.
2. Можливість використовувати програму без додаткових завантажень.
3. Файл з результатом перетворення можна використовувати окремо від
програми.
3.2.2 Формування вимог за допомогою діаграми прецедентів
Діаграма використання (прецедентів) - діаграма, що відображає різні типи
ролей в системі та як вони взаємодіють з системою незважаючи на різні деталі та
на те, як функції реалізовані. Діаграма використання складається з функцій, що
система повинна виконувати. В даному випадку, система це те розробляється.
Сутності та користувач, що виконують певні ролі в системі зображаються як
актори[19].
Системі для виконання своїх функцій необхідні дані, що повинен ввести
користувач. На рис. 3.6 зображено діаграма для прецеденту ‘‘Введення даних
користувачем’’.
Рис. 3.6 Діаграма варіанту використання ‘‘Введення даних користувачем’’
На діаграмі зображено актора ‘‘Користувач’’, що взаємодіє з системою під
час даного прецеденту. Користувач має завантажити зображення, використовуючи
інструмент для перегляду файлів та вибрати необхідне зображення. Далі
користувач виділяє об’єкт на зображенні, використовуючи спеціальний
інструмент.
36
Користувач повинен ввести параметри для обробки зображення, що включає
в себе введення кількості вікон і кластерів, а також позначення сегментів, що
належать виділеному об’єкту. Для цього він має використати поля для введення
даних.
Щоб зберегти введені дані та почати роботу програми, користувач має
натиснути кнопку ‘‘Почати’’.
На рис. 3.7 взаємодію актора ‘‘Агент’’ під час прецеденту ‘‘Перетворення
зображення’’.
Рис. 3.7 Діаграма прецеденту ‘‘Перетворення зображення’’
Прецедент починається з процесу сегментації зображення агентом, для чого
він використовує метод сегментування. Після сегментування, агент вираховує
значення характеристик за допомогою різних способів. Агент з отриманих значень
характеристик формує масив вхідних даних за допомогою створених методів та
зберігає масив у файл, засобом для роботи з файлами.
Рис. 3.8 Прецедент сегментації зображення
37
Сегментація зображення (Рис. 3.8) починається з того, що агент зчитує
зображення з використанням спеціальних методів для цього. Потім агент розбиває
зображення на частини. Спочатку зображення поділяється на вікна та потім кожне
вікно поділяється на кластери. Для розбиття необхідно використати спеціальний
інструмент. Масив утворених зображень зберігається за допомогою методів, що
виконують збереження зображень.
Рис. 3.9 Прецедент ‘‘Визначення характеристик’’
Для визначення характеристик (Рис. 3.9), необхідно масив зображень, що
утворений в результаті сегментації. Тому агент отримує масив зображень за
допомогою методів зчитування. Згідно з способами визначення характеристик,
агент отримує характеристики вікон та потім кластерів. Всі отримані масиви
значень, агент зберігає у змінні.
3.2.3 Проектування логічної структури програмного комплексу
3.2.3.1 Діаграми класів
Діаграма класів описує головні об’єкти системи та їх взаємозв'язки. На рис.
3.10 зображена діаграма класів для системи, що перетворює зображення.
38
Рис. 3.10 Діаграма класів для системи, що перетворює зображення
На діаграмі зображено 4 граничних класи, це - ‘DownloadImage’,
‘EditParameters’, ‘SelectObjectArea’ та ‘StartProcessImage’. Ці класи забезпечують
взаємодію між системою та користувачем. ‘DownloadImage’ отримує завантажене
зображення. Клас ‘EditParameters’ містить в собі початкове значення розміру
кластера та початковий список характеристик, які можуть бути змінені
користувачем. Клас ‘SelectObjectArea’ отримує виділену частину зображення, де
знаходиться об’єкт. Клас ‘SelectObjectArea’ використовує клас ‘Image’ для
виконання своїх функцій, тому між ‘SelectObjectArea’ та ‘Image’ відношення
залежності. Клас ‘StartProcessImage’ пов’язаний з класами ‘DownloadImage’,
‘EditParameters’, ‘SelectObjectArea’ тому, що без них він не може виконувати свої
функції, отже між цими класами і класом ‘StartProcessImage’ відношення асоціації.
Клас ‘StartProcessImage’ надсилає повідомлення класу ‘System’, що є
керуючим класом. Він виконує головні функції системи та використовує клас
‘Image’ та ‘ParametersList’ для роботи, тому між ними відношення асоціації.
39
Класи ‘Image’ та ‘ParametersList’ є сутностями тому, що їх атрибути
зберігаються постійно та вони використовуються постійно в програмі.
3.2.3.2 Діаграма пакетів
На наступній діаграмі(Рис. 3.11) зображені пакети, що мають утворитись в
результаті розробки. Компоненти мають бути розділені на групу компонентів, що
відповідають за інтерфейс та групу, що відповідальна за перетворення зображення.
В останній мають бути компоненти, що виконують чи використовуються для
перетворення.
Рис. 3.11 Діаграма пакетів
3.3 Архітектурне проектування
3.3.1 Діаграма компонентів
Діаграма компонентів відображає структурну організацію та взаємозв’язки
між компонентами системи. Компонент це одиниця системи, що може бути
замінена чи викликана. Деталі про реалізацію компонента не вказується, поведінка
компонента пояснюються інтерфейси, що надає чи вимагає компонент[20].
40
На рис. 3.12 зображено діаграму компонентів, що відображає структуру
програми, що перетворює зображення в масив даних. В компонент ‘Інтерфейс’
отримує дані введені користувачем необхідні для обробки зображення. Він
експортує інтерфейси ‘ІЗображення’, ‘ІРозмірвікна/кластера’, ‘ІСписок
Характеристик’ та ‘ІВиділена Область’ для подальшого їх використання іншими
компонентами.
Рис. 3.12 Діаграма компонентів програми, що перетворює зображення
Компонент ‘Розділення Зображення На Частини’ імпортує в себе інтерфейси
‘ІЗображення’ та ‘ІРозмірвікна/кластера’, які потрібні для реалізації інтерфейсу
‘ІМасивВіконТаКластерів’. Для обробки зображення необхідно розділити його на
вікна та кластери, розмір яких вказує користувач.
Потім для того, щоб компонент ‘РозрахунокХарактеристик’ виконати свої
функції та реалізувати інтерфейс ’ІЧисловіХарактеристики’, йому необхідно
імпортувати в себе інтерфейси ‘ІМасивВіконТаКластерів’ та
‘ІСписокХарактеристик’.
41
Формування масиву даних виконує компонент ‘ФормуванняМасивуДаних’.
Для цього йому необхідно використати розраховані числові характеристики
зображення та масив пікселів з позначенням чи належить піксель об’єкту.
Тому ‘ФормуванняМасивуДаних’ імпортує в себе
інтерфейси ’ІЧисловіХарактеристики’ та ‘ІВиділена Область’, які вже реалізовані
іншими компонентами.
3.3.2 Розгортання програмної системи на апаратних засобах.
Діаграма розгортання
На рис. 3.13 зображено діаграму розгортання для системи, що проектується.
Рис. 3.13 Діаграма розгортання
Користувач взаємодіє з файлом типу .exe на своєму комп’ютері. Після
натиснення на файл запускається скомпільований код та відображається інтерфейс
користувачу. Виконання коду, що міститься у файлі залежить від даних, що
збережені на комп’ютері. Спочатку, користувач використовує місце на комп’ютері,
вибравши зображення з файлів на комп’ютері та потім код з файлу app.exe
використовує місце на комп’ютері для виконання своїх функцій.
42
3.3.3 Моделювання поведінки системи
3.3.3.1 Діаграма діяльності
Діаграма діяльності відображає поведінку системи від початкової точки
процесу до кінцевої та включає всі можливі варіанти дій за різних умов. При
побудові діаграми діяльності основну увагу звертають на умови виконання дій та
їх послідовність[21].
На рис. 3.14 зображено алгоритм дій, які необхідно виконати для успішного
отримання масиву даних із завантаженого зображення.
Рис. 3.14 Діаграма діяльності алгоритму дії для перетворення зображення
43
Початковою точкою є відкриття програми користувачем. Потім користувач
завантажує зображення на якому необхідно виділити об’єкт та ввести параметри
для обробки зображення. Ці дії можуть виконуватись паралельно тому на діаграмі
зображена горизонтальна лінія, що вказує на те, що ці дії виконуються паралельно.
Потім послідовно виконуються дії ‘Розділення зображення на вікна та
кластери’, ‘Вирахування характеристик зображення’ та ‘Збереження даних у
зовнішній файл’.
3.3.3.2 Діаграма послідовності
Діаграма послідовності відображає об’єкт як його лінію життя за допомогою
вертикальної лінії. Взаємодії об’єктів у часі вказуються у вигляді повідомлень. На
діаграмі повідомлення відображаються у вигляді стрілки від вихідної лінії життя
до цільової. На рис. 3.15 зображена діаграма послідовності для програми
перетворення зображення у масив вхідних даних[22].
Рис. 3.15 Діаграма послідовності для перетворення зображення у масив даних
Після запуску програми, користувачу необхідно завантажити зображення для
обробки зображення. Далі користувач редагує список параметрів для обробки, для
чого відображається список можливих характеристик та стандартний розмір вікна.
44
Користувач має виділити об’єкт на зображенні. Для цього він використовує об’єкт
‘ВиділенняОб’єкта’. Далі користувач запускає процес обробки зображення.
Наступними діями керує агент. Об’єкт ‘Агент’ використовує ‘Зображення’
для розділення зображення на вікна та кластери, в результаті ‘Агент’ отримує
масив вікон та кластерів із зображення. Далі на діаграмі зображено рекурсивну
взаємодію ‘Агента’ самим з собою. ‘Агент’ обчислює значення характеристики та
зберігає дані у файл.
3.3.3.3 Діаграма комунікації
Діаграма кооперації відображає взаємодії між частинами системи. Для
відображення порядку виконання дій використовуються номери. На рис. 3.16
зображено процес перетворення зображення в масив даних.
Рис. 3.16 Діаграма кооперації роботи програми
Спочатку користувач має завантажити зображення, тому повідомлення
‘завантажитиЗображення()’ позначено номером 1 та воно надсилається об’єкту
‘Інтерфейс’, яке в свою чергу надсилає повідомлення об’єкту ‘Агент’ для
45
збереження зображення, повідомлення з номером 2. Потім ‘Агент’ надсилає
повідомлення ‘Інтерфейсу’ для відображення зображення(повідомлення номер 3),
де користувач виділяє область з об’єктом і повідомлення з номером 4 надсилається
до об’єкта ‘Інтерфейс’. Далі об’єкт ‘Інтерфейс’ надсилає повідомлення номер 5
‘Агенту’ щодо збереження виділеної області. Користувач редагує список
параметрів, тому надсилається повідомлення 6 від ‘Користувача’ до ‘Інтерфейсу’
та від ‘Інтерфейсу’ до ‘Агенту’ надсилається повідомлення 7
‘збереженняПараметрів()’.
Потім від ‘Користувача’ надсилається повідомлення 8
‘початиПеретворення()’ до об’єкта ‘ПеретворенняЗображення’. Тоді об’єкт
‘ПеретворенняЗображення’ надсилає повідомлення 9, 10, 11 ‘Агенту’ для того, щоб
перетворити зображення у масив даних та зберегти його в окремий файл.
3.3.3.4 Діаграма скінченного автомату
Діаграму скінченого автомату також ще називають діаграмою станів. На ній
послідовно відображаються можливі стани об’єкта при роботі програми та дії чи
умови, що призводять до зміни стану. На наступному рис. 3.17 зображена діаграма
станів для станів об’єкту зображення під час роботи програми.
46
Рис. 3.17 Діаграма скінченного автомату для об’єкту зображення
Початковий стан об’єкта зображення є ‘Завантажене’, що виникає коли його
завантажив користувач. Тоді після натискання користувачем кнопки ‘Почати’,
починається обробка зображення та агент розділяє зображення на вікна, тому
об’єкт переходить в стан ‘Розділене на вікна’. Потім агент розділяє кожне вікно на
кластери та стан об’єкта змінюється на ‘Розділене на кластери’.
Наступний етап перетворення це перетворення зображення в масив пікселів,
отже стан зображення змінюється на ‘Перетворене в масив пікселів’. Далі слідує
процес розрахунку характеристик, тоді стан змінюється на ‘В процесі розрахунку
47
характеристик’. Готові значення характеристик та масиву пікселів зберігається у
окремий файл, то зображення переходить в стан ‘Збережене у файл’.
3.4 Висновки до третього розділу
Було створено модель системи, що відповідає вимогам та буде виконувати
всі необхідні функції. Під час створення діаграм, було виявлено нові вимоги, які
необхідно виконати для коректної роботи системи.
48
РОЗДІЛ 4. РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО
ЗАБЕЗПЕЧЕННЯ
4.1. Розробка програмного комплексу
4.1. Обґрунтування вибору засобів реалізації
Python. Для реалізації поставлених завдань було обрано мову програмування
Python. Однією з головних причин вибору цієї мови було те, що Python має велику
кількість бібліотек, що допомагає скоротити кількість часу для виконання
другорядних задач, як наприклад розробка інтерфейсу чи збереження кінцевого
результату у зовнішній файл та концентрувати увагу на вирішенні головного
завдання.
Для сегментації зображення було використано бібліотеку Python image-
slicer, що дає можливість задати кількість на яку треба розділити зображення та
повертає масив зображень, що можна зберегти та використати. Бібліотека також
дає можливість отримати координати кожної частини зображення. Дана бібліотека
була вибрана тому, що вона розділяє на необхідну кількість частин зображення в
той час, як для розділення зображення більшістю інших бібліотек, необхідно задати
точний розмір вікна на які має бути розділене зображення.
Через те, що зображення, яке завантажує користувач може бути будь-якого
розміру, використання таких бібліотек може призвести до того, що деякі частини
зображення можуть відрізнятись за розміром. А також якщо використана
бібліотека вимагає, щоб розміри вікна були цілими числами, в протилежному
випадку виникне помилка і програма не буде працювати некоректно.
Для збереження масиву вхідних даних у зовнішній файл, було використано
Python бібліотеку Pandas. Ця бібліотека використовується для аналізу, дослідження
та обробки великої кількості даних[23]. Також вона надає можливість зберегти дані
у excel файл та вказати структуру файлу у зручному форматі.
На даний момент мова Python є найбільш поширена у використанні та може
використовуватись з різними фреймворками та бібліотеками порівняно з іншими
мовами програмування в сфері машинного навчання.
49
Порівнюючи з іншими мовами програмування, Python є мовою загального
призначення, тобто вона широко використовується у різних сферах програмування.
Також вона є універсальною, тобто програму написану мовою програмування
Python можна запустити на різних операційних системах[24].
Не менш важливою перевагою використання Python є те, що код легким у
розумінні та використані, що полегшує завдання для тих, хто тільки
ознайомлюється з машинним навчанням або ж для новачків у програмуванні.
Також це допомагає розробникам приділяти більшу увагу реалізуванню різних
алгоритмів, ніж дослідженню нюансів мови програмування[25].
До того ж спільнота людей, що використовують python поширена по всьому
світу, тому існує безліч різних форумів, де розробники можуть допомагати один
одному вирішувати проблеми різного типу[26].
OpenCV. Для реалізації різних задач пов’язаних з зображенням, як
наприклад зчитування чи відображення зображення було обрано бібліотеку
OpenCV. Одна з найбільших переваг цієї бібліотеки є те, що вона має багато
інструментів для виконання операцій пов’язаних з обробкою зображень та
комп’ютерним зором. Всі інструменти є оптимізованими в швидкості виконання.
Бібліотека надає можливість виконувати геометричні перетворення, змінювати
розмір зображення, малювати на зображеннях, перетворювати кольори у різні
формати та інші[27].
NumPy. Python бібліотека, що використовується для обробки багатовимірних
масивів та матриць, яка також має велику кількість математичних функцій, що
можуть бути використаними для цих масивів. Бібліотека надає можливість
використовувати можливості бібліотеки для використання коду, що написаний на
іншій мові програмування[28].
Бібліотека має також готові рішення для обробки зображень, що є корисним
тому, що деякі бібліотеки для обробки зображень зчитують зображення як массив
NumPy ndarray[29].
При розробці програмного забезпечення було використано математичні
функції при обчисленні характеристик зображення, для перетворення набору чисел
у масив та приведення масивів до необхідного вигляду.
50
PySimpleGUI. Багато з відомих фреймворків для графічного інтерфейсу
Python важкі для розуміння та використання, якщо розробник немає досвіду
використання їх або мови програмування Python. PySimpleGUI це бібліотека, що
об’єднує в собі популярні фреймворки такі, як Tkinter, Qt, Remi та WxPython, яка є
легкою для вивчення та використання.
Ця бібліотека була використана тому, що не потрібно багато часу та досвіду
використання Python для того, щоб побудувати простий та зручний інтерфейс для
програми. До того ж, вона має ряд наступних переваг:
- використовується для побудови інтерфейсу конструкції Python, що
значно зменшує кількість коду та всі налаштування елементу
відбувається в одному місці;
- не вимагає додаткових пакетів для встановлення;
- може бути запущена на різних платформах.Lacks a forms designer[30].
4.2 Опис структурної та функціональної схеми.
На рис. 4.1 зображена структурна схема для програмного забезпечення, що
буде розроблено. На структурній схемі представлені програмні компоненти та їх
частини, які утворюють систему для перетворення зображення в масив даних.
Рис. 4.1 Структурна схема
Компонентів всього чотири, кожен з яких виконує свої функції. Це ‘Форма
для введення даних’, ‘Підготовка зображення для обробки’, ‘Розрахунок даних’ та
51
‘Формування масиву вхідних даних’. Компонент ‘Форма для введення даних’
відповідає за відображення користувачу полів для введення даних, що потрібні для
обробки зображення. Для виконання системою основних свої функцій необхідно,
щоб користувач ввів параметри для обробки та виділив об’єкт на зображені, тому
цей компонент складається з двох підсистем: ‘Введення параметрів для обробки’
та ‘Виділення ділянки з об’єктом’.
Наступний компонент - це ‘Підготовка зображення для подальшої обробки’,
що складається з двох підсистем, що поділяють зображення на вікна та кластери.
Третій компонент - ‘Розрахунок даних’, що складається з ‘Перетворення
зображення у масив пікселів’, ‘Розрахунок характеристик’ та ‘Позначення
належності кластера об'єкту’. Перша підсистема перетворює зображення в масив
пікселів. Друга підсистема виконує розрахунок характеристик вікон та кластерів
зображення. Третя визначає та позначає кластери, що належать виділеній ділянці.
Четвертий компонент - приводить отримані дані до вигляду масиву вхідних
даних та зберігає їх у файл[31].
На функціональній схемі зображуються комунікації між компонентами ПЗ та
описуються потоки даних[31].
На рис. 4.2 зображено функціональну схему програми, її компоненти.
Рис. 4.2 Функціональна схема
52
4.3 Опис логічної схеми системи.
На рис. 4.2 зображено алгоритм компонента, що виконує певні перетворення
зображення, щоб потім була можливість отримати дані для масиву вхідних даних.
Рис. 4.2 Блок схема алгоритму компонента перетворення зображення
Алгоритм починається з розділення зображення на вікна. В результаті
отримуємо масив вікон. Потім за допомогою циклу, кожне вікно ділиться на певну
кількість кластерів та зберігається у масив кластерів.
Компонент також виконує перетворення зображеня в масиви кольорів
пікселів, що буде потім відображено в масиві вхідних даних. Для отримання
масивів, використовується цикл, який перетворює кожен кластер у набір пікселів.
З масиву пікселів, отримуються значення чертвоного, синього та зеленого з
кожного пікселя і з них утворюються масиви.
53
На рис. 4.3 зображено алгоритм для компонента, що відповідає за обчислення
характеристик зображення. Для визначення характеристик використовується цикл,
що для кожного зображення вираховує значення кожної характеристики.
Рис. 4.3 Алгоритм обчислення характеристик
На рис. 4.4 зображено процес перетворення масивів даних у формат масиву
вхідних даних. Перетворення починається з масивів значень характеристик
54
кластерів. Для збереження даних у зовнішній файл необхідно, щоб всі масиви були
одного розміру. В протилежному випадку, виникне помилка в роботі програми. Для
виконання алгоритму необхідно масив даних та кількість дублювань. З
використанням циклу, перебирається кожене значення в масиві та дублюється
вказану кількість разів, в результаті чого утворюється новий масив.
Рис. 4.4 Алгоритм перетворення масиву у формат для збереження
Найбільшу кількість елементів мають масиви з значенням червоного, синього
та зеленого пікселів зображення. Масиви характеристик кластерів мають менше
елементів ніж масиви кольорів, але більше ніж масиви масиви характеристик вікон.
Тому перетворення масивів у перетворення масивів отриманих значень у масив
вхідних даних відбувається шляхом дублювання значень необхідної кількості раз
для створення масивів однакової довжини. Для отримання масиву значень
кластерів з рівного за кількістю масивам значень кольорів пікселя, треба
55
продублювати кожне значення для одного кластера стільки разів, скільки кластер
має пікселів. Для масивів характеристик вікон алгоритм подібний, проте кількість
дублювань буде більша. Для кожного вікна треба вивести всі кластери, а для
кожного кластера потрібно вивести всі значення пікселів, тому кількість дублікатів
значень вікна буде дорівнювати добутку кількості кластерів у кожному вікні та
кількості пікселів у кожному кластері.
Рис. 4.5 Алгоритм компонента форматування масивів даних
56
На рис. 4.6 зображена підсистема компонента ‘Розрахунку даних’, що
визначає, які кластери належать належать ділянці, що виділив користувач та
позначає їх значеннями, що ввів користувач.
Рис. 4.6 Позначення кластерів
Ділянку з об’єктом виділяє користувач, в результаті чого отримується
ділянка, що була виділена та координати цієї ділянки. Потім для зображення
створюється маска у вигляді зображення з таким самим розміром, проте повністю
чорного кольору.
57
Далі згідно з координатами ділянки, що виділив користувач на масці
зображується ця ділянка, але вже білого кольору. Маска перетворюється у
зображення та виконується ділення зображення на вікна та кластери. Результат
зберігається у масиви вікон та кластерів.
За допомогою цикла, кожен елемент масиву кластерів перевіряється чи
належиться він повністю ділянці, що виділив користувач. За даним алгоритмом це
визначається чи містить кластер пікселі тільки білого кольору. Якщо кластер
задовольняє умову, то у новий масив додається значення, що означає, що кластер
належить ділянці, якщо незадовільні, то додається інше значення. Ці значення
вводиться користувач у форму, що відображається після запуску програми.
Алгоритм роботи всієї системи зображено на рис. 4.7.
Рис. 4.7 Алгоритм програми
58
Алгоритм починається з введення користувачем необхідних даних для
перетворення зображення. В результаті, система матиме зображення для
перетворення; кількість вікон та кластерів, на які треба розділити зображення;
значення, якими необхідно позначити кластери, що належать ділянці та
неналежать; та ділянку з об’єктом. Наступний етап алгоритму це перетворення
зображення. Після завершення виконання компонентом своїх завдань, буде
отримано масив вікон та кластерів. Потім слідує компонент, що виконує
розрахунки різних даних, які необхідні для формування масиву даних. Всі дані
зберігаються в масиви. Останнім етапом перед збереженням є формування масиву.
Всі отримані масиви мають бути одного розміру та мати правильний порядок
елементів. Компонент виконує перетворення для задоволення цих умов.
Результатом дії цього компонента є масиви даних, які можуть бути збережені у
файл. Тоді масиви даних зберігаються та якщо дані збережено успішно, то
користувачу виводиться повідомлення про успішне збереження.
4.2 Розробка бази даних
Створення концептуальної моделі допомагає виділити основні об’єкти в базі
даних та їх взаємозв’язки. На рис. 4.8 зображена така модель для системи, що
розробляється.
Рис. 4.8 Концептуальна модель бази даних
59
Основні об’єкти це зображення, вікно та кластер. Зображення ділиться на
певну кількість вікон, тому між цими об’єктами зв’язок один до багатьох. Вікно
має атрибути: координати та характеристики. Вікно містить в собі певну кількість
кластерів, проте кластер може бути лише в одному вікні, тому тут також зв'язок
один до багатьох. Кластер має атрибути: позначення ‘‘свій’’ чи ‘‘чужий’’ та
характеристики.
На рис. 4.9 зображено схему бази даних для даної системи. Схема складається
з п’яти таблиць. Таблиці відображають дані, що формують масив даних.
Рис. 4.9 Фізична модель бази даних
4.3 Розробка інтерфейсу користувача
На інтерфейс додано поля для завантаження зображення та поля для введення
даних. Для того, щоб зробити інтерфейс зрозумілим, було додано текстові написи
біля полів введення та кнопки було названо відповідно до дій, які вони виконують.
Для того, щоб використовувати програму могли незнайомі з нею користувачі
та ті, хто постійно нею користується, було додано підказки, де є певні обмеження,
які можуть вплинути на роботу програми. Це допоможе користувачу, який тільки
60
почав використовувати програму, зрозуміти які типи даних треба вводити та
досвідченому користувачу вводити значення, які йому потрібно.
Для зручності інтерфейсу, поля для введення даних, що якимось чином між
собою пов’язані, було об’єднано в невеликі групи елементів, що розміщені поряд
або слідують один за одним.
Щоб користувач мав розуміння того, що відбувається з програмою, було
додано текстові повідомлення. Якщо після дії, яку виконав користувач слідує
виконання певної дії програмою, тоді з’явиться повідомлення про це або буде
відображено результат його дій.
Наприклад, для завантаження зображення, користувачу необхідно натиснути
кнопку ‘Вибрати’ біля напису про те, що треба вибрати зображення, який
зображено на рис. 4.8 .
Рис. 4.8 Підказка для вибору файла
Після натиснення кнопки користувачу буде показано вікно для вибору
зображення, як на наступному рис. 4.9.
Рис. 4.9 Вікно, де потрібно вибрати файл
61
В даному випадку користувачу буде відображено результат його дій, тобто
зображення, що він завантажив. Як показано на рис. 4.10.
Рис. 4.10 Відображення зображення після його завантаження
Наступне поле, де йому треба виділити зображення, для кращого розуміння,
що необхідно робити додано напис, що потрібно виділити об’єкт та натиснути
кнопку. Напис зображено на рис. 4.11.
Рис. 4.11 Підказка про необхідність виділити об’єкт
Після виділення об’єкта та натискання кнопки, користувачу буде
відображено повідомлення про результат його дій, як на рис. 4.12.
62
Рис. 4.12 Результат виділення об’єкта
Також після того, як користувач введене всі дані та натисне кнопку ‘Почати’,
після завершення роботи програми йому буде відображено повідомлення про
успішне завершення роботи. Повідомлення зображено на рис. 4.13.
Рис. 4.13 Повідомлення про закінчення роботи програми
Інтерфейс є гнучким та надає користувачу можливість змінювати дані та пере
використовувати елементи інтерфейсу до моменту натиснення кнопки
‘Почати’[32].
4.4 Опис розробки програмних компонентів
Під час розробки програмного забезпечення, було створено чотири основних
компоненти, що реалізують основні функції системи. Це:
- компонент для виконання алгоритму;
- компонент для перетворення зображення;
- компонент для отримання даних;
- компонент для формування масиву даних.
Також було створено компонент для інтерфейсу.
4.4.1 Опис розробки компонента інтерфейсу
63
Для розробки інтерфейсу було використано бібліотеку PySimpleGUI. При
запуску програми, запускається метод show_panel(), який створює та відображає
інтерфейс користувачу. В методі спочатку вказуються змінні, що містять в собі
значення для параметрів відображення елементів. Наприклад, змінна ‘font’ містить
значення шрифту та його розміру, а змінна text_size містить розмір шрифту. Далі
створюється масив layout, в якому кожен масив містить елементи, що буде
відображено. Кожен масив буде відображатись з нового рядка, тому для
відображення елементів горизонтально потрібно описати їх в один масив.
Для створення певного елемента. необхідно створити у бібліотеки об’єкт з
назвою елемента та передати параметрами, як необхідно відображати елемент.
Наприклад, для відображення тексту, потрібно вказати текст, що повинен
відображатись та стиль тексту: розмір тексту, шрифт та інші.
Для того, щоб масив елементів був відображений на інтерфейсі, необхідно
створити об’єкт Window та передати назву вікна, масив елементів, розмір вікна і
інші.
Щоб отримати значення з інтерфейсу та події, необхідно у об’єкта Window
викликати метод read(), що поверне назву події(event) та масив значень, що були
введені у відповідні поля (value). Значення зберігаються у порядку розміщення
полів для введення.
Для реагування програми на події у інтерфейсі, як наприклад, натиснення
кнопки, використовується умовний оператор ‘if’. Якщо назва події відповідає події
вказаній в умові if, виконується код, що знаходиться у тілі оператора. Коли
користувач натискає кнопку ‘Виділити об’єкт’, значення події дорівнює ‘Виділити
об’єкт’, тому виконується код, де в умову оператора вказане таке значення події. В
даному випадку, відкривається інструмент для виділення об’єкта та відображається
текст ‘Об’єкт виділено’. При натисненні кнопки ‘Почати’, викликається метод
get_formated_image_data() та починається процес перетворення зображення.
4.4.2 Опис розробки компонента для виконання алгоритму
64
Після натиснення кнопки ‘Почати’, викликається метод
get_formated_image_data() у керуючому компоненті, який в свою чергу запускає
алгоритм перетворення. Метод приймає всі дані, що ввів користувач та назву папки
збереження. Спочатку відбувається створення директорій для збереження вікон та
кластерів у вигляді зображень.
Після створення папок, наступні чотири рядки в методі виконують
перетворення зображення у вікна та вирахування характеристик, а також
координати вікон. Всі дані зберігаються в масиви. Потім відбувається розділення
вікон на кластери, розрахунок їх характеристик та отримання масивів значень
кольорів у пікселях зображення. Далі для масивів координат вікон, характеристик
вікон та кластерів, викликається метод, що формує масиви для збереження у файл.
Дані, що повертає цей метод зберігаються у змінні з префіксом ‘formatted_’ для
позначення масивів, що вже готові для збереження.
Наступним викликається метод, що повертає масив з позначками кластерів
та наступним рядком перетворюється в масив для збереження.
Потім виконується видалення вікон та кластерів для так, як перетворення
завершене та в них немає необхідності.
Завершуючими діями компонента є зберігання даних для цього
використовується метод save_data_to_excel()[Додаток, розділ 2], що отримує
параметрами масиви для збререження. У з бібліотеки pandas викликається об’єкт
DataFrame та його метод from_dict(). Метод приймає параметр об’єкт, де
вказується назва стовпчика та його масив значень. Потім викликається метод
to_excel(), де можна вказати параметри для створеного файла.
4.4.3 Опис розробки компонента для перетворення зображення
Для виділення зображення на вікна, керуючий компонент викликає метод
split_to_paches()[Додаток, розділ 3], що поділяє зображення на частини та передає
аргументами кількість частин, посилання на зображення та папку, де буде
збережено масив зображень. Для розділення зображення на частини було
використано бібліотеку image_slicer. Перший рядок методу виконує поділення
65
зображення, використовуючи метод slice() та зберігає результат масив paches.
Наступний рядок - це виклик методу sava_tiles(), що приймає як аргументи масив
зображень paches, папку для збереження folder, префікс для назв файлів зображень
та формат зображення.
Наступний метод компонента це метод отримання масиву координат
вікон[Додаток, розділ 3] з назвою get_windows_coordinates(). Спочатку зчитуються
шляхи до збережених вікон і з отворюється масив windows. Створюється новий
масив для координат. Потім для кожного елемента в масиві windows, викликається
метод get_image_column_row() та отримує аргументом шлях до зображення в
текстовому вигляді. Це метод бібліотеки image_slicer, який отримує координати
window з назви файлу. Координати будуть збережені у зміні x і y та потім додані в
масив.
Для отримання масиву кластерів, необхідно у викликати метод
get_clasters_from_windows()[Додаток, розділ 3]. Для роботи метода необхідна
кількість кластерів та шлях до папки, де збереженні вікна. Потім отримуються
шляхи до вікон та зберігаються в масив. В циклі для кожного вікна створюється
папка з назвою порядкового номера в масиві збільшене на одиницю(перші чотири
рядки в циклі). Після цього викликається метод split_to_paches(), що ділить та
зберігає кластери.
4.4.4 Опис розробки компонента для отримання даних
Компонент містить в собі методи, що вираховують характеристики
зображення. Для того, щоб почався підрахунок необхідно викликати метод
get_characteristics()[Додаток, розділ 4] і передати аргументом масив зображень, що
робить керуючий компонент.
Метод get_characteristics() по черзі викликає методи для розрахунку
характеристик та зберігає їх результат у змінні. Для розрахунку яскравості,
використовується метод get_luminance_of_part(). Обчислення виконується за
наступною формулою для кожного пікселя в зображенні
66
(0.21 * r)+(0.72 * g) + (0.07*b),
де r - значення червоного кольору в пікселі, g - значення зеленого кольору та b -
синього.
Потім визначається середнє значення для всього зображення. Для визначення
насиченості, використовується метод get_saturation_of_list()[Додаток, розділ 4],
отримує параметром масив зображень. Потім для створюється пустий масив для
збереження результату обчислення та з використанням циклу, для кожного
зображення виконується наступне:
- зображення перетворюється з одного колірного простору в інший. В
даному випадку з RGB в HSV. Це робиться для того, щоб отримати значення
насиченості зображення тому, що після перетворення, кожен піксель матиме
значення відтінок(hue), насиченість(saturation) та значення(value)[33];
- потім із масива пікселів, отримується значення насиченості;
- зберегти в массив результат.
Для обчислення контрасту зображення було створено метод
get_contrast_of_list()[Додаток, розділ 4]. Для кожного елемента масиву зображень,
елемент перетворюється у зображення градації сірого та потім наступний рядок
обчислює стандартне відхилення інтенсивності пікселів у сірого зображення.
Результат зберігається в масив[34].
Для формування масиву позначок кластерів, що повністю належать кластеру
створено два методи create_img_mask() та get_marked_clasters()[Додаток, розділ 4].
Перший метод викликається, коли користувач натискає кнопку ‘Виділити’.
Тоді йому відображається вікно з інструментом для виділення зображення. Перший
рядок у методі це зчитування вибраного зображення та зберігання його у змінну
img. Наступний рядок це виклик інструмента selectROI() для виділення ділянки з
бібліотеки OpenCV та збереження даних виділеної ділянки: координати x та y,
висоту та ширину. Потім створюється маска для зображення за допомогою метода
zeros(), що створює масив з вказаною формою та типом і наповнює його нулями.
67
До маски додається виділена ділянка, проте вже білого кольору та зберігається
маска. Результат буде схожим на рис 4.14.
Другий метод виконує перевірку чи кластер повністю належить виділеній
ділянці. Для цього маска розділяється на вікна та кластери. Створюємо пустий
масив та якщо кластер має середнє значення 255, то в пустий масив додається
відповідне значення введене користувачем.
Рис. 4.14 Приклад створеної маски
4.4.5 Опис розробки компонента формування масиву вхідних даних
Компонент містить в собі методи, що перетворюють числові характеристики
в масиви для збереження у файл. Для зберігання даних в файл формату .xlsx,
використовується бібліотека pandas, яка вимагає щоб всі масиви, що зберігаються
мали однакову кількість елементів. Тому в даному компоненті реалізовані методи,
що перетворять отримані масиви у масиви, що мають рівну кількість елементів, за
рахунок дублювання певну кількість раз елементів масива.
Кількість дублювань залежить від кількості кластерів та пікселів у
зображенні. Значення кластерів необхідно продублювати для кожного пікселя у
ньому та значення вікна для кожного значення кластера. Компонент має метод
convert_characteristics_for_save(), в який передаються аргументами масиви
характеристик та кількість дублювань. Він організовує перетворення масивів,
викликаючи метод duplicate_array(), що виконує дублювання елементів в масивах.
68
Метод приймає значення кількості дублікатів та масив чисел. Далі
використовується цикл та для кожного елементу масиву виконується наступне:
- в першому рядку циклу створюється масив та додається в цей масив певну
кількість раз;
- в другому рядку, в масив, що буде повернено з функції додається
послідовність чисел, що була результатом попереднього рядка.
4.5 Тестування системи
4.5.1 Модульне тестування
Модульне тестування(Unit testing) - тестування програмного забезпечення
під час якого визначається чи придатні для використання певні одиниці коду та
визначає якість коду. Таке тестування робить код більш надійним, оскільки
розробник може передбачити помилки та як код буде виконуватись при їх появі.
Неможливо передбачити всі помилки, проте при виникненні більшості з них,
програма буде працювати коректно. Починати таке тестування краще з найменшої
одиниці в коді. Це може бути функція, модуль чи клас. Потім протестувати інші
блоки та перевірити як цей блок взаємодіє з іншими. Тести зазвичай розміщують в
окремому файлі та мають певні стандарти для найменування файлів та папок для
них[35].
Для модульного тестування було використано бібліотеку unittest. Для методів
компонента, що виконує перетворення зображення було створено тести, що
перевіряють:
- відповідність кількості на яку треба розділити зображення та кількість
елементів, що повертає метод розділення зображення;
- чи зчитуються всі існуючі зображення вказаного типу в певній папці;
- тип даних, що повертають методи зчитування зображень.
На рис. 4.15 зображено вище описані тести з тестовими даними.
69
Рис. 4.15 Тести для компонента, що поділяє зображення на вікна та
кластери
Для методів, що виконують розрахунок значень характеристик було створено
тести, що виконують перевірку типу даних, що повертаються та кількість елементів
у масивах. Деякі з них зображені на наступному рис. 4.16.
Рис. 4.16 Тести для компонента, що розраховує характеристики
Тестування метода, що перетворює отримані масиви у масиви для
збереження у зовнішній файл, виконується за допомогою перевірки довжини
масиву, що повертає метод. Оскільки метод має продублювати кожне значення
вказану кількість раз, при виклику тесту, зображеного на рис. 4.17, результат
метода має дорівнювати 15.
70
Рис. 4.17 Тест для перевірки довжини масиву після дублювання
На рис. 4.18 зображено тест для методу, що перетворює зображення у масиви
значень кольорів у пікселях, що перевіряє на коректність значень масивів, що
повертається. В даному випадку було використано зображення, де є лише чорний
колір, тому метод має повернути масиви з значеннями менше 20. При збільшенні
значень одного з кольорів пікселя, він матиме інший колір.
Рис. 4.18. Тест для перевірки результату перетворення зображення в масив
пікселів
Тестування створення маски для зображення відбувалось шляхом перевірки
масиву, що повертає метод. Він повинен містити тільки значення 255 та 0, тобто
маска містить лише білий та чорний колір. Масив значень фільтрується та якщо
результат пустий масив, то тест виконаний успішно (Рис. 4.19).
Рис. 4.19 Тест для перевірки створення маски
4.5.2 Інтеграційне тестування
Інтеграційне тестування це тестування під час якого перевіряють взаємодію
між компонентами. Компонент інтерфейсу взаємодіє з керуючим компоненетом,
71
шляхом виклику функції та передавання даних для перетворення зображення. Дані,
що надсилає інтерфейс у функцію мають бути певних типів. В таб. 4.1.
представлено, який тип даних має бути у кожного параметра та типи даних, що
надсилаються. Якщо останні мають типи даних, що вимагає функція, то
компоненти взаємодіють правильно.
Таблиця 4.1
Результати тестування даних з інтерфейсу
Параметр функції Тип даних, Тип даних, що Чи задовольняє
що має бути надсилається умови коректної
взаємодії?
Шлях до зображення Рядок Рядок Так
Значення для Рядок або Рядок Так
позначення кластера, числове
що належить ділянці значення
Значення для Рядок або Рядок Так
позначення кластера, числове
що не належить значення
ділянці
Кількість вікон Число Число Так
Кількість кластерів Число Число Так
Керуючий компонент взаємодіє з іншими компонентами, викликаючи у них
методи, щоб забезпечити виконання функцій системи. Для того, щоб взаємодія
була правильною і ефективною, необхідно, щоб методи, що викликаються
виконували своє завдання правильно та за повертали необхідний результат, а
компонент, що викликає надавав правильні аргументи.
Для перевірки взаємодії керуючого компонента та компонента, що виконує
попереднє перетворення зображення, створено наступну таблицю 4.2.
72
Таблиця 4.2
Тестування взаємодії керуючого компонента та компонента
пепереднього перетворення
Причина Очікувана дія з боку Очікувана дія з боку Чи виконуються
взаємодії керуючого компонента умови коректної
компонента перетворення зображень взаємодії?
Розділення Виклик метода та Поділення зображення Так
зображення надання необхідних на вікна
на вікна даних
Зчитування Виклик метода та Зчитування вікон та Так
масиву надсилання повернення результату
вікон аргументів
Розділення Виклик метода та Поділення вікон на Так
вікон на передача назви папки кластери
кластери з вікнами
Зчитування Виклик метода та Зчитування кластерів та Так
масиву вказати дані для повернення результату
кластерів зчитування
Керуючий компонент взаємодіє з компонентом розрахунку характеристик,
для отримання масивів значень кожного вікна та кластера. Керуючий компонент
викликає метод і передає в нього масиви та метод має повернути масиви
характеристики. Отже, для того, щоб ці компоненти ефективно взаємодіяли,
необхідно, щоб виконувались умови з таблиці 4.3.
Компонент, що формує масиви для збереження повинен отримати масиви
даних, обробити їх та повернути готові для збереження. Умови для правильної
взаємодії є аналогічними до умов взаємодії з попереднім компонентом, що
виконуються.
Таблиця 4.3
Тестування взаємодії з компонентом розрахунку характеристик
Компонент Умова Чи
виконується?
73
Керуючий Надіслати масив вікон чи кластерів Так
Зберегти результат у змінні Так
Розрахунку Виконати розрахунки Так
характеристик
Повернути результат у вигляді Так
масивів
4.5.3 Системне тестування
Під час системного тестування мають за мету перевірити функціональні та
нефункціональні вимоги системи. Таке тестування допомагає виявити різні
недоліки системи та при яких діях користувача система працює некоректно [36].
Для перевірки системи на виконання основних своїх функцій, її було
протестовано на виконання наступних вимог у табл.4.4.
Таблиця 4.4
Результати тестування даних з інтерфейсу
Вимога Чи виконується
Відображення форми для введення даних Так
Сповіщення
Завантаження зображення Так
Виділення об’єкта Так
Неправильні дані Так
Завершення обробки Так
Масив вхідних даних повинен складатись
Координати вікон Так
Позначення кластерів, що належать ділянці Так
74
Продовж. табл. 4.4
Значення кольорів у пікселях Так
Значення для вікон та кластерів
Яскравість Так
Насиченість Так
Барвистість Так
Контрастність Так
4.5.4 Приймальне тестування
Приймальним називають тестування під час якого виконується перевірка чи
відповідає система причинам створення [37].
Для кращого результату тестування, перевірку має виконувати людина, що має
потребу у використанні цієї програми. Система відповідає первинним та детальним
вимогам.
4.6 Приклади впровадження програмного комплексу
Перед використанням програми необхідно зберегти на комп’ютері
зображення, яке необхідно перетворити.
75
Рис. 4.20 Вікно для введення даних
Після запуску програми користувачу відкриється вікно, де треба виконати
вказані дії та почати обробку зображення (Рис. 4.20).
Спочатку необхідно вибрати зображення для обробки, натиснувши кнопку
‘‘Вибрати’’. З’явиться вікно з файлами з комп’ютера(Рис. 4.21).
Рис. 4.21 Вікно для перегляду файлів компютера
76
Коли користувач знайде необхідне зображення та вибере його попереднє
вікно зникне та з’явиться вибране зображення на вікні(Рис. 4.22).
Рис. 4.22 Відображення вибраного зображення
Наступне, що потрібно зробити це виділити об’єкт на зображенні. Після
натиснення ‘‘Виділити об’єкт’’, відкриється вікно з зображенням(Рис. 4.23).
77
Рис. 4.23 Вікно для виділення об’єкта
Рис. 4.24 Виділений об’єкт
Потім користувачу необхідно мишкою виділити об’єкт (Рис. 4.24) та
натиснути ‘‘Enter’’. Тоді з’явиться повідомлення про те, що об’єкт виділений (Рис.
4.25).
78
Рис. 4.25 Вікно з повідомленням про виділення об’єкта
Наступними діями мають бути заповнення полів для введення. Необхідно
ввести дані, згідно з вказівками, що розміщені біля полів введення (Рис. 4.26).
Рис. 4.26 Вікно з введеними даними
79
Для початку роботи програми необхідно натиснути кнопку ‘‘Почати’’.
Після завершення перетворення, буде відображено повідомлення про це та
результат буде збережено у файл формату ‘.xlsx’(Рис. 4.27).
Рис. 4.27 Результат перетворення зображення
4.7 Висновки для четвертого розділу
Під час розробки та тестування, було визначено оптимальні інструменти для
розробки та визначено їх переваги для розробки даної системи порівняно з іншими.
Тестування системи виконувалися під час розробки та по завершенню. Були
створені тести, які допомогли знайти проблеми в системі та вирішити їх. В
результаті тестування показало, що система працює коректно та відповідає
необхідним вимогам.
80
ВИСНОВКИ
При виконанні роботи, було досліджено процес перетворення зображення у
масив вхідних даних та вплив результатів на процес формування вимог до системи.
Масив даних формувався на основі даних, що було введено користувачем. Це такі
дані як кількість вікон та кластерів, позначення для сегментів, що належать об’єкту,
завантаження зображення та виділення об’єкта.
Проведено інформаційний пошук існуючих методів сегментування
зображення та визначено, що вибір методу сегментування повинен залежати типів
зображень з якими буде працювати агент. Для сегментування у даній роботі
використовувався метод поділу зображення на рівні сегменти. Також було
знайдено способи визначити характеристики для кожного сегмента за допомогою
формул чи з виконанням певних перетворень.
Дослідження були проведені з використанням програми навчання моделей та
ідентифікації. Дані для досліджень отримані за допомогою створеної системи.
Дослідження показали, що система створює масив вхідних даних, що може бути
використаним для навчання та тестування моделей, а також для ідентифікації
об’єктів. Окрім цього, досліджувалось вплив кількості характеристик в масиві
даних на процес навчання моделі та ідентифікації. Було визначено, що при більшій
кількості характеристик, прогнози моделей мають більший відсоток знайдених
співпадінь та успішно ідентифікує об’єкт на масиві даних, якщо він присутній. До
того ж, за допомогою досліджень було підтверджено, що при більш різноманітних
наборах даних для навчання моделей, модель збільшує кількість ідентифікованих
об’єктів.
Система, що була створена перетворює зображення у вигляді масиву вхідних
даних. Перевагою є те, що більшість даних для перетворення вводиться в інтерфейс
системи. Проте ця особливість може мати певні недоліки при використанні
користувачем, що не має уявлення про масив даних, який йому потрібен чи,
наприклад, про кількість на яку потрібно розділити зображення. В такому випадку
варто виконати перетворення певну кількість раз з різними даними та визначити
який із утворених масивів даних є найбільш оптимальним для користувача.
81
Також важливо відмітити, що система формує масив даних для програми, що
використовувалась для досліджень. При використанні створеного масиву даних для
інших програм, можуть виникнути проблеми через структуру файлу масиву,
особливо потрібно звернути увагу на назву таблиці у файлі, назву стовпців та
порядок перших декілька стовпців з даних про позначення сегментів та назви
файлів. Ці дані можуть відрізнятись в інших програмах, як і їх обробка. Тому слід
перед використанням визначити структуру файлу, яка необхідна для програми у
якій буде використаний файл та за необхідності змінити. Проте значення
характеристик не повинні бути змінені.
82
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
83
ДОДАТКИ
84