Введение 5
1 Анализ требований к разрабатываемому программному средству и постановка задач 7
1.1 Анализ исходных данных и функциональных возможностей разрабатываемого программного средства 7
1.1.1 Операционная система Android 7
1.1.2 Современный искусственный интеллект 9
1.1.2.1 Сферы применения 9
1.1.2.2 Направления развития 11
1.1.2.3 Анализ изображений 12
1.1.3 Архитектура клиент-сервер 13
1.2 Выбор языка программирования, методов и средств разработки 15
1.2.1 Язык программирования Java 15
1.2.2 Среда разработки Intellij IDEA 16
1.2.3 JNI 17
1.2.4 Связь между Java, Android и Android Studio 18
1.2.5 Язык программирования С++ 19
1.2.6 Среда разработки Microsoft Visual Studio 21
1.2.7 C++ AMP 23
1.2.8 OpenMP 25
1.3 Постановка задач по разработке программного средства 29
2 Моделирование алгоритмов преобразования изображений и распознавания показаний электронных приборов 30
2.1 Алгоритм Брэдли-Рота 30
2.2 Медианная фильтрация 33
2.3 Математические морфологии 38
2.3.1 Наращивание 40
2.3.2 Эрозия 42
2.4 Алгоритм нахождения связных образов 44
2.5 Масштабирование изображений 49
2.6 Проектирование нейронной сети 52
2.7 Алгоритм обучения нейронной сети 54
3 Сравнительный анализ быстродействия разработанных алгоритмов с функциями библиотеки OpenCV 57
3.1 Библиотека компьютерного зрения OpenCV 57
3.2 Библиотека анализа и обработки изображений ImageZ 58
3.3 Сравнительный анализ библиотек 58
4 Разработка программного обеспечения 65
4.1 Проектирование и обоснование графического интерфейса Android-клиента 65
4.2 Проектирование интерфейса взаимодействия клиента и сервера 67
4.3 Технология сокетных соединений в Java 68
5 Эксплуатация программного средства 70
5.1 Ввод в эксплуатацию программного средства 70
5.2 Инструкция по использованию разработанного программного средства 70
6 Технико-экономическое обоснование разработки программного средства для оптического распознавания показаний электронных приборов 74
6.1 Определение единовременных затрат на создание программного продукта 74
6.1.1 Определение трудоемкости программного продукта 74
6.1.2 Определение стоимости машино-часа работы ПК 76
6.1.3 Определение себестоимости создания программного продукта 78
6.1.4 Определение оптовой и отпускной цены программного продукта 80
6.2 Определение ожидаемого прироста прибыли в результате внедрения программного продукта 81
6.2.1 Определение годовых эксплуатационных расходов при ручном решении задачи 81
6.2.2 Определение годовых текущих затрат, связанных с эксплуатацией задачи 82
6.2.3 Определение ожидаемого прироста прибыли в результате внедрения программного продукта 84
6.3 Расчет показателей эффективности использования программного продукта 84
Заключение 87
Список использованных источников 88
Приложение А (обязательное) Листинг программного кода 90
Приложение Б Антиплагиат 97
Приложение В Техническое задание 98
Приложение Г (обязательное) Ведомость дипломного проекта 100
В ходе дипломного проектирования было разработано программное средство для распознавания показаний электронных приборов с камеры Android-устройства.
Было изучено большое количество материала по анализу и обработке изображений для написания специальной собственной библиотеки на языке C++, которая будет работать в данном дипломном проекте на серверной части.
Серверная часть была написана на языке Java с использованием технологии сокетных соединений. Т.к. сервер работает на Java, то была написана java-обертка с использованием JNI-интерфейса для библиотеки анализа и обработки изображений. Для удобства управления сервером было разработано специальное консольное меню.
Клиентская часть представляет собой разработанное мобильное приложение под мобильную операционную систему Android с удобным и понятным интерфейсом. При проектировании графического интерфейса использовалась Material Design Library. Также у клиента есть возможность проверить состояния текущего соединения и возможность его разорвать.
Результаты проектирования получили своё отражение в виде различных диаграмм: контекстная диаграмма, UML-диаграмма классов, алгоритм работы программного средства, UML-диаграмма активности, UML-диаграмма последовательности.
[1] Операционная система Android [Электронный ресурс]. – Режим доступа : http://bourabai.kz/os/android.htm
[2] Современный ИИ [Электронный ресурс]. – Режим доступа : http://www.tadviser.ru/index.php/Продукт:Искусственный_интеллект_ИИ,_Artificial_intelligence,_AI)
[3] Компьютерные сети : учеб. пособие для студентов высших учебных заведений по техническим специальностям / П. П. Урбанович, Д. М. Романенко, Е. В. Кабак. – Минск : БГТУ, 2011. – 400 с.
[4] Язык программирования Java [Электронный ресурс]. – Режим доступа : https://ru.bmstu.wiki/Java_Platform
[5] Тесты производительности на различных языках про-граммирования [Электронный ресурс]. – Режим доступа: http://benchmarksgame.alioth.debian.org
[6] Intellij IDEA [Электронный ресурс]. – Режим доступа : https://ru.wikipedia.org/wiki/IntelliJ_IDEA
[7] Java Native Interface [Электронный ресурс]. – Режим доступа : https://ru.wikipedia.org/wiki/Java_Native_Interface
[8] Особенности Android Studio [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/Android_Studio
[9] Язык программирования С++ [Электронный ресурс]: https://ru.wikipedia.org/wiki/C++
[10] Microsoft Visual Studio [Электронный ресурс]. – Режим доступа : https://ru.wikipedia.org/wiki/Microsoft_Visual_Studio
[11] Кэйт Грегори, Эйд Миллер. C++ AMP: построение массивно параллельных программ с помощью Microsoft Visual C++. Пер. с англ. Слинкин А. А. – М.: ДМК Пресс, 2013. – 412с.
[12] Технология OpenMP [Электронный ресурс]. – Режим доступа: https://software.intel.com/ru-ru/blogs/2011/11/21/openmp-c
[13] Компиляторы поддерживающие технологию OpenMP [Электрон-ный ресурс]. – Режим доступа: http://www.bowdoin.edu/~ltoma/teaching/ cs3225-GIS/fall16/Lectures/openmp.html
[14] Бинаризация [Электронный ресурс]. – Режим доступа: http://aco.ifmo.ru/el_books/image_processing/5_02.html
[15] Компьютерное зрение. Интегральное изображение [Электронный ресурс]. – Режим доступа: https://computersciencesource.wordpress.com/2010/09/03/computer-vision-the-integral-image/
[16] Нахождение адаптивного порогового значения с использованием интегрального изображения [Электронный ресурс]. – Режим доступа: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.420.7883&rep=rep1&type=pdf
[17] Красильников, Н. Н. Цифровая обработка 2D- и 3D-изображений/Н.Н. Красильников//Медианная и ранговая фильтрация изображений. – СПб.: БХВ-Петербург, 2011. — C. 259–263.
[18] Красильников, Н. Н. Цифровая обработка 2D- и 3D-изображений/Н.Н. Красильников//Морфологические операции. – СПб.: БХВ-Петербург, 2011. — C. 315–316.
[19] Математическая морфология [Электронный ресурс]. – Режим доступа: https://habrahabr.ru/post/113626/
[20] Выделение и описание областей [Электронный ресурс]. – Режим доступа: http://wiki.technicalvision.ru/index.php/Выделение_и_описание_областей
[21] Красильников, Н. Н. Цифровая обработка 2D- и 3D-изображений/Н.Н. Красильников//Морфологические операции. – СПб.: БХВ-Петербург, 2011. — C.281–284
[22] Учебник – нейронные сети [Электронный ресурс]. – Режим доступа: https://neuralnet.info/book/
[23] Алгоритм обратного распространения ошибки [Электронный ресурс]. – Режим доступа: http://www.aiportal.ru/articles/neural-networks/back-propagation.html
[24] OpenCV [Электронный ресурс]. – Режим доступа: https://opencv.org/
[25] ImageZ [Электронный ресурс]. – Режим доступа: https://github.com/ilyalitosh/ImageZ-Java-C-
[26] Сокеты [Электронный ресурс]. – Режим доступа: http://lecturesnet.readthedocs.io/net/low-level/ipc/socket/intro.html
[27] Java – Networking [Электронный ресурс]. – Режим доступа: https://www.tutorialspoint.com/java/java_networking.htm