Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/8824| Title: | Програмне забезпечення інформаційної системи для фотографа любителя. Модуль редактора зображення |
| Authors: | Півень, Олександр Борисович Бабич, Артур Денисович |
| Keywords: | Python;програмне забезпечення;OpenCV;масштабування;Python;software;OpenCV;scaling |
| Issue Date: | 11-Jun-2024 |
| Abstract: | АНОТАЦІЯ
Бабич Артур Денисович, представляю кваліфікаційну роботу бакалавра на тему: «Програмне забезпечення інформаційної системи для фотографа любителя. Модуль редактора зображень» за спеціальностю «121 – Інженерія програмного забезпечення» в Черкаському державному технологічному університеті в м.Черкаси в 2024 році.
Дана робота бакалавра присвячена аналізу та розробці програмного забезпечення для обробки зображень з використанням бібліотеки OpenCV та мови програмування Python. Вона включає огляд існуючих досліджень у даній галузі, аналіз потреб та вимог цільової аудиторії, розробку архітектури програми, розробку функцій і алгоритмів роботи, тестування та оцінку результатів.
Головні завдання:
1 Інформаційний пошук методів та засобів розв’язання заданих задач.
2 Конструювання програмного забезпечення інформаційної системи модуль редактора зображень для фотографа любителя.
3 Проєктування програмного забезпечення інформаційної системи модуль редактора зображень для фотографа любителя.
4 Тестування та ліквідація недоліків програмного забезпечення.
5 Провадження та супроводження програмного забезпечення.
У роботі використовуються сучасні техніки та методи програмування, такі як мова програмування Python, бібліотека OpenCV для обробки зображень та інші необхідні інструменти та техніки.
Основним результатом цієї роботи є розробка програмного забезпечення, яке надає користувачам зручні та ефективні можливості обробки зображень, включаючи функції фільтрації, масштабування, кадрування та інших маніпуляцій із зображеннями.
Розроблена програма є ефективним інструментом професійної та аматорської обробки зображень і сприяє підвищенню якості та швидкості обробки візуальної інформації. ANNOTATION Artur Denisovych Babich, I present my bachelor's thesis on the topic: "Software support of an information system for an amateur photographer. Image editor module" in the specialty "121 - Software engineering" at the Cherkasy State University of Technology in Cherkasy in 2024. This bachelor thesis is devoted to the analysis and development of software for image processing using the OpenCV library and the Python programming language. It includes a review of existing research in this field, analysis of the needs and requirements of the target audience, development of the program architecture, development of functions and work algorithms, testing and evaluation of results. Main tasks: 1 Information search for methods and means of solving given problems. 2 Designing an information system software image editor module for an amateur photographer. 3 Information system software design, image editor module for amateur photographer. 4 Testing and elimination of software defects. 5 Operation and maintenance of the software. The work uses modern programming techniques and methods, such as the Python programming language, the OpenCV library for image processing, and other necessary tools and techniques. The main result of this work is the development of software that provides users with convenient and efficient image processing capabilities, including filtering, scaling, cropping and other image manipulation functions. The developed program is an effective tool for professional and amateur image processing and helps improve the quality and speed of visual information processing. |
| URI: | https://er.chdtu.edu.ua/handle/ChSTU/8824 |
| Appears in Collections: | 121 Інженерія програмного забезпечення (Інженерія програмного забезпечення) |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| Кваліфікаційна робота бакалавра Бабич Артур Денисович.pdf Restricted Access | 6.09 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет інформаційних технологій і систем
Кафедра програмного забезпечення автоматизованих систем
ПОЯСНЮВАЛЬНА ЗАПИСКА
до кваліфікаційної роботи
бакалавра
на тему: « Програмне забезпечення інформаційної системи для
фотографа любителя. Модуль редактора зображення »
Виконав: студент 4 курсу, групи ПЗ-2004
спеціальності
121 «Інженерія програмного забезпечення»
(шифр і назва напряму підготовки)
Студент Бабич А.Д.
(прізвище та ініціали)
Керівник Півень О.Б.
(прізвище та ініціали)
Рецензент
(прізвище та ініціали)
Черкаси 2024
Черкаський державний технологічний університет
повне найменування вищого навчального закладу
Факультет інформаційних технологій і систем
Кафедра програмного забезпечення автоматизованих систем
Освітній рівень бакалавр
Спеціальність 121 «Інженерія програмного забезпечення»
Освітня програма Інженерія програмного забезпечення
ЗАТВЕРДЖУЮ
Зав. кафедри ПЗАС, професор
Голуб_С.В__________________
«___» _____________ 2024 року
З А В Д А Н Н Я
НА КВАЛІФІКАЦІЙНУ РОБОТУ СТУДЕНТУ
Бабич Артур Денисович
(прізвище, ім’я, по батькові)
1. Тему проекту (роботи) «Програмне забезпечення інформаційної системи для фотографа
любителя. Модуль редактора зображення»
Керівник проекту (роботи) Півень Олександр Борисович к.ф.-м.н. доцент
(прізвище, ім’я , по батькові, науковий ступінь, вчене звання)
Затверджені наказом Черкаського державного технологічного університету від « 26 » лютого 2024
року №60/04
2. Строк подання студентом проекту (роботи) 03.06.2024
3. Вхідні дані до проекту (роботи) стандарти програмного забезпечення; процеси управління;
вимоги до проекту; календарне планування проекту; управління ризиками проекту; управління
ресурсами
4. Зміст розрахунково-пояснювальної записки (перелік питань, які потрібно розробити) Вступ;
Існуючі методи та засоби вирішення поставлених завдань; Впровадження результатів досліджень
у практику; Проектування програмного забезпечення інформаційних систем; Розробка та
тестування програмного забезпечення; Висновки; Список використаних джерел;
Додатки.
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових робіт проекту)
Слайд 1, Слайд 2, Слайд 4, Слайд 5, Слайд 6, Слайд 7, Слайд 8, Слайд 9, Слайд 10, Слайд 11.
6. Консультанти розділів роботи
Прізвище, ініціали та Підпис, дата
Розділ
посади консультанта Завдання видав Завдання прийняв
1
2
7. Дата видачі завдання 02 грудня 2023 р
КАЛЕНДАРНИЙ ПЛАН
Строк виконання
№ етапів
Назва етапів випускної роботи Примітки
п/п кваліфікаційної
роботи
1 Постановка задачі 02.12.2023 виконано
2 Підготовка завдання 10.12.2023 виконано
3 Погодження завдання 25.12.2023 виконано
4 Затвердження завдання 12.01.2024 виконано
Основна стадія
1 Підбір матеріалів 28.01.2024 виконано
2 Аналіз шляхів вирішення поставлених задач 15.02.2024 виконано
3 Розрахунок основних параметрів роботи 02.03.2024 виконано
4 Вибір кінцевого варіанту проектного рішення 21.03.2024 виконано
5 Оформлення первісної редакції роботи 20.04.2024 виконано
Заключна стадія
1 Узгодження прийнятих проектних рішень з керівником 03.05.2024 виконано
2 Оформлення пояснювальної записки роботи в кінцевій 10.05.2024 виконано
редакції
3 Попередній захист роботи 29.05.2024 виконано
4 Затвердження роботи 11.06.2024 виконано
5 Рецензування роботи 11.06.2024 виконано
6 Захист роботи виконано
Студент _____________________ Бабич А.Д
(підпис) (прізвище та ініціали)
Керівник роботи _____________________ Півень О.Б.
(підпис) (прізвище та ініціали)
АНОТАЦІЯ
Бабич Артур Денисович, представляю кваліфікаційну роботу бакалавра на
тему: «Програмне забезпечення інформаційної системи для фотографа любителя.
Модуль редактора зображень» за спеціальностю «121 – Інженерія програмного
забезпечення» в Черкаському державному технологічному університеті в
м.Черкаси в 2024 році.
Дана робота бакалавра присвячена аналізу та розробці програмного
забезпечення для обробки зображень з використанням бібліотеки OpenCV та мови
програмування Python. Вона включає огляд існуючих досліджень у даній галузі,
аналіз потреб та вимог цільової аудиторії, розробку архітектури програми,
розробку функцій і алгоритмів роботи, тестування та оцінку результатів.
Головні завдання:
1 Інформаційний пошук методів та засобів розв’язання заданих задач.
2 Конструювання програмного забезпечення інформаційної системи модуль
редактора зображень для фотографа любителя.
3 Проєктування програмного забезпечення інформаційної системи модуль
редактора зображень для фотографа любителя.
4 Тестування та ліквідація недоліків програмного забезпечення.
5 Провадження та супроводження програмного забезпечення.
У роботі використовуються сучасні техніки та методи програмування, такі
як мова програмування Python, бібліотека OpenCV для обробки зображень та інші
необхідні інструменти та техніки.
Основним результатом цієї роботи є розробка програмного забезпечення,
яке надає користувачам зручні та ефективні можливості обробки зображень,
включаючи функції фільтрації, масштабування, кадрування та інших маніпуляцій
із зображеннями.
Розроблена програма є ефективним інструментом професійної та
аматорської обробки зображень і сприяє підвищенню якості та швидкості обробки
візуальної інформації.
ANNOTATION
Artur Denisovych Babich, I present my bachelor's thesis on the topic: "Software
support of an information system for an amateur photographer. Image editor module" in
the specialty "121 - Software engineering" at the Cherkasy State University of
Technology in Cherkasy in 2024.
This bachelor thesis is devoted to the analysis and development of software for
image processing using the OpenCV library and the Python programming language. It
includes a review of existing research in this field, analysis of the needs and
requirements of the target audience, development of the program architecture,
development of functions and work algorithms, testing and evaluation of results.
Main tasks:
1 Information search for methods and means of solving given problems.
2 Designing an information system software image editor module for an amateur
photographer.
3 Information system software design, image editor module for amateur
photographer.
4 Testing and elimination of software defects.
5 Operation and maintenance of the software.
The work uses modern programming techniques and methods, such as the Python
programming language, the OpenCV library for image processing, and other necessary
tools and techniques.
The main result of this work is the development of software that provides users
with convenient and efficient image processing capabilities, including filtering, scaling,
cropping and other image manipulation functions.
The developed program is an effective tool for professional and amateur image
processing and helps improve the quality and speed of visual information processing.
ЗМІСТ
ВСТУП……………………………………………………………………………….5
РОЗДІЛ 1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ ПОСТАВЛЕНИХ
ЗАВДАНЬ…………………………………………………………………………….9
1.1 Аналіз існуючих методів на засобів вирішення задачі………………..........9
1.2 Аналіз існуючих аналогів програми .............................................................. 14
1.3 Постановка задач ............................................................................................. 18
Висновки до розділу 1……………………………………………………………...20
РОЗДІЛ 2 ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ СИСТЕМИ
..................................................................................................................................... 21
2.1 Моделювання предметної області ................................................................. 21
2.1.1 Предметна область моделювання. Модель предметної області.
Словник предметної області ............................................................................ 15
2.1.2 Елементи моделювання предметної області ......................................... 24
2.1.3 Робоча область моделювання ................................................................. 26
2.2 Формування та аналіз вимог .......................................................................... 27
2.2.1 Формування вимог до програмного забезпечення. Первинні і детальні
вимоги. Вимоги замовника і розробника. Функціональні та
нефункціональні вимоги ................................................................................... 27
2.2.2 Формування вимог за допомогою діаграми прецедентів ..................... 31
2.3 Проектування логічної структури програмного комплексу ....................... 32
2.3.1 Діаграми класів ......................................................................................... 32
2.3.2 Діаграми пакетів ....................................................................................... 33
2.4 Архітектурне проектування ........................................................................... 35
2.4.1 Діаграма компонентів .............................................................................. 35
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма
розгортання ........................................................................................................ 36
ЧДТУ 242047.001 ПЗ
З м Лис № Докум. Підпи Дат
.Р озтр об Бабич А.Д. с а «Програмне забезпечення Літ. Лист Листів
К. ерівни П івень О.Б. інформаційної системи для
к фотографа-любителя. Модуль ФІТІС, Кафедра ПЗАС,
Н .конт Півень
редактора » ПЗ-2004
рЗ.а тв. ГОо.Блу. б С.В.
А
2.5 Моделювання поведінки системи ........................................................... 38
2.5.1 Діаграма діяльності .................................................................................. 38
2.5.2 Діаграма послідовності ............................................................................ 39
2.5.3 Діаграма комунікації ................................................................................ 41
2.5.4 Діаграма скінченного автомату .............................................................. 42
Висновки до розділу 2 .............................................................................................. 44
РОЗДІЛ 3 РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ................................ 45
3.1 Розробка програмного комплексу ................................................................. 45
3.1.1 Обґрунтування вибору засобів реалізації .............................................. 45
3.1.2 Опис структурної (функціональної) схеми ........................................... 46
3.1.3 Опис логічної схеми системи .................................................................. 49
3.1.4 Розробка бази даних ................................................................................. 50
3.1.5 Розробка інтерфейсу користувача .......................................................... 50
3.1.6 Опис розробки програмних компонентів .............................................. 52
3.2 Тестування системи ........................................................................................ 54
3.2.1 Модульне тестування ............................................................................... 54
3.2.2 Інтеграційне тестування .......................................................................... 56
3.2.3 Системне тестування ............................................................................... 59
3.2.4 Приймальне тестування ........................................................................... 61
3.3 Приклади впровадженого програмного комплексу ..................................... 63
Результати тестування……………………………………………………….……..66
Висновки до розділу 3……………………………………………………………...68
ВИСНОВКИ ............................................................................................................... 69
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ................................................................. 71
ДОДАТОК А .............................................................................................................. 74
ДОДАТОК Б……………………………………………………………………...…76
ДОДАТОК В .............................................................................................................. 95
ДОДАТОК Г………………………………………………………………………...99
Лист
ЧДТУ 242047.001ПЗ
З м. Ли ст № док. Підпис Дата
ЧДТУ.24 2047.001ПЗ
ВСТУП
Актуальність теми: Актуальність теми визначається потребою у розробці
програмного забезпечення інформаційної системи для фотографа любителя, за
для зручної та ефективної обробки знімків. Розробка програми для редагування
зображень є актуальною через зростаючу потребу в інструментах для обробки
графічного контенту як серед продвигнутих фотографів так і серед початківців.
Сучасні технології та соціальні мережі сприяють поширенню візуальної
інформації, тому фотографи прагнуть мати доступ до простих, але потужних
інструментів для покращення якості зображень. Такі програми дозволяють
зручно редагувати фото, налаштовувати кольорові параметри, додавати ефекти,
що сприяє створенню візуально привабливого контенту та підвищує його
впливовість. Таким чином, розробка додатку для редагування фотографій є
актуальною та перспективною, оскільки відповідає сучасним потребам
користувачів.
Мета розробки: Метою розробки є розробка програмного забезпечення
інформаційної технології, що дозволить фотографам любителям швидко та
ефективно обробляти свої знімки.
Завдання розробки: Завданням розробки є розробка програмного
забезпечення для редагування зображень, яке буде інтуїтивно зрозумілим та
функціональним, що дозволить користувачам легко та ефективно обробляти
графічний контент.
Для досягнення цієї цілі, необхідно виконати наступні кроки:
- інформаційний пошук методів, засобів та методик побудови
програмного забезпечення інформаційних систем виконання
поставлених завдань;
- проектування програмного забезпечення інформаційної системи для
редагування зображень;
5
ЧДТУ.24 2047.001ПЗ
- конструювання програмного забезпечення інформаційної системи для
редагування зображень. Реалізація функціоналу, включаючи обробку
зображень, збереження та керування файлами;
- тестування програмного забезпечення інформаційної системи для
редагування зображень. Перевірка роботи всіх компонентів системи,
виявлення та виправлення помилок, забезпечення стабільної роботи
програми;
- впровадження та супроводження програмного забезпечення
інформаційної системи для редагування зображень. Організація процесу
впровадження програми у використання, навчання користувачів,
надання технічної підтримки.
Об’єкт розробки: Об'єктом розробки є програмне забезпечення для
редагування фотографій для фотографів любителів. Цей додаток призначений
для роботи з цифровими зображеннями, надаючи користувачам інструменти для
редагування, обробки та покращення фотографій.
Предмет розробки: Предметом розробки є процес побудови програмного
забезпечення інформаційної системи для фотографа любителя.
Методи проєктування та конструювання: Для розробки програмного
забезпечення модуля редактора для фотографа-любителя були використані
наступні методи та засоби:
Мови програмування:
- Python: Використовувався для реалізації основного функціоналу
завдяки його багатій екосистемі бібліотек для обробки зображень і
простоті у використанні [1].
Бібліотеки та фреймворки:
- Pillow: Бібліотека для роботи із зображеннями в Python, що надає
можливості для відкриття, обробки та збереження різних форматів
зображень (наприклад, зміна розміру, обрізка, фільтрація) [2];
6
ЧДТУ.24 2047.001ПЗ
- OpenCV: Використовувався для виконання складніших операцій з
обробки зображень, таких як виявлення об'єктів, фільтрація,
трансформації та аналіз зображень [3];
- Tkinter: Для створення графічного інтерфейсу користувача у десктопних
додатках. Цей модуль стандартної бібліотеки Python дозволяє швидко
створювати прості та інтуїтивно зрозумілі GUI [4].
Інструменти для тестування та відлагодження:
- Unit-тестування: Використовувалося для перевірки коректності роботи
окремих модулів та функцій [5]. Це забезпечує стабільність коду і
зменшує ймовірність помилок під час змін;
- налагоджувачі (debuggers): Вбудовані засоби налагодження в IDE, такі
як PyCharm, використовувалися для пошуку та виправлення помилок у
коді, що допомагає швидко і ефективно ідентифікувати та виправляти
помилки [6], [7], [8].
Середовища розробки (IDE):
- PyCharm: Використовувався для розробки та тестування Python-коду.
PyCharm надає зручні засоби для написання, відлагодження та
тестування коду [8];
- Visual Studio Code: Використовувався для редагування коду та
створення веб-інтерфейсу. Цей редактор коду підтримує велику
кількість розширень для різних мов програмування і фреймворків, що
підвищує продуктивність розробки [9].
Для проектування також були використані різні діаграми UML, що
сприяють візуалізації структури та поведінки розроблюваної системи. Діаграми
Unified Modeling Language (UML) допомагають розробникам краще розуміти та
проектувати систему [10].
Опис отриманих результатів. Розроблено комплексне програмне
забезпечення для обробки зображення, яке включає функціональний та зручнй
користувацький інтерфейс, що забезпечує легкий доступ до всіх основних
функцій програмного забезпечення.
7
ЧДТУ.24 2047.001ПЗ
Система була оптимізована для забезпечення високої продуктивності та
швидкої обробки даних, що дозволяє користувачам ефективно виконувати
завдання. Забезпечено високу надійність програмного забезпечення, яка включає
мінімізацію помилок та стабільну роботу під високими навантаженнями.
Використовувалися різноманітні методи тестування, включаючи модульне
тестування, інтеграційне тестування, приймальне тестування та системне
тестування.
Практичне значення досягнутих результатів. Практичне значення
досягнутих результатів розробки фоторедактору є значним і багатогранним.
Створення цього програмного забезпечення забезпечує користувачів
зручним інструментом для редагування фотографій. Користувачі можуть легко і
швидко обробляти свої зображення й корегувати всі необхідні параметри
зображення. Інтуїтивно зрозумілий інтерфейс користувача дозволяє швидко
освоїти програму і приступити до роботи. Також під час створення
фоторедактора, використовалися сучасні технології та методології розробки
програмного забезпечення.
Практичне значення досягнутих результатів розробки даного
фоторедактора включає підвищення ефективності обробки зображень, надання
користувачам зручного інструменту для творчої роботи, сприяння розвитку
навичок розробників та підтримку різноманітних професійних і особистих
ініціатив у сфері візуального контенту.
8
ЧДТУ.24 2047.001ПЗ
РОЗДІЛ 1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ
ПОСТАВЛЕНИХ ЗАВДАНЬ
1.1 Аналіз існуючих методів та засобів вирішення задачі
Зважаючи на різноманітність і складність завдання створення
програмного забезпечення для редактора фотографій для любителів, існує
безліч методів і засобів, які можуть бути використані для його розв'язання.
Давайте розглянемо докладніше кожен з цих методів:
Використання існуючих фоторедакторів: Одним з можливих шляхів є
використання вже існуючих фоторедакторів, таких як Adobe Photoshop [11],
GIMP [12], Canva [13] тощо. Ці програмні продукти мають великий набір
функцій і можливостей, проте для користувачів-любителів вони можуть бути
складними у використанні. Тому можливий підхід полягає в розробці
інтеграції або додаткових модулів, які спрощують функціонал для цільової
аудиторії.
Реалізація власного редактора: Іншим шляхом є розробка програмного
забезпечення з нуля. Це дає можливість повністю контролювати функціонал і
дизайн програми. Для цього можна використовувати різні мови
програмування, такі як Python, Java, або JavaScript, та відповідні бібліотеки для
роботи з фотографіями та інтерфейсом користувача [1], [14], [15].
Використання веб-технологій: Ще один підхід - це розробка веб-додатка
для редагування фотографій. Він дозволяє користувачам працювати з
фотографіями безпосередньо у веб-браузері. Для цього використовуються такі
технології, як HTML, CSS, JavaScript для фронтенду, і мови програмування,
такі як Python або Node.js для бекенду [15], [16], [17], [18].
Мобільний додаток: Для зручності користувачів можна розробити
мобільний додаток для редагування фотографій. Це дозволить їм редагувати
свої знімки безпосередньо на смартфонах або планшетах.
Хмарні рішення: І нарешті, можна розробити редактор фотографій, який
працює в хмарному середовищі. Це дозволить користувачам зберігати,
9
ЧДТУ.24 2047.001ПЗ
обмінюватися та редагувати свої фотографії в онлайні, без необхідності
встановлення спеціалізованого програмного забезпечення.
Вибір конкретного методу залежить від потреб, вимог проекту, доступних
ресурсів та цільової аудиторії. Комбінування різних підходів також може бути
ефективним рішенням.
Головна задача даної роботи полягає в створенні інноваційного редактора
фотографій, що надасть користувачам широкий спектр можливостей для
творчого виразу та покращення якості їх зображень. Основна мета полягає в
розробці інтуїтивно зрозумілого та легкого у використанні інструменту, який
буде відповідати потребам як початківців, так і досвідчених користувачів.
Давайте детальніше обговоримо про складнощі цього завдання та їх методи
вирішення.
Розробка такої програми для редагування фотографій включає в себе
численні виклики і аспекти, які потрібно враховувати.
В першу чергу, це складність алгоритмів обробки зображень. Розробка
програм для редагування фотографій включає декілька складнощів, особливо у
використанні алгоритмів обробки зображень. Ці програми застосовують різні
алгоритми для фільтрації, масштабування, ротації, корекції кольору та інших
операцій, які можуть бути досить складними. Саме ці алгоритми можуть
вимагати значної обчислювальної потужності, особливо коли вони
застосовуються до великих файлів або обробляють великий обсяг даних.
Однією з основних проблем, що виникають при розробці та реалізації цих
програм, є обчислювальна складність. Багато алгоритмів для обробки зображень
можуть вимагати значної часової затримки, оскільки вони працюють з кожним
пікселем фотографії і виконують складні математичні операції. Наприклад,
алгоритми корекції кольору або застосування фільтрів можуть значно
ускладнити обробку, особливо при великих роздільних здатностях.
Оптимізація алгоритмів грає важливу роль у розробці програм для
редагування фотографій. Використання паралельного програмування, апаратного
прискорення і оптимізації використання пам'яті може суттєво поліпшити
10
ЧДТУ.24 2047.001ПЗ
продуктивність програм, зменшуючи час обробки і використання ресурсів
комп'ютера.
До інших складнощів розробки таких програм входить забезпечення
високої якості результатів обробки зображень. Важливо, щоб програми
забезпечували високу якість обробки, зберігаючи деталі і колірну точність
зображень, що обробляються.
Додатково, важливою проблемою є коректна обробка різних форматів
файлів зображень. Фотографії можуть зберігатися у різних форматах, таких як
JPEG, PNG, TIFF, RAW та інші, кожен з яких має свої особливості і обмеження.
Програма для редагування фотографій повинна правильно інтерпретувати ці
формати, забезпечуючи високу якість зображень і зберігаючи метадані без
втрати.
Наприклад, формат JPEG є стандартом для зберігання стиснутих зображень
з високою ступенем стиснення. При обробці цих зображень важливо уникати
артефактів стиснення, які можуть вплинути на якість зображення. Формат PNG,
у свою чергу, підтримує прозорість, та його використання вимагає особливої
уваги до збереження деталей та кольорової точності. Формат RAW, який
використовується професіоналами для зйомки, містить набагато більше
інформації, ніж JPEG або PNG, і потребує спеціальної обробки для збереження
всіх деталей та кольорової інформації.
Для вирішення цих проблем програма має використовувати спеціалізовані
бібліотеки і алгоритми для кожного формату, забезпечуючи правильне читання
та запис зображень. Це включає в себе не лише сам процес збереження
зображень, а й правильне управління кольорами, метаданими та іншими
параметрами, які можуть бути важливими для кінцевого користувача.
Додатково, важливим аспектом є розробка графічного інтерфейсу
користувача (GUI), який є ключовим елементом для забезпечення зручного та
ефективного використання редактора фотографій. GUI має бути інтуїтивно
зрозумілим і зручним для користувача, щоб забезпечити зручний доступ до всіх
функцій програми.
11
ЧДТУ.24 2047.001ПЗ
На приклад, важливо мати зручні та прості у використанні інструменти для
навігації по фотографіям, вибору операцій редагування, налаштування
параметрів, перегляду та збереження зображень. Ефективний інтерфейс повинен
відображати зміни у реальному часі та забезпечувати зручний доступ до
інструментів керування колірною гамою, яскравістю, контрастом та іншими
параметрами обробки зображень.
Для досягнення цих цілей рекомендується використовувати сучасні
технології і бібліотеки для розробки GUI, такі як PyQt або Tkinter для веб-
додатків [19], [4]. Такі інструменти дозволяють розробникам створювати
ефективні та естетичні інтерфейси, які відповідають сучасним стандартам
дизайну і сприяють зручному користуванню програмою.
Додатково, важливими аспектами є масштабованість і підтримка програми.
Програмне забезпечення повинне бути готовим до масштабування для підтримки
нових функцій, форматів файлів і платформ. Це означає, що програма повинна
бути розроблена таким чином, щоб з легкістю можна було додавати нові
можливості без значних змін у вихідному коді.
Також важливо мати підтримку для оновлень і нових версій операційних
систем. Програма повинна коректно працювати на різних версіях операційних
систем, забезпечуючи надійну роботу із зображеннями та їх обробкою незалежно
від обраної платформи.
Для досягнення цих цілей рекомендується використовувати модульний
підхід до розробки, який дозволяє легко розширювати функціональні можливості
програми без значних змін у вихідному коді. Також варто розглянути
використання крос-платформених технологій розробки, які дозволяють
запускати програму на різних операційних системах без додаткових зусиль із
боку розробників.
Однією з важливих задач є забезпечення безпеки даних. Важливо захищати
персональні дані користувачів оброблюваних зображень.
12
ЧДТУ.24 2047.001ПЗ
Тестування і відлагодження є невід'ємною частиною процесу розробки
програмного забезпечення, включаючи редактор фотографій. Ці кроки необхідні
для забезпечення якості програми та надійності її роботи.
Продуктивне тестування оцінює швидкодію програми та її витрати
ресурсів. У випадку редактора фотографій це означає перевірку часу реакції при
виконанні операцій, використання пам'яті та обробку великих обсягів даних.
Тестування безпеки визначає, наскільки добре програма захищена від
потенційних атак, включаючи перехоплення даних, несанкціонований доступ та
інші загрози.
Загалом, тестування і відлагодження є важливими етапами в розробці
програмного забезпечення, що дозволяють забезпечити високу якість, надійність
та безпеку редактора фотографій перед його випуском на ринок.
Захист особистих даних і зображень від несанкціонованого доступу та
забезпечення конфіденційності можна досягти за допомогою сучасних методів
шифрування.
Програмне забезпечення також повинно відповідати всім потрібним
стандартам і вимогам, зокрема щодо якості зображення, швидкості обробки і
безпеки.
Для дотримання міжнародних стандартів щодо різних форматів зображень,
таких як JPEG, PNG, TIFF, RAW і інші, важливо використовувати спеціалізовані
бібліотеки. Наприклад, libjpeg [20] для JPEG, libpng [21] для PNG, libtiff [22] для
TIFF і libraw [23] для RAW зображень. Ці бібліотеки забезпечують правильну
обробку зображень та збереження цих зображень з високою якістю і зберігають
метадані.
Отже, розробка програмного забезпечення для редагування фотографій
включає в себе численні виклики і вимоги, які потребують комплексного підходу
і детального аналізу кожного аспекту розробки.
З огляду на всі недоліки і переваги було прийнято рішення робити
десктопну програму на мові Python.
13
ЧДТУ.24 2047.001ПЗ
1.2 Аналіз існуючих аналогів програми
Оцінювання аналогів проводилося за кількома параметрами, щоб
забезпечити повне та об'єктивне порівняння. Основні параметри оцінювання
включали:
Функціональність: оцінювався набір можливостей та інструментів, які
надають аналоги. Особлива увага приділялася здатності програм обробляти
зображення, підтримувати різні формати файлів, здійснювати основні та
додаткові операції редагування.
Інтерфейс користувача: аналізувався зручність та інтуїтивність
користувацького інтерфейсу, доступність основних функцій, наявність
довідкових матеріалів та підказок. Важливою була легкість освоєння програми
новими користувачами.
Швидкість роботи: перевірялася продуктивність програм, швидкість
обробки зображень та реакції інтерфейсу на команди користувача. Це включало
час завантаження зображень, швидкість виконання основних операцій, а також
загальну стабільність роботи.
Сумісність: оцінювалася здатність програм працювати на різних
операційних системах та пристроях. Також зверталася увага на підтримку різних
форматів зображень та можливість інтеграції з іншими програмними
продуктами.
Надійність та безпека: аналізувалася стабільність роботи програм, частота
виникнення помилок та збоїв. Також важливим аспектом була безпека даних
користувача, захист від вірусів та інших шкідливих програм.
Ціна: розглядалася вартість програм, наявність безкоштовних версій або
пробних періодів, а також співвідношення ціни та якості.
При оцінюванні аналогів я звертав особливу увагу на ті аспекти, які були
найважливішими для кінцевих користувачів моєї програми, зокрема
функціональність, інтерфейс та швидкість роботи.
Програмне забезпечення Photoscape
14
ЧДТУ.24 2047.001ПЗ
Photoscape (Photoscape/Photoscape) — безкоштовний графічний редактор із
величезними можливостями. Ця програма виконує функції перегляду та
редагування зображень, дозволяючи створювати красиві та унікальні колажі з
ваших фотографій [24].
Переваги PhotoScape:
PhotoScape має інтуїтивно зрозумілий інтерфейс, що робить його легким
для освоєння навіть для початківців. Програма пропонує безліч функцій, таких
як обробка пакетів зображень, редагування, створення анімацій GIF, друк макетів
та злиття зображень, що дозволяє виконувати різноманітні завдання з
редагування фотографій. Можливість редагувати велику кількість зображень
одночасно значно економить час. Програма пропонує різноманітні фільтри,
ефекти та інструменти для корекції кольорів, освітлення та контрасту, що
дозволяє покращувати якість фотографій. PhotoScape має вбудовані інструменти
для створення колажів та анімацій GIF, що розширює можливості творчого
вираження користувачів. PhotoScape доступний безкоштовно, що робить його
привабливим варіантом для користувачів з обмеженим бюджетом. Програма
працює досить швидко навіть на старих комп'ютерах.
Недоліки PhotoScape:
PhotoScape не надає такої ж потужності та гнучкості, як професійні
редактори фотографій, такі як Adobe Photoshop, що може бути проблемою для
користувачів, які потребують більш точних інструментів для редагування.
Інтерфейс PhotoScape може виглядати застарілим у порівнянні з сучасними
програмами редагування фотографій. Програма не підтримує роботу з шарами,
що може обмежити можливості редагування для більш складних проектів.
Відсутні деякі професійні функції, такі як підтримка масок, векторних
інструментів та розширені налаштування кольору. Хоча основна версія
PhotoScape є безкоштовною, користувачі можуть зіткнутися з рекламою і
пропозиціями щодо оновлення до платної версії. PhotoScape може мати труднощі
з обробкою дуже великих файлів зображень, що може призвести до зниження
15
ЧДТУ.24 2047.001ПЗ
продуктивності. Програма доступна лише для Windows та macOS, що обмежує
можливості користувачів інших операційних систем, таких як Linux.
В цілому, PhotoScape є відмінним інструментом для початківців і
любителів, які потребують простого у використанні редактора фотографій з
широким набором функцій, але він може бути недостатньо потужним для
професіоналів або для виконання дуже складних завдань редагування (Рис. 1.1).
Рисунок 1.1 — Інтерфейс програми Photoscape [24]
16
ЧДТУ.24 2047.001ПЗ
Програмне забезпечення Photo Editor by BeFunky
Befunky Онлайн-сервіс для обробки фотографій, призначений для
редагування та корекції ваших фотографій з можливістю застосування безлічі
високоякісних ефектів та фільтрів [25].
Сервіс пропонує ряд шаблонів, які можна використовувати для створення
зображень портфоліо із завантажених фотографій. Створені зображення можна
зберігати на комп’ютері та публікувати в соціальних мережах і сервісах. Для
початку роботи необхідно зареєструватися. Сервіс пропонує безліч інструментів,
шаблонів, тем, більшість з яких платні, але для створення фотоколажів достатньо
і безкоштовних інструментів (Рис. 1.2).
Переваги BeFunky: BeFunky має інтуїтивно зрозумілий та зручний
інтерфейс, що робить його легким для освоєння навіть для початківців.
Програма пропонує безліч функцій для редагування фотографій,
включаючи фільтри, ефекти, інструменти для корекції кольору та ретуші.
Вбудований інструмент для створення колажів дозволяє користувачам
швидко та легко створювати композиції з кількох фотографій. BeFunky працює
онлайн, тому не вимагає завантаження та встановлення, що економить місце на
жорсткому диску та забезпечує доступність з будь-якого пристрою з інтернет-
з'єднанням.
Програма має функції для дизайну графіки, що робить її універсальним
інструментом для створення візуального контенту. BeFunky підтримує
інтеграцію з соціальними мережами, дозволяючи легко ділитися
відредагованими зображеннями.
Недоліки BeFunky: BeFunky обмежує доступ до багатьох функцій у
безкоштовній версії, що може вимагати підписки на преміум-версію для
отримання повного набору інструментів. Відсутність підтримки роботи з шарами
обмежує можливості редагування для більш складних проектів. Програма може
працювати повільно при обробці великих файлів зображень або під час
використання складних ефектів, що може бути незручно для користувачів, які
17
ЧДТУ.24 2047.001ПЗ
працюють з високоякісними фотографіями. BeFunky вимагає стабільного
інтернет-з'єднання, оскільки працює онлайн, що може бути проблемою для
користувачів з обмеженим доступом до Інтернету. Інтерфейс може виглядати
перевантаженим рекламою у безкоштовній версії, що може відволікати під час
роботи.
Рисунок 1.2 — Інтерфейс програми Photo Editor by BeFunky [25]
1.3 Постановка задачі
На основі проведеного аналізу аналогів, було виявлено низку
характеристик, які необхідно включити у розробку для досягнення високої
функціональності, зручності користування та продуктивності програмного
забезпечення. Оцінювання аналогів дозволило визначити основні параметри та
критерії, яким повинна відповідати розроблена програма для забезпечення її
конкурентоспроможності та задоволення потреб кінцевих користувачів.
Основні завдання, які необхідно реалізувати у програмі:
- розширена функціональність для обробки зображень:
- підтримка широкого спектру форматів зображень;
- надання основних інструментів редагування, таких як обрізання,
зміна розмірів, корекція кольорів;
18
ЧДТУ.24 2047.001ПЗ
- додаткові можливості, включаючи застосування фільтрів, робота з
шарами, додавання тексту та інших графічних елементів.
- інтуїтивно зрозумілий інтерфейс користувача:
- зручна та логічно структурована навігація;
- доступність основних функцій у декілька кліків;
- інтерактивні підказки та довідкові матеріали для користувачів;
- можливість налаштування інтерфейсу під індивідуальні потреби
користувача.
- висока продуктивність та стабільність роботи:
- швидке завантаження зображень та виконання операцій
редагування;
- оптимізація роботи з великими файлами та високою роздільною
здатністю зображень;
- стабільна робота без збоїв та зависань.
- надійність та безпека:
- забезпечення безпечного зберігання даних користувачів;
- захист від вірусів та інших шкідливих програм;
- регулярні оновлення для забезпечення актуальності та безпеки
програмного забезпечення.
- доступність та економічність:
- наявність безкоштовної версії;
- вільний доступ до програми.
Реалізація зазначених задач дозволить створити програмний продукт, який
задовольнить потреби користувачів та забезпечить високий рівень
функціональності та зручності використання.
19
ЧДТУ.24 2047.001ПЗ
Висновок до розділу 1
Проаналізувавши існуючі аналоги програм для редагування фотографій, я
дійшов висновку, що є значний простір для вдосконалення на ринку. Існуючі
програми, такі як Photoscape та BeFunky, мають свої переваги, але також
виявляють низку недоліків, таких як обмежений функціонал у безкоштовних
версіях або складний інтерфейс для новачків.
Розробка моєї програми буде спрямована на задоволення потреб
фотографів-любителів, надаючи зручні та потужні інструменти для редагування
зображень, підтримку різних форматів та інтуїтивно зрозумілий інтерфейс.
Таким чином, моя програма зможе заповнити прогалини на ринку, допомагаючи
фотографам-аматорам реалізовувати свої творчі ідеї без зайвих труднощів та
витрат.
20
ЧДТУ.24 2047.001ПЗ
РОЗДІЛ 2 ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У
ПРАКТИКУ ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
ІНФОРМАЦІЙНИХ СИСТЕМ.
2.1 Моделювання предметної області.
В даному підрозділі ми розглянемо такі діаграми: діаграма класів,
діаграма пакетів. Розглянемо ці питання більш детальніше.
2.1.1 Предметна область моделювання. Модель предметної області.
Словник предметної області.
Предметна область мого проекту – розробка програмного забезпечення для
редагування зображень, орієнтованого на потреби фотографів-любителів. Цей
проект включає створення функціонального редактора зображень, який дозволяє
користувачам відкривати, редагувати та зберігати фотографії. Програма повинна
підтримувати різноманітні функції обробки зображень, такі як малювання,
налаштування параметрів зображення та забезпечення зручного графічного
інтерфейсу користувача (GUI).
Модель предметної області
Обробка зображень: Використання різних алгоритмів для редагування,
покращення та оптимізації зображень, включаючи малювання, корекцію
кольорів, застосування фільтрів та інші маніпуляції.
Підтримка форматів зображень: Забезпечення роботи з різними форматами
файлів (JPEG, PNG, TIFF, RAW тощо), зберігаючи при цьому високу якість та
метадані зображень.
Графічний інтерфейс користувача: Створення зручного, інтуїтивно
зрозумілого та ефективного інтерфейсу, який забезпечить легкий доступ до всіх
функцій редактора.
Безпека даних: Захист персональних даних і зображень користувачів від
несанкціонованого доступу, особливо при зберіганні або обміні файлами через
мережу.
21
ЧДТУ.24 2047.001ПЗ
Масштабованість і підтримка: Забезпечення можливості розширення
програми для підтримки нових функцій, форматів і платформ, а також оновлення
і сумісність з новими версіями операційних систем.
Тестування та відлагодження: Інтенсивне тестування програмного
забезпечення для виявлення помилок і недоліків, а також відлагодження для
покращення його роботи та відповідності всім потрібним стандартам і вимогам.
Розробка такого програмного забезпечення потребує використання різних
мов програмування, бібліотек та інструментів для забезпечення повного циклу
створення, тестування і підтримки функціональності редактора зображень.
Ця діаграма класів представляє структуру програми редактора для
любителя-фотографа, включаючи основні класи та їхні взаємозв'язки (Рис. 2.1).
Рисунок 2.1 – Модель предметної області (діаграма класів) до програмного
забезпечення «Редактор зображень для фотографа-любителя»
PhotoXEditor є головним класом програми, який містить основні
компоненти для роботи із зображеннями.
У класі є такі атрибути:
- img: екземпляр класу Img, який представляє зображення;
22
ЧДТУ.24 2047.001ПЗ
- basicFuncs: екземпляр класу BasicFuncs, який містить базові функції
для роботи із зображеннями;
- filters: екземпляр класу Filters, який містить методи для застосування
фільтрів до зображень;
- PIL: бібліотека для обробки зображень;
- tkinter: бібліотека для створення графічного інтерфейсу;
- numpy: бібліотека для роботи з масивами.
Методи класу PhotoXEditor включають:
- open_image(file_path: str): відкриває зображення з вказаного шляху;
- save_image(file_path: str): зберігає зображення за вказаним шляхом;
- draw_on_image(tool: str): малює на зображенні, використовуючи
вказаний інструмент;
- apply_filter(filter_name: str): застосовує фільтр до зображення;
- adjust_settings(setting: str, value: any): налаштовує параметри
зображення.
Img клас представляє зображення і містить такі атрибути:
- file_path: шлях до файлу зображення;
- image_data: дані зображення, представлені бібліотекою PIL.
Методи класу Img включають:
- load(file_path: str): завантажує зображення з вказаного шляху;
- save(file_path: str): зберігає зображення за вказаним шляхом;
- get_data(): PIL.Image: повертає дані зображення.
BasicFuncs клас містить базові функції для роботи із зображеннями,
включаючи методи:
- draw(image: PIL.Image, tool: str): малює на зображенні з використанням
вказаного інструменту;
- erase(image: PIL.Image): стирає частини зображення;
- undo(image: PIL.Image): відміняє останню дію.
Filters клас містить метод для застосування фільтрів до зображень:
23
ЧДТУ.24 2047.001ПЗ
- apply(image: PIL.Image, filter_name: str): застосовує вказаний фільтр до
зображення.
Клас PhotoXEditor має асоціації з класами Img, BasicFuncs та Filters, що
показує їхні взаємозв'язки та взаємодію в рамках програми.
Словник предметної області:
Рисунок 2.2 – Словник предметної області [26]
2.1.2 Елементи моделювання предметної області
Елементи моделювання предметної області визначають основні поняття,
зв’язки та об’єкти, які складають систему PhotoX Editor. Ці елементи
допомагають описати структуру та зрозуміти функціональність системи, як
взаємодіють її компоненти. У контексті даної роботи елементи моделювання
24
ЧДТУ.24 2047.001ПЗ
предметної області включають різноманітні сервіси та об’єкти, які відображають
основні аспекти редагування зображень та обробки, взаємодії з користувачем
через графічний інтерфейс, а також збереження та завантаження зображень.
Основним об'єктом моделювання є клас PhotoX Editor, який відповідає за
керування всією програмою. Він взаємодіє з іншими класами, такими як Img,
BasicFuncs та Filters, для забезпечення основних функцій програми. PhotoXEditor
ініціалізує та контролює основне вікно програми, відкриття та збереження
зображень, а також виклик функцій малювання та застосування фільтрів.
Клас Img представляє зображення як об'єкт, який можна завантажити з
файлу, зберегти та отримати його дані для подальшої обробки. Цей клас містить
атрибути для зберігання шляху до файлу та даних зображення, що зберігаються у
форматі, що підтримується бібліотекою PIL (Python Imaging Library). Основні
методи класу Img включають завантаження та збереження зображень, що
забезпечує основні функції роботи з файлами.
BasicFuncs включає в себе базові функції редагування зображень, такі як
малювання, стирання та скасування останніх дій. Ці функції реалізують основні
операції, які користувач може виконувати над зображенням, забезпечуючи
гнучкість та зручність у використанні.
Filters відповідає за застосування різноманітних фільтрів до зображень, що
дозволяє користувачеві додавати ефекти та покращувати якість зображень. Цей
клас реалізує метод застосування фільтрів, які можуть бути обрані користувачем
через інтерфейс програми.
Інтерфейс користувача реалізується за допомогою бібліотеки tkinter, яка
забезпечує зручний та інтуїтивно зрозумілий графічний інтерфейс для взаємодії з
користувачем. Це включає меню для відкриття та збереження файлів,
інструменти для малювання та застосування фільтрів, а також область для
відображення зображення.
Елементи моделювання предметної області також включають допоміжні
класи, такі як Resolution та Color, які зберігають інформацію про роздільну
здатність та кольорові параметри відповідно. Ці класи забезпечують підтримку
25
ЧДТУ.24 2047.001ПЗ
основних характеристик зображень, що необхідні для коректного їхнього
відображення та редагування.
Детальне вивчення та розуміння цих елементів допомагає чітко визначити
архітектуру та функціональність системи PhotoXEditor, забезпечуючи її
ефективну реалізацію та використання.
2.1.3 Робоча область моделювання
Коли користувач відкриває фоторедактор, він бачить головне вікно
програми, де відображається основне меню та область для роботи з
зображеннями. Спочатку він вибирає функцію завантаження зображення,
натискаючи на відповідну кнопку у меню. Програма відкриває діалогове вікно
для вибору файлу, де користувач може вибрати потрібне зображення зі свого
пристрою. Після вибору файлу зображення завантажується в область
відображення ImageView.
Користувач може почати редагувати зображення, обираючи різні
інструменти з меню редагування. Наприклад, він може вибрати інструмент
малювання, щоб додати малюнки або відмітки на зображення, або ж застосувати
фільтр для покращення якості зображення. Кожен інструмент та фільтр
представлений у меню EditMenu, де користувач може вибрати потрібну опцію.
При використанні інструментів малювання або фільтрів програма
використовує класи DrawOption та FilterOption відповідно. Кожна дія миттєво
відображається в області ImageView, дозволяючи користувачу бачити результати
своїх дій у реальному часі.
Крім того, користувач може налаштовувати параметри зображення, такі як
яскравість, контраст та насиченість, за допомогою функцій налаштування
AdjustmentOption. Ці параметри дозволяють точніше налаштувати зображення
відповідно до потреб користувача.
Після завершення редагування користувач може зберегти результати,
вибираючи опцію збереження у меню FileMenu. Програма відкриває діалогове
вікно для збереження файлу, де користувач може вибрати місце та формат для
26
ЧДТУ.24 2047.001ПЗ
збереження редагованого зображення. Після натискання кнопки "Зберегти"
зображення зберігається на пристрої користувача.
Таким чином, користувач за допомогою PhotoX Editor може завантажити
зображення, редагувати його за допомогою різноманітних інструментів та
фільтрів, налаштувати параметри зображення та зберегти результати своєї
роботи.
Рисунок 2.3 – Модель предметної області до програмного забезпечення
«Редактор зображень для фотографа-любителя»
2.2 Формування та аналіз вимог
В даному підрозділі ми розглянемо діаграму прецедентів та напишемо
вимоги до створюваної програми. Розглянемо ці питання більш детальніше.
27
ЧДТУ.24 2047.001ПЗ
2.2.1 Формування вимог до програмного забезпечення. Первинні і детальні
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні
вимоги.
В процесі визначення вимог до системи "Фоторедактор для фотографа-
любителя" були враховані як детальні так і первинні вимоги, вони будуть
визначати який фукціонал буде мати створене програмне забезпечення.
ПЕРВИННІ ВИМОГИ:
‒ програма повинна мати зручний та інтуїтивно зрозумілий інтерфейс;
‒ налаштування програми повинні бути гнучкими та зручними для
користувача;
‒ процес встановлення програми повинен бути простим та швидким;
‒ програма повинна бути швидкою у виконанні основних операцій;
‒ функціонал програми повинен дозволяти зберігати фотографії без
втрати якості після обробки.
ДЕТАЛЬНІ ВИМОГИ
‒ забезпечити швидке виконання основних операцій для підвищення
продуктивності та зниження часу очікування користувача. Програма
повинна оптимізувати використання ресурсів для забезпечення високої
швидкості роботи;
‒ програма повинна підтримувати завантаження та збереження файлів у
різних форматах, таких як JPEG, PNG, BMP, що забезпечить зручність
роботи з різними типами зображень;
‒ безпека даних повинна бути гарантована за допомогою сучасних
методів шифрування, щоб захистити конфіденційні дані від
несанкціонованого доступу. Програма повинна відповідати сучасним
стандартам безпеки та забезпечувати захист даних користувачів;
‒ налаштування програми повинні бути гнучкими та зручними для
користувача, що дозволить персоналізувати програму відповідно до
його потреб. Користувач повинен мати можливість змінювати
налаштування для адаптації програми під свої вимоги;
28
ЧДТУ.24 2047.001ПЗ
‒ програма повинна забезпечувати функцію відміни та повтору дій, що
дозволить користувачам легко виправляти помилки та
експериментувати з різними змінами;
‒ регулярні оновлення програми повинні бути передбачені для
поліпшення функціональності, виправлення помилок та підвищення
безпеки. Оновлення повинні здійснюватися без порушення роботи
користувачів і бути простими у встановленні;
‒ повинна бути реалізована можливість регулювання каналів RGB, що
дозволить користувачам точно налаштовувати кольори зображень або
інтерфейсу відповідно до їхніх потреб.
Вимоги замовника та розробника до системи "Програмне забезпечення
інформаційної системи для фотографа-любителя. Модуль редактора." можна
поділити на нефункціональні та функціональні вимоги.
ФУНКЦІОНАЛЬНІ ВИМОГИ
Зміна теми інтерфейсу:
‒ замовник: можливість вибору між темною та світлою темами для
зручності роботи в різних умовах освітлення.
‒ розробник: реалізація функціоналу для зміни теми інтерфейсу з
збереженням вибраних налаштувань.
Регулювання каналів RGB:
‒ замовник: можливість точного налаштування кольорів зображень за
допомогою регулювання каналів RGB.
‒ розробник: створення інтерфейсу для регулювання каналів RGB з
реальним часом відображенням змін.
Завантаження та збереження файлів:
‒ замовник: підтримка завантаження та збереження файлів у різних
форматах, таких як JPEG, PNG, BMP.
‒ розробник: реалізація функцій для завантаження та збереження файлів у
зазначених форматах з відповідними опціями налаштування.
Зміна розміру зображень:
29
ЧДТУ.24 2047.001ПЗ
‒ замовник: можливість зміни розміру зображень для адаптації їх до
різних вимог.
‒ розробник: впровадження інструменту для зміни розміру зображень з
можливістю налаштування пропорцій та якості.
Налаштування яскравості та контрасту:
‒ замовник: можливість налаштування яскравості та контрасту зображень
для покращення їх якості.
‒ розробник: створення інтерфейсу для налаштування яскравості та
контрасту з реальним часом відображенням змін.
Режим негативу:
‒ замовник: можливість застосування режиму негативу для покращення
видимості деталей на зображеннях.
‒ розробник: впровадження функції перетворення зображень у режим
негативу з можливістю відміни змін та попереднього перегляду.
НЕ ФУНКЦІОНАЛЬНІ ВИМОГИ:
Продуктивність:
‒ замовник: Забезпечення швидкої обробки зображень та відгуку
програми.
‒ розробник: Оптимізація алгоритмів обробки зображень для досягнення
мінімальної затримки під час виконання операцій.
Масштабованість:
‒ замовник: Можливість обробки великої кількості зображень без втрати
продуктивності.
‒ розробник: Впровадження механізмів, що дозволяють додавати нові
функції та обробляти більші обсяги даних без значного впливу на
швидкодію програми.
Надійність:
‒ замовник: Стабільна робота програми без збоїв та втрати даних.
‒ розробник: Реалізація системи логування та обробки помилок для
забезпечення безперервної роботи програми.
30
ЧДТУ.24 2047.001ПЗ
Юзабіліті:
‒ замовник: Інтуїтивно зрозумілий інтерфейс для зручного використання
програми користувачами.
‒ розробник: Використання сучасних принципів UX/UI дизайну для
створення зручного та зрозумілого інтерфейсу.
Сумісність:
‒ замовник: Підтримка різних операційних систем та пристроїв для
максимальної доступності програми.
‒ розробник: Використання кросплатформенних технологій для
забезпечення роботи програми на різних ОС та пристроях.
Технічна підтримка:
‒ замовник: Наявність оперативної технічної підтримки користувачів
програми.
‒ розробник: Створення системи зворотного зв'язку та підтримки, що
дозволяє швидко вирішувати питання користувачів та усувати проблеми.
2.2.2 Формування вимог за допомогою діаграми прецедентів
Діаграма прецедентів — це вид діаграми, який використовується для
моделювання функціональності системи з точки зору її користувачів. Вона
показує взаємодію між системою та її користувачами через набір прецедентів
(акцій або сценаріїв), які користувачі можуть ініціювати. Кожен прецедент
повинен описувати конкретну дію або функцію, яку система може виконати для
користувача.
Користувач може вибрати фото для відкриття та редагування у програмі.
Він може також зберегти редаговану фотографію після внесення змін.
Також користувач має можливість малювати на фотографії за допомогою
пера або іншого інструменту.
Також користувач може налаштовувати параметри зображення, такі як
яскравість, контрастність, чіткість, канали кольору і багато іншого. Він може
змінити тему або вигляд програми за власним смаком.
31
ЧДТУ.24 2047.001ПЗ
Крім того, користувач може стерти малюнок або очистити область
малювання або зображення. І в кінці, користувач може видалити всі зміни, які
були внесені до фотографії після відкриття (Рис. 2.4).
Рисунок 2.4 – Діаграма прецедентів для фотографа до програмного
забезпечення «Редактор зображень для фотографа-любителя»
2.3 Проектування логічної структури програмного комплексу
В даному підрозділі ми розглянемо такі діаграми: діаграма класів,
діаграма пакетів. Розглянемо ці питання більш детальніше.
2.3.1 Діаграма класів
Діаграма класів — це вид діаграми, який використовується для
моделювання структури системи або програми за допомогою класів, їх атрибутів,
методів та взаємозв'язків між ними. Вона показує класи системи, а також їх
взаємодії, що дозволяє розуміти організацію програми або системи та її основні
компоненти. Діаграма класів містить класи, зображені у вигляді прямокутників з
трьома розділенними секціями: назва класу, його атрибути та методи.
Діаграма включає наступні класи (Рис. 2.5):
- PhotoXEditor є головним класом, який ініціалізує MainWindow та
контролює запуск і закриття програми;
- MainWindow містить меню для роботи з файлами (FileMenu) та
редагуванням зображень (EditMenu), а також область для відображення
зображень (ImageView);
32
ЧДТУ.24 2047.001ПЗ
- FileMenu відповідає за відкриття та збереження файлів зображень через
свої підкласи OpenOption і SaveOption;
- EditMenu надає функції для малювання (DrawOption), застосування
фільтрів (FilterOption) та налаштувань параметрів зображення
(AdjustmentOption);
- ImageView відображає зображення та оновлює його після змін. Вона
працює з класом Image, який зберігає дані про зображення;
- Image містить інформацію про файл, формат та роздільну здатність, а
також методи для завантаження, збереження та застосування змін до зображення;
- DrawOption, FilterOption, і AdjustmentOption містять відповідні атрибути
та методи для малювання, застосування фільтрів та налаштування параметрів
зображення;
- Resolution та Color є допоміжними класами для зберігання роздільної
здатності та кольорових параметрів відповідно.
Рисунок 2.5 – Діаграма класів до програмного забезпечення «Редактор зображень
для фотографа-любителя»
33
ЧДТУ.24 2047.001ПЗ
2.3.2 Діаграма пакетів
Діаграма пакетів (Package Diagram) в UML (Unified Modeling Language) є
одним із видів структурних діаграм, які показують організацію та структуру
системи на рівні пакетів. Пакет в UML є контейнером для елементів моделі,
таких як класи, компоненти або інші пакети, і використовується для групування
пов’язаних елементів разом.
Діаграма включає наступний вміст
Інтерфейс користувача (User Interface): Це головний компонент програми,
який забезпечує взаємодію з користувачем. Через інтерфейс користувач може
взаємодіяти з усіма іншими компонентами програми. Підключений до пакета
"Засоби обробки зображення" для надання користувачеві доступу до
інструментів редагування зображень. Взаємодіє з пакетом "Файловий менеджер"
для роботи з файлами зображень.
Засоби обробки зображення (Image Processing Tools): Включає всі
інструменти та алгоритми для редагування зображень. Пакет забезпечує
функціональність для малювання, стирання, застосування різних фільтрів та
інших операцій над зображеннями. Інтегрований з пакетом "Інтерфейс
користувача" для надання доступу до інструментів обробки зображень через
інтерфейс програми.
Файловий менеджер (File Manager): Відповідає за роботу з файлами
зображень: відкриття, збереження та управління файлами. Цей пакет забезпечує
збереження змін та доступ до зображень, що зберігаються на диску. Взаємодіє з
"Інтерфейсом користувача" для надання можливості користувачеві працювати з
файлами через графічний інтерфейс.
Налаштування вікна програми (Application Window Settings): Включає
налаштування, які визначають вигляд і поведінку вікна програми. Цей пакет
дозволяє налаштувати інтерфейс користувача відповідно до уподобань
користувача. Взаємодіє з "Інтерфейсом користувача" для реалізації змін у
налаштуваннях програми.
34
ЧДТУ.24 2047.001ПЗ
Ця діаграма пакетів відображає структуру та взаємодію між основними
компонентами створюваного програмного забезпечення, розподіляючи їх по
логічних пакетах для кращої організації та розуміння (Рис. 2.6).
Рисунок 2.6 – Діаграма пакетів до програмного забезпечення «Редактор
зображень для фотографа-любителя»
2.4 Архітектурне проектування
В даному підрозділі ми розглянемо такі діаграми: діаграма компонентів,
діаграма розгортання. Розглянемо ці питання більш детальніше.
2.4.1 Діаграма компонентів
Діаграма компонентів (Component Diagram) є частиною мови моделювання
UML, яка використовується для візуалізації, специфікації, конструювання та
документування компонентів програмного забезпечення та їх взаємодії. Вона
описує структуру системи в термінах компонентів, які можуть бути фізичними
модулями, програмними бібліотеками, веб-сервісами або іншими елементами
програмного забезпечення, що виконують конкретні функції.
Користувач використовуючи інтерфейс додає зображення в робочу область
програми через файловий менеджер, де потім через засоби редагування
зображення змінює його, як він вважає за потрібне.
Також користувач може змінювати тему інтерфейсу, що дозволяє
фотографії не зливатися з фоном програми та забезпечити зручне редагування
35
ЧДТУ.24 2047.001ПЗ
без навантаження на зір користувача (Рис. 2.7).
Рисунок 2.7 – Діаграма компонентів до програмного забезпечення «Редактор
зображень для фотографа-любителя»
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма
розгортання.
Діаграма розгортання зображує фізичне розташування програмного
забезпечення на апаратному обладнанні. Програма для обробки зображень має
три основні компоненти, розгорнуті на одному комп'ютері (Рис. 2.8).
Компоненти програми
Інтерфейс користувача: Цей компонент відповідає за відображення
графічного інтерфейсу. Користувач програми використовує інтерфейс для
взаємодії з програмою, завантаження зображень, застосування налаштувань та
перегляду результатів обробки.
Файловий менеджер: Цей компонент відповідає за роботу з файловою
системою. Він забезпечує функціонал завантаження, збереження та видалення
36
ЧДТУ.24 2047.001ПЗ
зображень. Файловий менеджер отримує запити від інтерфейсу користувача та
виконує відповідні дії з файлами.
Засоби обробки зображень: Цей компонент виконує основну обробку
зображень. Він включає алгоритми для обробки, аналізу та редагування
зображень. Засоби обробки отримують зображення від інтерфейсу користувача,
виконують необхідні операції та повертають оброблені зображення назад до
інтерфейсу користувача.
Налаштування вікна програми: Цей компонент відповідає за збереження та
застосування параметрів налаштувань, встановлених користувачем.
Опис взаємодії: Користувач взаємодіє з програмою через інтерфейс, щоб
керувати налаштуваннями програми, завантажувати зображення та редагувати
його через засоби обробки зображення.
Для завантаження та збереження зображень інтерфейс надсилає запити до
файлового менеджера. Файловий менеджер обробляє запити на файлові операції,
повертаючи результат до інтерфейсу користувача.
Для обробки зображень інтерфейс користувача надсилає запити до засобів
обробки зображень. Засоби обробки зображень виконують необхідні обробки та
повертають результат до інтерфейсу користувача. Налаштування вікна
програми забезпечують застосування користувацьких налаштувань до всіх
компонентів програми.
Рисунок 2.8 – Діаграма розгортання до програмного забезпечення «Редактор
зображень для фотографа-любителя»
37
ЧДТУ.24 2047.001ПЗ
2.5 Моделювання поведінки системи
В даному підрозділі ми розглянемо діаграму діяльності, діаграму
послідовності, діаграму комунікації і діаграму скінченного автомата. Розглянемо
ці питання більш детальніше.
2.5.1 Діаграма діяльності
Діаграма діяльності — це один із типів діаграм в мові UML, який
використовується для моделювання динамічних аспектів системи. Вона
відображає потік робіт або активностей всередині системи та показує
послідовність виконання цих активностей.
Основна мета діаграми діяльності — продемонструвати логічну
послідовність дій, які повинні бути виконані для досягнення певної мети чи
завершення процесу.
Діаграма діяльності відображає процес роботи з програмою обробки
зображень, розділяючи дії на ті, що виконує користувач, та ті, що виконуються
програмою автоматично (Рис. 2.9).
Початкова дія – це запуск програми, яку виконує користувач. Після цього
користувач може обрати, закрити програму або додати зображення в робочу
область програми. Також він може налаштувати робоче вікно програми,
наприклад змінити тему вікна. Якщо користувач змінює тему, програма
автоматично змінює кольорову гамму вікна.
Якщо користувач додає зображення, програма розміщує його у вікні.
Наступним кроком користувач вибирає конкретне зображення та задає
параметри для його обробки. Програма виконує обробку зображення відповідно
до заданих параметрів.
Користувач обирає місце для збереження обробленого зображення, після
чого програма автоматично зберігає його у вибраному місці.
Завершується весь процес закриттям програми, яке також виконує
користувач.
38
ЧДТУ.24 2047.001ПЗ
Рисунок 2.9 – Діаграма діяльності до програмного забезпечення «Редактор
зображень для фотографа-любителя»
2.5.2 Діаграма послідовності
Діаграма послідовності — це один із типів діаграм в мові UML, який
використовується для моделювання взаємодії між об'єктами в системі з акцентом
39
ЧДТУ.24 2047.001ПЗ
на часову послідовність обміну повідомленнями. Вона відображає, які об'єкти
взаємодіють один з одним, які повідомлення вони відправляють один одному, і в
якому порядку це відбувається.
Основна мета діаграми послідовності — продемонструвати деталі
реалізації окремих сценаріїв або випадків використання, показати, як об'єкти
співпрацюють для виконання функцій, а також виявити потенційні проблеми в
проектуванні системи.
Діаграма послідовності показує взаємодію між користувачем та
компонентами програми для обробки зображень.
Дії які відображаються і діаграмі послідовності:
‒ спочатку користувач ініціює запуск програми, відправляючи запит до
інтерфейсу користувача, який активується. Далі інтерфейс
користувача запитує параметри налаштувань у компонента
"Налаштування вікна", і той відповідає параметрами. Після цього
користувач надсилає запит на додавання зображення до інтерфейсу
користувача, який перенаправляє запит до файлового менеджера.
Файловий менеджер відповідає зображенням;
‒ користувач задає параметри обробки зображення через інтерфейс
користувача, який надсилає ці параметри до компонента обробки
зображень разом із зображенням. Обробка зображень, обробляє
зображення і повертає його до інтерфейсу користувача;
‒ користувач вибирає місце для збереження обробленого зображення
через інтерфейс користувача, який надсилає запит на збереження
зображення до файлового менеджера. Файловий менеджер
підтверджує збереження. Нарешті, інтерфейс користувача інформує
користувача про успішне збереження зображення.
Ця діаграма ілюструє кроки, які виконуються користувачем та програмою
для обробки зображень, починаючи з самого початку запуска програми і
закінчуючи збереженням обробленого зображення (Рис. 2.10).
40
ЧДТУ.24 2047.001ПЗ
Рисунок 2.10 – Діаграма послідовності до програмного забезпечення «Редактор
зображень для фотографа-любителя»
2.5.3 Діаграма комунікації
Діаграма комунікації в UML показує, як об'єкти взаємодіють між собою
через обмін повідомленнями. Вона фокусується на структурі взаємодії між
об'єктами у системі і є схожою на діаграму послідовності, але надає більше уваги
організації об'єктів, ніж порядку їх взаємодії.
На діаграмі комунікації зображено взаємодію між користувачем та
компонентами програми (Рис 2.11).
Спочатку користувач запускає програму, що призводить до звернення до
інтерфейсу користувача. Інтерфейс користувача запитує параметри налаштувань
у компонента Налаштування вікна, який повертає відповідні параметри.
Далі користувач додає зображення через інтерфейс користувача, який
робить запит до файлового менеджера для додавання зображення. Після цього
файловий менеджер передає зображення назад до інтерфейсу користувача.
Наступним кроком користувач задає параметри обробки зображення, які
передаються через інтерфейс користувача до компонента Обробка_зображень.
Після обробки зображення повертається назад до інтерфейсу користувача.
41
ЧДТУ.24 2047.001ПЗ
Нарешті, користувач вибирає місце збереження зображення, і інтерфейс
користувача робить запит до файлового менеджера на збереження зображення.
Файловий менеджер підтверджує збереження, і інтерфейс користувача інформує
користувача про успішне збереження зображення.
Рисунок 2.11 – Діаграма комунікації до програмного забезпечення «Редактор
зображень для фотографа-любителя»
2.5.4 Діаграма скінченного автомату
Діаграма скінченного автомату — це графічне представлення поведінки
системи, яке моделює можливі стани об'єкта або системи та переходи між цими
станами у відповідь на зовнішні або внутрішні події.
Основні елементи такої діаграми включають стани, переходи між станами,
події, що спричиняють ці переходи, та дії, що виконуються під час цих
переходів. Вона часто використовується для моделювання поведінки систем, що
мають обмежену кількість чітко визначених станів, таких як протоколи зв'язку,
користувацькі інтерфейси або автомати прийняття рішень.
Розглянемо діаграму скнченного автомату на моєму прикладі (Рис. 2.12).
В діаграмі користувач запускає програму, після чого вона знаходиться в
стані "Очікування зображення". Коли користувач додає зображення, програма
переходить у стан "Зображення завантажено".
Після цього користувач задає параметри обробки, і програма переходить у
стан "Обробка зображення". Далі зображення обробляється і програма
переходить у стан "Зображення оброблено". Користувач вибирає місце для
збереження зображення, і програма переходить у стан "Збереження зображення".
42
ЧДТУ.24 2047.001ПЗ
Після збереження зображення програма переходить у стан "Зображення
збережено", після чого вона знову готова до обробки нового зображення,
повертаючись у стан "Очікування зображення".
Рисунок 2.12 – Діаграма скінченного автомату до програмного забезпечення
«Редактор зображень для фотографа-любителя»
43
ЧДТУ.24 2047.001ПЗ
Висновки до розділу 2
Було проведено детальне проектування програмного забезпечення. На
основі попередніх досліджень та аналізу існуючих аналогів було розроблено всі
необхідні діаграми, які включають діаграму компонентів, діаграму розгортання,
діаграму діяльності, діаграму послідовності та інші.
Ці діаграми дозволяють чітко уявити структуру та функціонування
розроблюваної системи, визначити зв'язки між окремими компонентами та
забезпечити їх ефективну інтеграцію.
У процесі проектування було враховано всі вимоги до функціональності та
зручності використання програми, що дозволить забезпечити її високу якість та
конкурентоспроможність. Проектування включало не тільки технічні аспекти,
але й аспекти користувацького досвіду, що забезпечить високу задоволеність
користувачів під час роботи з програмою.
44
ЧДТУ.24 2047.001ПЗ
РОЗДІЛ 3 РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО
ЗАБЕЗПЕЧЕННЯ
3.1 Розробка програмного комплексу
В даному підрозділі ми розглянемо структурна схему програмної системи,
функціональну схема програмної системи, зробимо опис логічної схеми системи
через діаграму діяльності, також створимо опис програмних компонентів та
проведемо розробку інтерфейсу користувача. Розглянемо ці питання більш
детальніше.
3.1.1 Обґрунтування вибору засобів реалізації
Вибір програмних та апаратних засобів для розв'язання поставлених задач
проводиться на підставі постановки задачі, розроблених структури та алгоритму
функціонування розроблюваного об'єкту. Для реалізації програми, що дозволяє
завантажувати, обробляти та зберігати зображення, необхідно обґрунтувати
вибір середовища розробки, мови програмування, системи керування базами
даних (СКБД) та інших необхідних засобів, а також конфігурації апаратних
засобів.
Для розробки програми обрано наступні засоби:
Середовище розробки: Visual Studio Code - забезпечує потужні інструменти
для розробки, має підтримку великої кількості мов програмування та можливість
налаштування за допомогою розширень. Це середовище сприяє оптимізації
процесу розробки за рахунок зручності використання та широких
функціональних можливостей.
Мова програмування: Python - обрано за його простоту, потужність та
велике співтовариство розробників. Python має багатий набір бібліотек для
роботи з обробкою зображень (наприклад, OpenCV, PIL), що дозволяє швидко та
ефективно реалізувати необхідний функціонал. Також Python має хорошу
інтеграцію з іншими мовами програмування та системами.
Бібліотеки для обробки зображень:
45
ЧДТУ.24 2047.001ПЗ
1 OpenCV - використовується для обробки зображень завдяки своїй
продуктивності та великому набору інструментів [3].
2 Pillow (PIL) - для роботи з різними форматами зображень та виконання
базових операцій з ними [2].
Конфігурація апаратних засобів:
Процесор: Intel Core i5 або еквівалентний – забезпечує достатню
обчислювальну потужність для обробки зображень.
Оперативна пам'ять: 8 GB RAM – достатньо для роботи з великими
зображеннями та ефективної обробки даних.
Жорсткий диск: SSD з об'ємом від 256 GB – для швидкого доступу до
файлів та зберігання оброблених зображень.
Операційна система: Windows 8, 8.1, 10 – сумісні з обраним середовищем
розробки та забезпечують стабільну роботу програмного забезпечення.
Вибір зазначених засобів розробки спрямований на оптимізацію процесу
розробки, забезпечення високої продуктивності та зручності використання
програми. Залучення сучасних та ефективних інструментів дозволяє створити
надійне та функціональне програмне забезпечення, яке відповідає вимогам
користувачів та задачам проекту.
3.1.2 Опис структурної (функціональної) схеми
Загальний структурний опис системи – це детальний опис компонентів і
підсистем, з яких складається система, а також зв'язків і взаємодій між ними. Він
включає в себе як апаратні, так і програмні елементи, їх функції та взаємодії для
досягнення поставлених цілей системи. Мета цього опису – надати всебічне
розуміння архітектури системи, її структурних елементів, їх функцій і способів
взаємодії між собою.
Ця діаграма відображає взаємодію між різними компонентами вашої
програми. Вона показує, як користувач взаємодіє з інтерфейсом користувача для
запуску програми, додавання зображення, введення параметрів обробки,
відображення результату та збереження зображення. Модуль налаштувань
завантажує та зберігає налаштування, файловий менеджер займається
46
ЧДТУ.24 2047.001ПЗ
завантаженням і збереженням зображень, а модуль обробки зображень виконує
застосування фільтрів, зміну розмірів та роботу з кольоровою гамою.
Структурна схема програмної системи: ця схема відображає взаємодію між
різними компонентами програми. Вона показує, як користувач взаємодіє з
інтерфейсом користувача для запуску програми, додавання зображення, введення
параметрів обробки, відображення результату та збереження зображення (Рис.
3.1).
Модуль налаштувань завантажує та зберігає налаштування.
Файловий менеджер займається завантаженням і збереженням зображень, а
модуль обробки зображень виконує застосування фільтрів, зміну розмірів та
роботу з кольоровою гамою.
Рисунок 3.1 – Структурна схема програмної системи до програмного
забезпечення «Редактор зображень для фотографа-любителя»
Функціональна схема програмної системи
Функціональна схема програмної системи містить основні компоненти:
інтерфейс користувача, модуль налаштування системи, підсистема обробки
зображень та файловий менеджер (Рис. 3.2).
Інтерфейс користувача є основним компонентом, через який користувач
взаємодіє з програмою, запускає її, вводить параметри, додає зображення,
налаштовує параметри обробки та зберігає результати.
Модуль налаштування системи відповідає за отримання та застосування
47
ЧДТУ.24 2047.001ПЗ
параметрів налаштувань системи, отримує параметри налаштування від
користувача і передає їх до інтерфейсу користувача.
Підсистема обробки зображення відповідає за обробку зображень
відповідно до заданих параметрів, отримує зображення та параметри обробки від
інтерфейсу користувача і повертає оброблене зображення назад до інтерфейсу
користувача.
Файловий менеджер відповідає за управління файлами зображень у
файловій системі, отримує запити від інтерфейсу користувача на додавання,
збереження та завантаження зображень і повертає зображення до інтерфейсу
користувача або підтвердження про збереження.
У взаємодії між компонентами реалізується наступна послідовність дій:
користувач запускає програму через інтерфейс користувача, який отримує
параметри налаштувань від модуля налаштування системи.
Файловий менеджер повертає обране зображення до інтерфейсу
користувача, після чого користувач задає параметри обробки зображення через
інтерфейс користувача, який передає їх до підсистеми обробки зображень.
Підсистема обробки повертає оброблене зображення до інтерфейсу
користувача.
Користувач вибирає місце збереження зображення через інтерфейс
користувача, який передає запит до файлового менеджера.
Рисунок 3.2 – Функціональна схема програмної системи до програмного
забезпечення «Редактор зображень для фотографа-любителя»
48
ЧДТУ.24 2047.001ПЗ
3.1.3 Опис логічної схеми системи
Діаграма діяльності відображає процес роботи з програмою обробки
зображень, розділяючи дії на ті, що виконує користувач, та ті, що виконуються
програмою автоматично (Рис 3.3).
Початкова дія – це запуск програми, яку виконує користувач. Після цього
користувач може обрати, закрити програму або додати зображення в робочу
область програми. Якщо користувач змінює тему, програма автоматично змінює
кольорову гамму вікна.
Якщо користувач додає зображення, програма розміщує його у вікні.
Наступним кроком користувач вибирає конкретне зображення та задає
параметри для його обробки. Програма виконує обробку зображення відповідно
до заданих параметрів. Користувач обирає місце для збереження обробленого
зображення, після чого програма автоматично зберігає його у вибраному місці.
Завершується процес закриттям програми, яке також виконує користувач.
Рисунок 3.3 – Опис логічної схеми системи до програмного забезпечення
«Редактор зображень для фотографа-любителя»
49
ЧДТУ.24 2047.001ПЗ
3.1.4 Розробка бази даних
Програма не передбачає використання бази даних. Основна
функціональність програми зосереджена на обробці зображень, налаштуваннях,
додаванні, збереженні та відображенні оброблених зображень через інтерфейс
користувача. Усі операції, включаючи додавання та збереження зображень,
виконуються безпосередньо через файловий менеджер.
3.1.5 Розробка інтерфейсу користувача
Розробка інтерфейсу користувача є важливою стадією конструювання.
Інтерфейс забезпечує взаємодію користувача та програмно-технічного
забезпечення інформаційної системи (ІС). Ефективність інтерфейсу визначається
здатністю проектувальника передбачити вимоги користувачів, які виникнуть на
першому та наступному етапах використання інформаційної системи.
Інтерфейс користувача для нашої програми створений з урахуванням
принципів проектування, запропонованих Якобом Нільсеном (Рис. 3.4).
Видимість стану системи: Інтерфейс відображає стан системи в режимі
реального часу. Наприклад, коли користувач застосовує зміни до зображення,
результат відображається негайно, що дозволяє користувачу бачити результат
своїх дій.
Відповідність між системою і реальним світом: Усі елементи інтерфейсу,
такі як кнопки та слайдери, мають зрозумілі та інтуїтивно зрозумілі назви і
позначення. Наприклад, кнопки для зміни яскравості, контрасту, насиченості
мають відповідні іконки та назви.
Контроль і свобода користувача: Інтерфейс забезпечує користувачу
можливість легко скасувати або відновити дії. Наприклад, кнопки "Скинути"
дозволяють повернути параметри до початкових значень.
Послідовність та стандарти: Інтерфейс дотримується загальних стандартів і
консистентності. Наприклад, усі слайдери для налаштувань кольорів мають
однаковий вигляд і розташування.
Запобігання помилок: Інтерфейс запобігає можливим помилкам шляхом
50
ЧДТУ.24 2047.001ПЗ
обмеження некоректних дій користувача. Наприклад, поле для введення розміру
пера перевіряє формат введення і не допускає некоректні значення.
Впізнавання замість запам'ятовування: Усі функції та параметри легко
доступні і не потребують запам'ятовування. Наприклад, усі налаштування
зображення знаходяться на одній панелі, що дозволяє користувачу легко знайти
потрібний параметр.
Гнучкість і ефективність використання: Інтерфейс дозволяє швидко
виконувати як прості, так і складні завдання. Наприклад, прості операції, такі як
зміна яскравості, можна виконати за допомогою слайдера, а більш складні, такі
як зміна кольорів, доступні через додаткові параметри.
Естетичний та мінімалістичний дизайн: Інтерфейс має простий та
зрозумілий дизайн, без зайвих елементів. Це дозволяє користувачу зосередитися
на виконанні завдань без відволікань.
Допомога користувачеві в розпізнаванні, діагностиці та виправленні
помилок: Інтерфейс надає зрозумілі повідомлення про помилки та інструкції
щодо їх виправлення. Наприклад, якщо користувач вводить некоректні значення,
система відображає повідомлення з підказками.
Документація та інструкції: Інтерфейс забезпечує доступ до документації
та інструкцій, які допомагають користувачеві розібратися з функціоналом
програми.
Таким чином, інтерфейс програми PhotoX Editor розроблено з урахуванням
основних принципів проектування користувацьких інтерфейсів, що дозволяє
забезпечити зручність, ефективність та інтуїтивну зрозумілість для користувача.
Програма складається з таких основних елементів:
- поле для задання розміру фотографії;
- поле для введення розміру пера;
- кнопки для зміни розміру, кольору пера та інших параметрів;
- слайдери для налаштування яскравості, контрасту, чіткості,
насиченості та компонентів RGB;
- кнопки для збереження та скидання налаштувань;
51
ЧДТУ.24 2047.001ПЗ
- перемикач для режиму роботи в негативі;
- кнопки для видалення малюнка та всіх змін.
Рисунок 3.4 – Вигляд інтерфейсу програми «Редактор зображень для фотографа-
любителя»
Цей інтерфейс забезпечує користувачу всі необхідні інструменти для
редагування зображень та налаштування параметрів, зберігаючи при цьому
простоту та зручність використання.
3.1.6 Опис розробки програмних компонентів
У цьому підрозділі надається детальний опис розроблених модулів
програмної системи PhotoX Editor. Кожен модуль описаний з точки зору його
призначення, зв’язків з іншими компонентами та особливостей реалізації
алгоритму.
Модуль інтерфейсу користувача (UserInterface)
Призначення: модуль відповідає за відображення графічного інтерфейсу
користувача (GUI) та взаємодію з користувачем. Він забезпечує доступ до всіх
функціональних можливостей програми через зручний інтерфейс.
Зв'язки з іншими компонентами:
52
ЧДТУ.24 2047.001ПЗ
‒ взаємодіє з модулем налаштування системи для отримання та
застосування параметрів;
‒ надсилає запити до підсистеми обробки зображень для виконання
редагування;
‒ використовує файловий менеджер для завантаження та збереження
зображень.
Особливості реалізації:
‒ використовує бібліотеку PyQt5 для створення інтерфейсу;
‒ забезпечує динамічне оновлення інтерфейсу відповідно до дій
користувача.
Модуль налаштування системи (SettingsModule)
Призначення: модуль відповідає за зберігання та керування параметрами
налаштування системи, які використовуються для редагування зображень.
Зв'язки з іншими компонентами:
‒ отримує та передає параметри інтерфейсу користувача;
‒ використовується підсистемою обробки зображень для застосування
налаштувань.
Особливості реалізації:
‒ використовує словники для зберігання параметрів налаштувань.
Підсистема обробки зображень (ImageProcessingSubsystem)
Призначення: підсистема виконує обробку зображень відповідно до
заданих параметрів, таких як яскравість, контраст, насиченість тощо.
Зв'язки з іншими компонентами:
‒ отримує параметри обробки від інтерфейсу користувача;
‒ повертає оброблені зображення до інтерфейсу для відображення.
Особливості реалізації:
‒ використовує бібліотеку OpenCV для виконання операцій обробки
зображень.
Файловий менеджер (FileManager)
53
ЧДТУ.24 2047.001ПЗ
Призначення: модуль відповідає за завантаження та збереження зображень
у файловій системі.
Зв'язки з іншими компонентами:
‒ інтерфейс користувача використовує файловий менеджер для роботи
з файлами зображень;
‒ повертає зображення для обробки підсистемі обробки зображень.
Особливості реалізації: використовує стандартні бібліотеки Python для
роботи з файлами.
Розроблені програмні компоненти PhotoX Editor тісно взаємодіють між
собою, забезпечуючи зручний інтерфейс для користувача, гнучкі налаштування
параметрів системи, ефективну обробку зображень та надійне зберігання файлів.
Для реалізації використовуються сучасні бібліотеки та технології, що
забезпечують високу продуктивність і зручність у користуванні.
3.2 Тестування системи
В даному підрозділі ми проведемо такі тестування до створеної програми:
модульне тестування, інтеграційне тестування, системне тестування та
приймальне тестування. Розглянемо ці питання більш детальніше.
3.2.1 Модульне тестування
Модульне тестування – це процес перевірки окремих програмних процедур
(модулів) і підпрограм, що входять до складу програм. Модульне тестування
проводиться безпосереднім розробником і дозволяє перевіряти всі внутрішні
структури і потоки даних у кожному модулі. Цей вид тестування є частиною
етапу розробки.
Процес проведення модульного тестування
В першу чергу, були визначені основні модулі програми PhotoX Editor, які
підлягають тестуванню:
- інтерфейс користувача (UI);
- підсистема обробки зображення;
- файловий менеджер.
54
ЧДТУ.24 2047.001ПЗ
Розробка тестових сценаріїв: Для кожного модуля були розроблені
детальні тестові сценарії, що охоплюють різні аспекти функціональності.
Наприклад, для модуля налаштування системи тестові сценарії включали
перевірку правильності збереження і завантаження налаштувань, а для
підсистеми обробки зображення – перевірку коректності застосування фільтрів і
ефектів до зображень.
Створення тестових даних: Для тестування були створені тестові дані, які
включали приклади зображень різних форматів і розмірів, а також різні
конфігурації налаштувань системи. Це дозволило перевірити роботу програми в
різних умовах.
Виконання тестів: Тести виконувалися автоматизовано за допомогою
бібліотеки unittest для Python. Кожен модуль був протестований окремо, з
використанням написаних тестових сценаріїв.
Результати модульного тестування показали високу якість розробленого
програмного забезпечення. Основні висновки та результати наведені нижче.
Інтерфейс користувача (UI):
‒ тестові сценарії: Перевірка відображення елементів інтерфейсу,
коректність обробки подій (натискання кнопок, зміна слайдерів),
відповідність відображення зображень;
‒ результати: Усі елементи інтерфейсу відображаються коректно. Події
обробляються правильно, зміни зображень відображаються миттєво
без затримок.
Підсистема обробки зображення:
‒ тестові сценарії: Перевірка застосування фільтрів (яскравість,
контраст, насиченість, RGB), коректність обробки зображень різних
форматів і розмірів;
‒ результати: Фільтри застосовуються коректно, результати обробки
відповідають очікуванням. Система успішно обробляє зображення
різних форматів і розмірів без втрати якості.
55
ЧДТУ.24 2047.001ПЗ
Файловий менеджер:
‒ тестові сценарії: перевірка збереження і завантаження зображень,
робота з файловою системою.
‒ результати: зображення зберігаються і завантажуються коректно.
Файловий менеджер успішно обробляє операції з файловою
системою без помилок.
Таблиця 3.1
Результати модульного тестування
Компонент Результат
main.py Успішний запуск
zad3.py Успішне завантаження залежностей
basicFunkcs.py Успішне завантаження залежностей
Висновки: Проведене модульне тестування показало, що всі основні модулі
програми PhotoX Editor працюють коректно і стабільно. Програма відповідає
вимогам користувачів і забезпечує високу якість обробки зображень та зручність
використання.
3.2.2 Інтеграційне тестування
Інтеграційне тестування проводиться для перевірки спільної роботи
окремих модулів і передує тестуванню всієї системи як єдиного цілого. У ході
інтеграційного тестування перевіряються зв'язки між модулями, їх сумісність і
функціональність. Воно здійснюється незалежним тестувальником і входить до
складу етапу тестування.
Спочатку були визначені групи модулів, які необхідно тестувати разом.
Для програми PhotoX Editor були сформовані такі групи:
- інтерфейс користувача та модуль налаштувань;
56
ЧДТУ.24 2047.001ПЗ
- інтерфейс користувача та підсистема обробки зображень;
- інтерфейс користувача та файловий менеджер;
- взаємодія між усіма модулями.
Розробка тестових сценаріїв для інтеграційного тестування: Для кожної
групи модулів були розроблені детальні тестові сценарії, що охоплюють
перевірку коректності взаємодії між модулями. Наприклад, перевірка
коректності передачі налаштувань від модуля налаштувань до інтерфейсу
користувача, обробка зображень з інтерфейсу користувача та передача
оброблених зображень до файлового менеджера.
Створення інтеграційних тестових даних: Для тестування були створені
інтеграційні тестові дані, що включали зображення різних форматів і розмірів, а
також різні конфігурації налаштувань системи. Це дозволило перевірити роботу
програми в умовах реальної взаємодії між модулями.
Виконання інтеграційних тестів: Тести виконувалися автоматизовано за
допомогою бібліотеки unittest для Python. Групи модулів тестувалися окремо, з
використанням написаних тестових сценаріїв. Тестування проводилося
незалежним тестувальником для забезпечення об'єктивності.
Результати інтеграційного тестування показали високу якість взаємодії між
модулями програми PhotoX Editor.
Інтерфейс користувача та модуль налаштувань:
‒ тестові сценарії: перевірка коректності завантаження налаштувань при
запуску програми, передача налаштувань від модуля налаштувань до
інтерфейсу користувача.
‒ результати: налаштування завантажуються коректно, зміни в
налаштуваннях відображаються в інтерфейсі користувача без затримок.
Інтерфейс користувача та підсистема обробки зображень:
‒ тестові сценарії: перевірка передачі зображень з інтерфейсу
користувача до підсистеми обробки зображень, коректність
відображення оброблених зображень.
‒ результати: зображення передаються і обробляються коректно,
57
ЧДТУ.24 2047.001ПЗ
результати обробки зображень відображаються в інтерфейсі
користувача відповідно до очікувань.
Інтерфейс користувача та файловий менеджер:
‒ тестові сценарії: перевірка передачі зображень для збереження,
коректність збереження зображень через файловий менеджер.
‒ результати: зображення успішно зберігаються, підтвердження
збереження відображається в інтерфейсі користувача.
Взаємодія між усіма модулями:
‒ тестові сценарії: перевірка повного робочого циклу – від завантаження
зображення, його обробки, до збереження обробленого зображення.
‒ результати: усі етапи взаємодії між модулями пройшли успішно,
жодних збоїв або затримок не виявлено. Всі модулі працюють
узгоджено і забезпечують високу якість роботи програми.
Таблиця 3.2
Результати інтеграційного тестування
Компонент Результат
Main + BasicFuncs Успішне завантаження залежностей
BasicFunks + Zad3 Успішне завантаження залежностей
Zad3 + Main Успішне завантаження залежностей
Main + Zad3 + BasicFuncs Успішне завантаження залежностей
Проведене інтеграційне тестування показало, що всі модулі програми
PhotoX Editor успішно взаємодіють між собою, забезпечуючи стабільну та
коректну роботу системи. Виявлені незначні помилки були оперативно
виправлені. Програма відповідає вимогам користувачів і забезпечує надійну
роботу в умовах реального використання.
58
ЧДТУ.24 2047.001ПЗ
3.2.3 Системне тестування
Метою системного тестування є виявлення можливих дефектів, перевірка
всіх функцій системи та забезпечення її відповідності заявленим вимогам.
Для програми обробки зображень системне тестування включало наступні
етапи:
Перевірка функціональності
Було зроблено наступні тести:
‒ запуск програми та її початкове налаштування.
‒ додавання та видалення зображень;
‒ обробка зображень за різними параметрами (яскравість, контраст,
обрізка, поворот, робота в негативі);
‒ збереження оброблених зображень у різних форматах. Під час цього
етапу було перевірено, чи всі функції працюють відповідно до
специфікацій вимог замовника.
Перевірка інтеграції
Було перевірено, як програма взаємодіє з іншими системами та
компонентами. Зокрема, було перевірено:
‒ взаємодію програми з файловою системою для завантаження та
збереження зображень;
‒ коректність обробки різних форматів зображень;
‒ сумісність з різними операційними системами.
Перевірка продуктивності та навантаження
Було проаедено тести продуктивності, щоб оцінити, як програма працює
під різним навантаженням.
Було перевірено:
‒ швидкість завантаження та обробки великих зображень;
‒ cтійкість програми при одночасному виконанні кількох операцій;
‒ використання ресурсів (оперативної пам'яті та процесорного часу)
при обробці великих об'ємів даних. Результати тестування показали,
що програма здатна ефективно обробляти великі зображення та
59
ЧДТУ.24 2047.001ПЗ
працювати під значним навантаженням без втрати продуктивності.
Перевірка безпеки
Було проведено тестування на предмет безпеки, щоб переконатися, що
програма захищена від можливих загроз.
Було перевірено:
‒ захист від некоректного введення даних;
‒ захист від несанкціонованого доступу до оброблюваних зображень;
‒ стійкість до атак на програму.
Цей етап допоміг забезпечити безпеку роботи програми та захист даних
користувачів.
Таблиця 3.3
Результати системного тестування
Функціональність/Сценарій Результат
Запуск програми та її початкове налаштування Виконання успішне
Додавання та видалення зображень Виконання успішне
Обробка зображень за різними параметрами Виконання успішне
Збереження оброблених зображень Виконання успішне
Системне тестування програми обробки зображень було успішно
завершено. Незалежний тестувальник підтвердив, що програма відповідає всім
заявленим вимогам, стабільно працює під різним навантаженням, забезпечує
належний рівень безпеки та коректно взаємодіє з іншими системами. На основі
отриманих результатів було прийнято рішення про готовність програми до
впровадження та використання кінцевими користувачами.
3.2.4 Приймальне тестування
Метою даного тестування є підтвердження відповідності програмного
60
ЧДТУ.24 2047.001ПЗ
забезпечення заявленим вимогам і готовності до впровадження. У рамках
приймального тестування для програми обробки зображень були виконані
наступні етапи:
Інсталяція системи
Організація, що відповідає за інсталяцію, здійснила встановлення
програмного забезпечення на кінцеві робочі станції користувачів. Інсталяція
включала налаштування параметрів програми, необхідних для її коректної
роботи, та перевірку сумісності з апаратним забезпеченням.
Тестування функціональності
Було проведено тестування основних функцій програми, включаючи:
‒ додавання зображень;
‒ налаштування робочого вікна;
‒ обробка зображень за заданими параметрами (зміна яскравості,
контрасту, обрізка, поворот, робота в негативі тощо);
‒ збереження оброблених зображень. Під час тестування
функціональності перевірялися відповідність виконання операцій
очікуваним результатам та відсутність помилок.
Тестування продуктивності: було проведено тестування продуктивності,
яке включало оцінку швидкості обробки зображень різних розмірів та форматів,
а також вимірювання використання системних ресурсів (оперативної пам'яті та
процесорного часу). Програма показала стабільну роботу при обробці великих
об'ємів даних та мінімальне споживання ресурсів.
Тестування надійності: було проведено тестування надійності роботи
програми, включаючи перевірку стійкості до некоректних дій користувача та
несподіваних відключень. Програма продемонструвала високу стабільність
роботи та здатність до відновлення після збоїв.
На основі результатів приймального тестування були зроблені наступні
рекомендації:
‒ забезпечити регулярне оновлення програмного забезпечення для
підтримки актуальності та безпеки;
61
ЧДТУ.24 2047.001ПЗ
‒ організувати навчання кінцевих користувачів для ефективного
використання програми;
‒ розглянути можливість розширення функціональності програми у
майбутніх версіях на основі зворотного зв'язку від користувачів.
Таблиця 3.4
Результати системного тестування
№ Опис тесту Очікваний результат Фактичний результат Статус
1 Додавання Зображення додане Зображення додане Пройдено
зображення коректно коректно
2 Налаштування Робоче вікно Робоче вікно Пройдено
налаштоване налаштоване
робочого вікна
коректно коректно
3 Редагування фото в Всі інші Всі інші Пройдено
налаштування в налаштування в
режимі негатива
режимі негативу режимі негативу
працюють справно працюють справно
4 Обробка зображень Правильно Правильно Пройдено
за заданими відредаговане відредаговане
параметрами зображення зображення
5 Збереження Коректне збереження Коректне Пройдено
оброблених зображення збереження
зображень зображення
Приймальне тестування програми обробки зображень було успішно
проведене, що підтвердило її готовність до впровадження. Програма відповідає
заявленим вимогам та показала високу функціональність, продуктивність та
зручність використання. На основі отриманих результатів було прийнято
рішення про впровадження програми у робочий процес кінцевих користувачів.
3.3 Приклади впровадженого програмного комплексу
Приклади впровадженого програмного комплексу ілюструють основні
можливості та функціональність розробленої програми для обробки зображень.
62
ЧДТУ.24 2047.001ПЗ
Нижче наведено скріншоти ключових моментів, які демонструють роботу
програми в реальних умовах. Ці приклади відображають процеси додавання,
обробки та збереження зображень, а також взаємодію користувача з програмою
через інтерфейс:
1 Первинний вид програми після запуску
Після запуску програми користувач бачить головний інтерфейс програми,
що складається з панелі налаштувань обробки зображення, поки що пустого
місця під зображення, повзунки для корекції майбутнього зображення, кнопки
для скидання налаштувань та зміни теми програми (Рис. 3.5).
Рисунок 3.5 – Інтерфейс програми «Редактор зображень для фотографа-
любителя»
2 Зміна теми інтерфейсу
Для зміни теми програми, потрібно натиснути на кнопку зміни теми. Це корисно
в тих випадках, коли інтерфейс здається занадто яскравим або темним. Також це
дуже зручно, при тому випадку, коли інтерфейс та краї зображення однакового
кольору і вони зливаються (Рис. 3.6).
63
ЧДТУ.24 2047.001ПЗ
Рисунок 3.6 – Зміна теми в програмі «Редактор зображень для фотографа-
любителя»
3 Додавання та збереження зображення
Для додавання або збереження фотографії, слід натиснути на кнопку “Дії з
фото”, яка знаходиться в верхньому лівому краю вікна програми. Далі
випаде список того, які файлові дії можна виконати з зображенням (Рис. 3.7).
Рисунок 3.7 – Файловий менеджер в програмі «Редактор зображень для
фотографа-любителя»
64
ЧДТУ.24 2047.001ПЗ
4 Обробка зображення
Після додавання зображення в робочу область її слід відредагувати, для
цього є відповідні повзунки та кнопки (Рис. 3.8).
Рисунок 3.8 – Засоби для редагування вигляду зображення в програмі «Редактор
зображень для фотографа-любителя»
5 Робота в негативі
Не менш необхідним при редагуванні зображення є функція роботи в
негативі, за допомогою неї можна працювати в тінях зображення та світлих
ділянках. Також за допомогою цього режиму можна висвітлювати
сфотографовані плівкові фотографії. Для ввімкнення або вимкнення цього
режиму необхідно просто натиснути на кнопку “Робота в негативі” (Рис. 3.9).
Рисунок 3.9 – Ввімкнення/вимкнення режиму негатива в програмі «Редактор
зображень для фотографа-любителя»
65
ЧДТУ.24 2047.001ПЗ
Результати тестування
Під час виконання завдань проекту було проведено декілька етапів
тестування програмної системи для обробки зображень, кожен з яких мав на меті
перевірку різних аспектів роботи програми та забезпечення її відповідності
вимогам. Першим етапом стало модульне тестування, яке дозволило розробнику
перевірити всі внутрішні структури і потоки даних у кожному модулі. Модульне
тестування забезпечило високу якість кожного модуля, що є важливим для
подальших етапів інтеграційного та системного тестування.
На етапі інтеграційного тестування, яке проводилося незалежним
тестувальником, перевірялася спільна робота окремих модулів. Було перевірено
зв'язки між модулями, їх сумісність і функціональність. Усі модулі програми
обробки зображень продемонстрували коректну взаємодію та сумісність, що
свідчить про якісну інтеграцію компонентів. Інтеграційне тестування
підтвердило, що програма може успішно функціонувати як єдиний комплекс.
Системне тестування призначалося для перевірки всієї програмної системи
в цілому. Було перевірено всі основні функції програми, інтеграцію з файловою
системою, продуктивність та безпеку. Системне тестування підтвердило, що
програма відповідає всім заявленим вимогам, стабільно працює під різним
навантаженням, забезпечує належний рівень безпеки та коректно взаємодіє з
іншими системами. Позитивні результати системного тестування свідчать про
готовність програми до використання кінцевими користувачами.
На етапі приймального тестування, яке проводила організація, що
відповідає за інсталяцію та супровід програмної системи, було проведено
додаткову перевірку функціональності, зручності використання та відповідності
вимогам користувачів. Було підтверджено, що програма відповідає очікуванням
користувачів, легко освоюється і забезпечує необхідні функції для обробки
зображень. Приймальне тестування також включало рекомендації щодо
впровадження та можливого вдосконалення системи у майбутньому.
Загалом, всі етапи тестування показали високий рівень якості розробленої
програмної системи для обробки зображень. Програма продемонструвала
66
ЧДТУ.24 2047.001ПЗ
стабільну роботу, високу продуктивність, належний рівень безпеки та зручний
інтерфейс користувача. Результати тестування свідчать про успішне виконання
проекту та готовність програми до впровадження і використання. Програма
відповідає всім специфікаціям вимог замовника і готова до застосування у
практичних умовах, що забезпечує її ефективне використання та задоволення
потреб користувачів.
67
ЧДТУ.24 2047.001ПЗ
Висновок до розділу 3
При створені та тестуванні програмного продукту, було проведено всі
необхідні етапи для забезпечення високої якості розробленого програмного
забезпечення. Програма була ретельно перевірена на коректність роботи,
виявлення та усунення помилок. Було забезпечено стабільність та правильність
роботи всіх компонентів. Було проведено перевірку взаємодії між окремими
модулями програми, що дозволило виявити та усунути можливі проблеми у
зв'язках між ними.
Також було здійснено перевірку всієї програми в цілому, що дозволило
оцінити її готовність до реальної експлуатації. На завершальному етапі
незалежними користувачами та організацією, відповідальною за інсталяцію та
супровід, було підтверджено, що програма є зручною у використанні,
функціональною та готовою до впровадження.
Таким чином, в ході тестування було забезпечено високу якість та
надійність розробленого програмного забезпечення. Програма успішно пройшла
всі етапи перевірки, що підтверджує її готовність до використання та
впровадження у практичну діяльність.
68
ЧДТУ.24 2047.001ПЗ
ВИСНОВКИ
У процесі виконання дипломної бакалаврської роботи, була розв'язана
наукова задача створення програмного комплексу для обробки зображень, яка
має важливе значення як для науки, так і для практики. Було досліджено існуючі
підходи до обробки зображень та реалізовано ефективне програмне рішення, що
дозволяє користувачам виконувати різні операції з обробки зображень з високою
продуктивністю та мінімальним використанням ресурсів.
Розроблена програма забезпечує широкий спектр функцій, включаючи
завантаження, обробку та збереження зображень, що робить її універсальним
інструментом для різних завдань у галузі обробки зображень. У програмі були
реалізовані такі основні модулі: інтерфейс користувача, налаштування
параметрів обробки, система для завантаження та збереження зображень, а також
механізми обробки зображень.
Для вирішення поставленої задачі були використані сучасні методи та
інструменти програмування, що забезпечило високу продуктивність та
надійність програми. Програма була ретельно протестована на всіх етапах
розробки, включаючи модульне, інтеграційне, системне та приймальне
тестування, що підтвердило її якість та відповідність вимогам замовника.
Важливо відзначити, що розроблена програма має високі якісні та кількісні
показники, що обґрунтовують її достовірність та ефективність.
Здобуті результати можуть бути використані в наукових дослідженнях та
практичних завданнях, пов'язаних з обробкою зображень. Розроблена програма
може бути рекомендована для використання в освітніх установах, наукових
лабораторіях, а також у комерційних проектах, що потребують високоякісної
обробки зображень. Подальше вдосконалення програми може включати
розширення її функціональності та адаптацію до нових вимог користувачів, що
забезпечить її актуальність та конкурентоспроможність у майбутньому.
Таким чином, виконана робота демонструє високий рівень технічної
реалізації, наукового підходу та практичного застосування, що підтверджує
значущість розробленого програмного комплексу для вирішення завдань
69
ЧДТУ.24 2047.001ПЗ
обробки зображень.
70
ЧДТУ.24 2047.001ПЗ
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1 Python - [Електронний ресурс]. - Режим доступу: https://freehost.com.ua/ukr/
faq/wiki/chto-takoe-jazik-programmirovanija-python/
2 Бібліотека Pillow (PIL) Python - [Електронний ресурс]. - Режим доступу:
https://metanit.com/python/recipes/2.1.php
3 Бібліотека OpenCV - [Електронний ресурс]. - Режим доступу:
https://itmaster.biz.ua/programming/vision/opencv.html
4 Пакет Tkinter - [Електронний ресурс]. - Режим доступу:
https://docs.python.org/uk/3/library/tkinter.html
5 Занурення в процес модульного тестування - [Електронний ресурс]. -
Режим доступу: https://www.zaptest.com/uk/%D1%89%D0%BE-
%D1%82%D0%B 0%D0%BA%D0%B5-
%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1
%8C%D0%BD%D0%B5-%D1%82%D0%B5%D1%81%D1%82%D1%83%D0
%B2%D0%B0%D0%BD%D0%BD%D1%8F-%D0%B3%D0%BB%D0%B8%
D0 %B1%D0%BE%D0%BA%D0%B5-%D0%B7
6 Налагоджувач debuggers - [Електронний ресурс]. - Режим доступу:
https://uk.wikipedia.org/wiki/Налагоджувач
7 Інтрегроване середовище розробки - [Електронний ресурс]. - Режим
доступу: https://uk.wikipedia.org/wiki/Інтегроване_середовище_розробки
8 Особливості PyCharm - [Електронний ресурс]. - Режим доступу:
https://itpro.ua/product/jetbrains-pycharm/?tab=description
9 Особливості Visual Studio Code - [Електронний ресурс]. - Режим доступу:
https://uk.wikipedia.org/wiki/Visual_Studio_Code
10 Діаграми UML та їхнє значення - [Електронний ресурс]. - Режим доступу:
https://evergreens.com.ua/ua/articles/uml-diagrams.html
11 Adobe Stock Photoshop - [Електронний ресурс]. - Режим доступу:
https://uk.wikipedia.org/wiki/Adobe_Photoshop#:~:text=Adobe%20Photoshop%
71
ЧДТУ.24 2047.001ПЗ
20(%5Bəˈdəubɪ%20ˈfəutəʃɔp%5D,називають%20просто%20Photoshop%20(Ф
отошоп).
12 Фоторедактор GIMP - [Електронний ресурс]. - Режим доступу:
https://www.gnu.org/education/edu-software-gimp.uk.html
13 Платформа графічного дизайну Canva - [Електронний ресурс]. - Режим
доступу: https://uk.wikipedia.org/wiki/Canva#:~:text=Canva %20(укр.,%2C%
20шрифтів%2C%20шаблонів%20та%20ілюстрацій.
14 Переваги використання та опис мови Java - [Електронний ресурс]. -
Режим доступу: https://goit.global/ua/articles/shcho-take-java-i-de-vona-
vykorystovuie tsia/#:~:text=Java%20–
%20це%20об'єктно,Backend%20(серверну%20части ну%20софту).
15 Особливості мови JavaScript - [Електронний ресурс]. - Режим доступу:
https://dou.ua/forums/topic/35184/#:~:text=Що%20таке%20JavaScript,сценарії
в»%20чи%20«скриптів».
16 HTML (мова розмітки гіпертексту) - [Електронний ресурс]. - Режим
доступу: https://uk.wikipedia.org/wiki/HTML
17 Коротко про CSS - [Електронний ресурс]. - Режим доступу:
https://kiev.itstep.org/blog/what-is-css-and-why-does-a-web-developer-need-it
18 Особливості Node.js його сумінсніть та функціонал - [Електронний
ресурс]. - Режим доступу: https://scand.com/ru/company/blog/node-js-features-
uses-and-benefits-of-development/
19 Бібліотека PyQt - [Електронний ресурс]. - Режим доступу:
https://uk.wikipedia.org/wiki/PyQt
20 libjpeg бібліотека для роботи з JPEG-зображень - [Електронний ресурс]. -
Режим доступу: https://ru.wikipedia.org/wiki/Libjpeg
21 Бібліотека libjpng для роботи з PNG-зображень - [Електронний ресурс]. -
Режим доступу: https://ru.wikipedia.org/wiki/Libpng
22 libtiff бібліотека для роботи з TIFF-зображень - [Електронний ресурс]. -
Режим доступу: https://ru.wikipedia.org/wiki/LibTIFF
72
ЧДТУ.24 2047.001ПЗ
23 Все про обробку RAW-зображень за допомогою бібліотеки libraw -
[Електронний ресурс]. - Режим доступу: https://www.libraw.su/
24 Опис та функціонал програми Photoscape - [Електронний ресурс]. - Режим
доступу: https://photoscape.ruprograms.com/
25 Огляд програмного забезпечення ByFunky- [Електронний ресурс]. - Режим
доступу: https://www.befunky.com/
26 Методичні рекомендації до підготовки кваліфікаційної роботи бакалавра
для здобувачів вищої освіти зі спеціальності 121 «Інженерія програмного
забезпечення» усіх форм навчання [Текст] /Укл.: Голуб С.В., Заспа Г.О.,
Півень О.Б. Катаєва Є.Ю., Салапатов В.І., Метелап В.В., Олексюк В.В.; М-
во освіти і науки України.
73
ДОДАТОК А
ЗАТВЕРДЖЕНО:
Зав. кафедри ПЗАС
проф. Голуб С. В.
___________________________
ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ІНФОРМАЦІЙНОЇ СИСТЕМИ ДЛЯ
ФОТОГРАФА ЛЮБИТЕЛЯ. МОДУЛЬ РЕДАКТОРА ЗОБРАЖЕННЯ
Специфікація
482.ЧДТУ.242047-001
Листів 2
Розробник ________________ Бабич А.Д.
Керівник ________________ Півень О.Б.
Черкаси 2024
ЧДТУ.24 2047-001 2
Позначення Найменування Примітка
482.ЧДТУ.242047 12-01 Лістинг програми
482.ЧДТУ.242047 34-01 Інструкція користувача
482.ЧДТУ.242047 90-01 Графічні матеріали
75
ДОДАТОК Б
ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ІНФОРМАЦІЙНОЇ СИСТЕМИ ДЛЯ
ФОТОГРАФА ЛЮБИТЕЛЯ. МОДУЛЬ РЕДАКТОРА ЗОБРАЖЕННЯ
Лістинг програми
482.ЧДТУ.242047 12-01
Листів 19
Розробник ________________ Бабич А.Д.
Черкаси 2024
482.ЧДТУ.242047 12-01
Файл: BasicFuncs.py
from PIL import ImageTk
# Функція для зміни кольору пікселів зображення на максимальний колір серед
навколишніх пікселів
def max_colors(image):
img = image.convert("RGBA") # Конвертуємо зображення у режим RGBA
img_out = img.copy() # Створюємо копію зображення для результату
width, height = img.size
region_size = 8 # Розмір області для визначення максимального кольору
offset = region_size // 2 - 1
for y in range(offset + 1, height - offset - 1):
for x in range(offset + 1, width - offset - 1):
reds, greens, blues = [], [], []
for i in range(x - offset, x + offset):
for j in range(y - offset, y + offset):
r, g, b, _ = img.getpixel((i, j))
reds.append(r)
greens.append(g)
blues.append(b)
# Встановлюємо колір пікселя як максимальний серед навколишніх пікселів
img_out.putpixel((x, y), (max(reds), max(greens), max(blues), 255))
return img_out
# Функція для відображення зображення на полотні
def open_image(canvas, image):
image = image.resize((700, 600)) # Зміна розміру зображення
canvas.config(width=image.width, height=image.height) # Налаштування розміру полотна
tk_image = ImageTk.PhotoImage(image) # Конвертація зображення для Tkinter
canvas.image = tk_image
canvas.create_image(0, 0, image=tk_image, anchor="nw")
77
482.ЧДТУ.242047 12-01
# Функція для малювання на полотні
def draw(canvas, event, pen_size, pen_color):
x1, y1 = event.x - pen_size, event.y - pen_size
x2, y2 = event.x + pen_size, event.y + pen_size
canvas.create_oval(x1, y1, x2, y2, fill=pen_color, outline='')
# Функція для очищення малюнку на полотні
def clear_drawing(canvas):
canvas.delete('all')
canvas.create_image(0, 0, image=canvas.image, anchor="nw")
# Функція для очищення всього полотна
def clear_all(canvas):
canvas.delete('all')
Файл: main.py
import tkinter as tk
import numpy as np
from tkinter import ttk, colorchooser, HORIZONTAL, filedialog, Label
from basicFuncs import clear_drawing, open_image, draw
from PIL import Image, ImageTk, ImageEnhance
from PIL.ExifTags import TAGS
# Створення вікна програми
app = tk.Tk()
app.geometry('1400x700')
app.title('PhotoX Editor')
# Встановлення теми та розміщення вікна по центру екрану
app.tk.call("source", "azure.tcl")
app.tk.call("set_theme", "dark")
app.update()
app.minsize(app.winfo_width(), app.winfo_height())
78
482.ЧДТУ.242047 12-01
x_cordinate = int((app.winfo_screenwidth() / 2) - (app.winfo_width() / 2))
y_cordinate = int((app.winfo_screenheight() / 2) - (app.winfo_height() / 2))
app.geometry("+{}+{}".format(x_cordinate, y_cordinate - 20))
#Зображення/іконки повзунків
img_brightness = Image.open("./img/Brightness.png")
img_contrast = Image.open("./img/Contrast.png")
img_definition = Image.open("./img/Definition.png")
img_saturation = Image.open("./img/Saturation.png")
img_red = Image.open("./img/Red.png")
img_green = Image.open("./img/Green.png")
img_blue = Image.open("./img/Blue.png")
# Змінні для збереження шляху до файлу, кольору та розміру олівця за замовчуванням
file_path = ""
pen_color = "black"
pen_size = 5
# Словник для збереження значень за замовчуванням для покращень зображення
default_enhancements = {
"Brightness": 1.0,
"Contrast": 1.0,
"Sharpness": 1.0,
"Color": 1.0,
"Adjust_red": 1.0,
"Adjust_green": 1.0,
"Adjust_blue": 1.0,
"Reset_red_channel": 1.0,
"Reset_green_channel": 1.0,
"Reset_blue_channel": 1.0
}
# Функція для вибору кольору олівця
def change_color():
global pen_color
79
482.ЧДТУ.242047 12-01
pen_color = colorchooser.askcolor(title='Виберіть колір')[1]
# Функція для зміни розміру олівця
def change_size(size):
global pen_size
pen_size = size
# Функція масштабування зображення, щоб воно не вилазило за вікно
def scale(image, frame_width, frame_height):
#global image
frame_width = frame_width*0.8
frame_height = frame_height*0.8
image_width, image_height = image.size
scaled_image = image
if (image_width > frame_width) or (image_height > frame_height):
factor = 1/max(image_height/frame_height, image_width/frame_width)
new_image_size = (int(image.size[0]*factor), int(image.size[1]*factor))
scaled_image = image.resize(new_image_size)
return scaled_image
# Функція для відображення зображення в вікні
def displayimage(image):
frame_width = photoside.winfo_width()
frame_height = photoside.winfo_height()
center_x = frame_width // 2
center_y = frame_height // 2
image = scale(image, frame_width, frame_height)
image_np = np.array(image) # Перетворення об'єкта PIL Image на масив NumPy
dispimage = ImageTk.PhotoImage(image=Image.fromarray(image_np)) # Перетворення
назад на об'єкт ImageTk.PhotoImage
Label(photoside, image=dispimage).place(x=center_x, y=center_y, anchor='center')
photoside.image = dispimage
# Функція для повороту зображення на 90 градусів
80
482.ЧДТУ.242047 12-01
def rotate():
global image
image = image.rotate(90, resample=Image.BICUBIC, expand=True)
displayimage(image)
# Функція для відображення зображення горизонтально
def flip_horizontal():
global image
image = image.transpose(Image.Transpose.FLIP_LEFT_RIGHT)
displayimage(image)
# Функція для відображення зображення вертикально
def flip_vertical():
global image
image = image.transpose(Image.Transpose.FLIP_TOP_BOTTOM)
displayimage(image)
# Функція для зміни зображення
def changeImg():
global image, initial_photo, original_image
imgname = filedialog.askopenfilename()
if imgname:
image = Image.open(imgname)
original_image = image
displayimage(image)
# Функція для збереження зображення
def save():
global image
image = image.convert('RGB')
savefile = filedialog.asksaveasfile(defaultextension=".jpg")
image.save(savefile)
# Функція для зміни яскравості зображення
def brightness(factor):
81
482.ЧДТУ.242047 12-01
factor = float(factor)
global outputImage
enhancer = ImageEnhance.Brightness(image)
outputImage = enhancer.enhance(factor)
displayimage(outputImage)
# Функція для зміни контрастності зображення
def contrast(factor):
factor = float(factor)
global outputImage
enhancer = ImageEnhance.Contrast(image)
outputImage = enhancer.enhance(factor)
displayimage(image)
displayimage(outputImage)
# Функція для підвищення чіткості зображення
def sharpen(factor):
factor = float(factor)
global outputImage
enhancer = ImageEnhance.Sharpness(image)
outputImage = enhancer.enhance(factor)
displayimage(outputImage)
negative_image = None
def make_negative():
global image, negative_image
if image:
# Конвертируем изображение в режим 'RGB'
image_rgb = image.convert('RGB')
# Получаем размеры изображения
width, height = image_rgb.size
# Создаем новое изображение для хранения результата, если оно еще не создано
82
482.ЧДТУ.242047 12-01
if negative_image is None or negative_image.size != (width, height):
negative_image = Image.new('RGB', (width, height))
# Проходим по каждому пикселю изображения
for x in range(width):
for y in range(height):
# Получаем цвет пикселя
r, g, b = image_rgb.getpixel((x, y))
# Вычисляем негативное значение для каждого цвета
inverted_r = 255 - r
inverted_g = 255 - g
inverted_b = 255 - b
# Устанавливаем цвет негатива для текущего пикселя
negative_image.putpixel((x, y), (inverted_r, inverted_g, inverted_b))
# Обновляем изображение для отображения негатива
image = negative_image
displayimage(image)
# Функція для управління красним каналом
original_red_channel = None
def adjust_red(factor):
factor = float(factor)
global image, original_red_channel
if original_red_channel is None:
original_red_channel = image.getchannel('R') # Зберігаємо канал червоного кольору
перед першою зміною
modified_red_channel = original_red_channel.point(lambda p: p * factor) # Модифікуємо
канал
image = Image.merge("RGB", (modified_red_channel, image.getchannel('G'),
image.getchannel('B'))) # Зливаємо модифікований канал з оригінальними каналами
зображення
displayimage(image)
83
482.ЧДТУ.242047 12-01
def reset_red_channel(): # Функція для скидання красного каналу до початкового стану
global image, original_red_channel
if original_red_channel is not None:
image = Image.merge("RGB", (original_red_channel, image.getchannel('G'),
image.getchannel('B'))) # Відновлюємо оригінальний канал
displayimage(image)
# Функція для управління зеленим каналом
original_green_channel = None
def adjust_green(factor):
factor = float(factor)
global image, original_green_channel
if original_green_channel is None:
original_green_channel = image.getchannel('G') # Зберігаємо канал зеленого кольору
перед першою зміною
modified_green_channel = original_green_channel.point(lambda p: p * factor) #
Модифікуємо канал
image = Image.merge("RGB", (image.getchannel('R'), modified_green_channel,
image.getchannel('B'))) # Зливаємо модифікований канал з оригінальними каналами
зображення
displayimage(image)
def reset_green_channel(): # Функція для скидання зеленого каналу до початкового стану
global image, original_green_channel
if original_green_channel is not None:
image = Image.merge("RGB", (image.getchannel('R'), original_green_channel,
image.getchannel('B'))) # Відновлюємо оригінальний канал
displayimage(image)
# Функція для управління синім каналом
original_blue_channel = None
def adjust_blue(factor):
factor = float(factor)
global image, original_blue_channel
if original_blue_channel is None:
84
482.ЧДТУ.242047 12-01
original_blue_channel = image.getchannel('B') # Зберігаємо канал синього кольору
перед першою зміною
modified_blue_channel = original_blue_channel.point(lambda p: p * factor) # Модифікуємо
канал
image = Image.merge("RGB", (image.getchannel('R'), image.getchannel('G'),
modified_blue_channel)) # Зливаємо модифікований канал з оригінальними каналами
зображення
displayimage(image)
def reset_blue_channel(): # Функція для скидання синього каналу до початкового стану
global image, original_blue_channel
if original_blue_channel is not None:
image = Image.merge("RGB", (image.getchannel('R'), image.getchannel('G'),
original_blue_channel)) # Відновлюємо оригінальний канал
displayimage(image)
# Функція для зміни насиченості кольору зображення
def color(factor):
factor = float(factor)
global outputImage
enhancer = ImageEnhance.Color(image)
outputImage = enhancer.enhance(factor)
displayimage(outputImage) # Відображення зображення з новим кольором
# Функція для відображення зображення на полотні
def open_image(canvas, photo):
global image
photo = ImageTk.PhotoImage(photo)
canvas.image = photo
canvas.create_image((0,0), image=photo, anchor='nw')
# Функція для створення полотна управління
def create_canvas():
global canvas, image
canvas = tk.Canvas(photoside, bg='white')
frame_width = photoside.winfo_width()
85
482.ЧДТУ.242047 12-01
frame_height = photoside.winfo_height()
canvas.place(relx=0.5, rely=0.5, anchor='center')
canvas.bind("<B1-Motion>", lambda event: draw(canvas, event, pen_size, pen_color))
pensizeSlider.config(state='normal')
color_button.config(state='normal')
image = scale(image, frame_width, frame_height)
canvas.config(width=image.width, height=image.height)
open_image(canvas, image)
def temp_text(e):
resize_entry.delete(0, "end")
# Функція для зміни розміру зображення
def resize(entry):
global image
size = entry.get()
if image is not None:
if ',' in size:
width, height = map(int, size.split(','))
image = image.resize((width, height))
displayimage(image)
else:
pass
displayimage(image)
# Функція для повернення до оригінального зображення
def go_back():
global image, original_image
image = original_image
brightnessSlider.set(default_enhancements['Brightness'])
contrastSlider.set(default_enhancements['Contrast'])
sharpnessSlider.set(default_enhancements['Sharpness'])
colorSlider.set(default_enhancements['Color'])
adjust_redSlider.set(default_enhancements['Adjust_red'])
reset_red_channel.set(default_enhancements['Reset_red_channel'])
86
482.ЧДТУ.242047 12-01
adjust_greenSlider.set(default_enhancements['Adjust_green'])
reset_green_channel.set(default_enhancements['Reset_green_channel'])
adjust_blueSlider.set(default_enhancements['Adjust_blue'])
reset_blue_channel.set(default_enhancements['Reset_blue_channel'])
pensizeSlider.set(5)
displayimage(image)
# Функція для встановлення значень за замовчуванням
def set_default(name):
global image
if name == 'Brightness':
brightnessSlider.set(default_enhancements[name])
elif name == 'Contrast':
contrastSlider.set(default_enhancements[name])
elif name == 'Sharpness':
sharpnessSlider.set(default_enhancements[name])
elif name == 'Color':
colorSlider.set(default_enhancements[name])
elif name == 'Adjust_red':
adjust_redSlider.set(default_enhancements[name])
elif name == 'Reset_red_channel':
adjust_redSlider.set(default_enhancements[name])
elif name == 'Adjust_green':
adjust_redSlider.set(default_enhancements[name])
elif name == 'Reset_green_channel':
adjust_greenSlider.set(default_enhancements[name])
elif name == 'Adjust_blue':
adjust_redSlider.set(default_enhancements[name])
elif name == 'Reset_blue_channel':
adjust_greenSlider.set(default_enhancements[name])
displayimage(image)
# Функція для застосування змін
87
482.ЧДТУ.242047 12-01
def set_apply(slider, name):
global image
default_value = default_enhancements[name]
factor = float(slider.get()) if slider.get() else default_value
enhancer = getattr(ImageEnhance, name)(image)
image = enhancer.enhance(factor)
displayimage(image)
# Функція для зміни теми програми
def change_theme():
if app.tk.call("ttk::style", "theme", "use") == "azure-dark":
app.tk.call("set_theme", "light")
else:
app.tk.call("set_theme", "dark")
menu = ttk.Frame(app, style='Card.TFrame', padding=(5, 6, 7, 8)) # завжди створювати, а
потім bg='#856ff8'
menu.place(x=0, y=0, relwidth=0.3, relheight=1) # упаковка, місце або сітка, щоб це кудись
помістити
photoside = ttk.Frame(app)
photoside.place(relx=0.3, y=0, relwidth=0.7, relheight=1)
menubar = tk.Menu(menu)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="Пошук фото", command=changeImg)
filemenu.add_command(label="Зберегти", command=save)
filemenu.add_command(label="Малювати", command=create_canvas)
menubar.add_cascade(label="Дії з фото", menu=filemenu)
resize_entry = ttk.Entry(menu, width=30)
resize_entry.insert(0, "Задайте у форматі 0000,0000")
resize_button = ttk.Button(menu, text='Змінити розмір', command=lambda:
resize(resize_entry))
color_button = ttk.Button(menu, text='Колір пера', command=change_color)
88
482.ЧДТУ.242047 12-01
rotate_button = ttk.Button(menu, text='Обертати', command=rotate)
flip_horizontal_button = ttk.Button(menu, text='Оберт по горизонталі',
command=flip_horizontal)
flip_vertical_button = ttk.Button(menu, text='Оберт по вертикалі', command=flip_vertical)
changetheme_button = ttk.Checkbutton(menu, text='Темна/світла тема',
style='Switch.TCheckbutton', command=change_theme)
make_negative_button = ttk.Button(menu, text='Робота в негативі', command=make_negative)
pensizeSlider = ttk.Scale(menu, from_=1, to=10, style='Tick.TScale',orient=HORIZONTAL,
command=lambda val: change_size(pensizeSlider.get())) #label = «Змінити
розмір пера»
brightnessSlider = ttk.Scale(menu, from_=0.1, to=2, orient=HORIZONTAL,
command=brightness)
contrastSlider = ttk.Scale(menu, from_=0.1, to=2, orient=HORIZONTAL, command=contrast)
sharpnessSlider = ttk.Scale(menu, from_=0.1, to=2, orient=HORIZONTAL, command=sharpen)
colorSlider = ttk.Scale(menu, from_=0.1, to=2, orient=HORIZONTAL, command=color)
adjust_redSlider = ttk.Scale(menu, from_=0.1, to=2, orient=HORIZONTAL,
command=adjust_red)
adjust_greenSlider = ttk.Scale(menu, from_=0.1, to=2, orient=HORIZONTAL,
command=adjust_green)
adjust_blueSlider = ttk.Scale(menu, from_=0.1, to=2, orient=HORIZONTAL,
command=adjust_blue)
apply1_button = ttk.Button(menu, text='Зберегти', command=lambda:
set_apply(brightnessSlider, 'Brightness'))
apply2_button = ttk.Button(menu, text='Зберегти', command=lambda: set_apply(contrastSlider,
'Contrast'))
apply3_button = ttk.Button(menu, text='Зберегти', command=lambda:
set_apply(sharpnessSlider, 'Sharpness'))
apply4_button = ttk.Button(menu, text='Зберегти', command=lambda: set_apply(colorSlider,
'Color'))
apply5_button = ttk.Button(menu, text='Зберегти', command=lambda: set_apply(colorSlider,
'Adjust_red'))
apply6_button = ttk.Button(menu, text='Зберегти', command=lambda: set_apply(colorSlider,
'Adjust_green'))
89
482.ЧДТУ.242047 12-01
apply7_button = ttk.Button(menu, text='Зберегти', command=lambda: set_apply(colorSlider,
'Adjust_blue'))
default1_button = ttk.Button(menu, text='Скинути', command=lambda:
set_default('Brightness'))
default2_button = ttk.Button(menu, text='Скинути', command=lambda: set_default('Contrast'))
default3_button = ttk.Button(menu, text='Скинути', command=lambda: set_default('Sharpness'))
default4_button = ttk.Button(menu, text='Скинути', command=lambda: set_default('Color'))
default5_button = ttk.Button(menu, text='Скинути', command=lambda:
set_default('Reset_red_channel'))
default6_button = ttk.Button(menu, text='Скинути', command=lambda:
set_default('Reset_green_channel'))
default7_button = ttk.Button(menu, text='Скинути', command=lambda:
set_default('Reset_blue_channel'))
clear_dr_button = ttk.Button(menu, text='Стерти малюнок', style='Accent.TButton',
command=lambda: clear_drawing(canvas))
clear_all_button = ttk.Button(menu, text='Видалити всі зміни', style='Accent.TButton',
command=go_back, width=20)
# Відображення іконок повзунків
icon_brightness = ImageTk.PhotoImage(img_brightness)
label_img_brightness = tk.Label(app, image=icon_brightness)
#
icon_contrast = ImageTk.PhotoImage(img_contrast)
label_img_contrast = tk.Label(app, image=icon_contrast)
#
icon_definition = ImageTk.PhotoImage(img_definition)
label_img_definition = tk.Label(app, image=icon_definition)
#
icon_saturation = ImageTk.PhotoImage(img_saturation)
label_img_saturation = tk.Label(app, image=icon_saturation)
#
icon_red = ImageTk.PhotoImage(img_red)
label_img_red = tk.Label(app, image=icon_red)
90
482.ЧДТУ.242047 12-01
#
icon_green = ImageTk.PhotoImage(img_green)
label_img_green = tk.Label(app, image=icon_green)
#
icon_blue = ImageTk.PhotoImage(img_blue)
label_img_blue = tk.Label(app, image=icon_blue)
size_text = ttk.Label(menu, text='Розмір пера')
br_text = ttk.Label(menu, text='Яскравість')
ct_text = ttk.Label(menu, text='Контраст')
sh_text = ttk.Label(menu, text='Чіткість')
cl_text = ttk.Label(menu, text='Насиченість')
adjust_red_text = ttk.Label(menu, text='RGB(Червоний)')
adjust_green_text = ttk.Label(menu, text='RGB(Зелений)')
adjust_blue_text = ttk.Label(menu, text='RGB(Синій)')
pensizeSlider.set(5)
brightnessSlider.set(1)
contrastSlider.set(1)
sharpnessSlider.set(1)
colorSlider.set(1)
adjust_redSlider.set(1)
adjust_greenSlider.set(1)
adjust_blueSlider.set(1)
#РОЗТАШУВАННЯ ВСІХ ЕЛЕМЕНТІВ
resize_entry.place(x=30, y=10, width=245)
resize_button.place(x=288, y=10)
size_text.place(x=30, y=58)
pensizeSlider.place(x=125, y=60, width=140)
color_button.place(x=288, y=52)
rotate_button.place(x=8, y=95) #Кнопка обертання зображення
flip_horizontal_button.place(x=105, y=95)
flip_vertical_button.place(x=264, y=95)
#1 повзунок
91
482.ЧДТУ.242047 12-01
br_text.place(x=30, y=150)
brightnessSlider.place(x=120, y=152)
apply1_button.place(x=240, y=145, width=80)
default1_button.place(x=325, y=145, width=80)
label_img_brightness.place(x=5, y=153)
#2 повзунок
ct_text.place(x=30, y=195)
contrastSlider.place(x=120, y=197)
apply2_button.place(x=240, y=190, width=80)
default2_button.place(x=325, y=190, width=80)
label_img_contrast.place(x=5, y=198)
#3 повзунок
sh_text.place(x=30, y=240)
sharpnessSlider.place(x=120, y=242)
apply3_button.place(x=240, y=235, width=80)
default3_button.place(x=325, y=235, width=80)
label_img_definition.place(x=5, y=243)
#4 повзунок
cl_text.place(x=30, y=285)
colorSlider.place(x=120, y=288)
apply4_button.place(x=240, y=280, width=80)
default4_button.place(x=325, y=280, width=80)
label_img_saturation.place(x=5, y=290)
#5 повзунок
adjust_red_text.place(x=30, y=330)
adjust_redSlider.place(x=120, y=333)
apply5_button.place(x=240, y=325, width=80)
default5_button.place(x=325, y=325, width=80)
label_img_red.place(x=5, y=335)
#6 повзунок
adjust_green_text.place(x=30, y=375)
adjust_greenSlider.place(x=120, y=378)
apply6_button.place(x=240, y=370, width=80)
default6_button.place(x=325, y=370, width=80)
label_img_green.place(x=5, y=380)
92
482.ЧДТУ.242047 12-01
#7 повзунок
adjust_blue_text.place(x=30, y=420)
adjust_blueSlider.place(x=120, y=423)
apply7_button.place(x=240, y=415, width=80)
default7_button.place(x=325, y=415, width=80)
label_img_blue.place(x=5, y=425)
make_negative_button.place(x=30, y=460) #Кнопка негативу
changetheme_button.place(x=190, y=460)
clear_dr_button.place(x=30, y=500, width=167)
clear_all_button.place(x=212, y=500, width=167)
image = None
original_image = image
resize_entry.bind("<FocusIn>", temp_text)
app.resizable(False,False)
app.config(menu=menubar)
app.mainloop()
Файл: zad3.py
from PIL import Image
import numpy as np
# Відкриття зображення
img = Image.open("700-years.JPG") # Замість "700-years.JPG" можна використати інше
зображення, наприклад, "LENA.jpg"
# Перетворення зображення в режим RGB
img = img.convert("RGB")
output_img = img.convert("RGB")
img_width, img_height = img.size
93
482.ЧДТУ.242047 12-01
kernel_size = 6 # kernel_size визначає розмір матриці
half_kernel = kernel_size // 2
# Проходження по кожному пікселю з урахуванням відступу від країв
for y in range(half_kernel, img_height - half_kernel):
for x in range(half_kernel, img_width - half_kernel):
red_values = []
green_values = []
blue_values = []
for i in range(x - half_kernel, x + half_kernel + 1):
for j in range(y - half_kernel, y + half_kernel + 1):
pixel = img.getpixel((i, j))
red_values.append(pixel[0]) # Збирання значень червоного каналу
green_values.append(pixel[1]) # Збирання значень зеленого каналу
blue_values.append(pixel[2]) # Збирання значень синього каналу
# Встановлення медіанних значень пікселів у вихідному зображенні
output_img.putpixel((x, y), (
int(np.median(red_values)),
int(np.median(green_values)),
int(np.median(blue_values))
))
# Відображення результату
output_img.show()
94
ДОДАТОК В
ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ІНФОРМАЦІЙНОЇ СИСТЕМИ ДЛЯ
ФОТОГРАФА-ЛЮБИТЕЛЯ. МОДУЛЬ РЕДАКТОРА
Інструкція користувача
482.ЧДТУ.242047 34-01
Листів 4
Розробник ________________ Бабич А.Д.
Черкаси 2024
482.ЧДТУ.242047 34-01
1 Первинний вид програми після запуску
Після запуску програми користувач бачить головний інтерфейс
програми, що складається з панелі налаштувань обробки зображення, поки
що пустого місця під зображення, повзунки для корекції майбутнього
зображення, кнопки для скидання налаштувань та зміни теми програми (Рис.
В.1).
Рисунок В.1 – Інтерфейс програми «Редактор зображень для фотографа-
любителя»
2 Зміна теми інтерфейсу
Для зміни теми програми, потрібно натиснути на кнопку зміни теми. Це
корисно в тих випадках, коли інтерфейс здається занадто яскравим або
темним. Також це дуже зручно, при тому випадку, коли інтерфейс та краї
зображення однакового кольору і вони зливаються (Рис. В.1).
Рисунок В.2 – Зміна теми в програмі «Редактор зображень для фотографа-
любителя»
96
482.ЧДТУ.242047 34-01
3 Додавання та збереження зображення
Для додавання або збереження фотографії, слід натиснути на кнопку
“Дії з фото”, яка знаходиться в верхньому лівому краю вікна програми. Далі
випаде список того, які файлові дії можна виконати з зображенням (Рисунок
В.3).
Рисунок В.3 – Файловий менеджер в програмі «Редактор зображень для
фотографа-любителя»
4 Обробка зображення
Після додавання зображення в робочу область її слід відредагувати, для
цього є відповідні повзунки та кнопки (Рис. В.4).
Рисунок В.4 – Засоби для редагування вигляду зображення в програмі
«Редактор зображень для фотографа-любителя»
97
482.ЧДТУ.242047 34-01
5 Робота в негативі
Не менш необхідним при редагуванні зображення є функція роботи в
негативі, за допомогою неї можна працювати в тінях зображення та світлих
ділянках. Також за допомогою цього режиму можна висвітлювати
сфотографовані плівкові фотографії. Для ввімкнення або вимкнення цього
режиму необхідно просто натиснути на кнопку “Робота в негативі” (Рис В.5).
Рисунок В.5 – Ввімкнення/вимкнення режиму негатива в програмі «Редактор
зображень для фотографа-любителя»
98
ДОДАТОК Г
ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ІНФОРМАЦІЙНОЇ СИСТЕМИ ДЛЯ
ФОТОГРАФА ЛЮБИТЕЛЯ. МОДУЛЬ РЕДАКТОРА ЗОБРАЖЕННЯ
Графічні матеріали
482.ЧДТУ.242047 90-01
Листів 7
Розробник ________________ Бабич А.Д.
Черкаси 2024
482.ЧДТУ.242047 90-01
Рисунок Г.1 – Слайд 1
Рисунок Г.2 – Слайд 2
100
482.ЧДТУ.242047 90-01
Рисунок Г.3 – Слайд 3
Рисунок Г.4 – Слайд 4
101
482.ЧДТУ.242047 90-01
Рисунок Г.5 – Слайд 5
Рисунок Г.6 – Слайд 6
102
482.ЧДТУ.242047 90-01
Рисунок Г.7 – Слайд 7
Рисунок Г.8 – Слайд 8
103
482.ЧДТУ.242047 90-01
Рисунок Г.9 – Слайд 9
Рисунок Г.10 – Слайд 10
104
482.ЧДТУ.242047 90-01
Рисунок Г.11 – Слайд 11
105