ebook img

Цифровая обработка изображений. Java и Open CV: учебное пособие PDF

128 Pages·2019·32.258 MB·Russian
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Цифровая обработка изображений. Java и Open CV: учебное пособие

МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего образования «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМ. Н. П. ОГАРЁВА» Шибайкин С. Д. Цифровая обработка изображений. Java и OpenCV Учебное пособие Саранск Издатель Афанасьев В. С. 2019 1 УДК 621.397:004.932(075.8) ББК З 97 Ш55 Рецензенты: заведующий кафедрой радиоэлектронных устройств и систем филиала ФГБОУ ВО «Воронежский государственный технический университет», кандидат технических наук, доцент Д. В. Журавлев; заведующий кафедрой телекоммуникационных систем ФГАОУ ВО «Волго- градский государственный университет», кандидат педагогических наук, доцент Е. С. Семенов. Печатается по решению учебно-методической комиссии института электроники и светотехники ФГБОУВО «МГУ им. Н.П. Огарёва» Шибайкин С. Д. Ш55 Цифровая обработка изображений. Java и OpenCV : учебное по- собие / С. Д. Шибайкин. — Саранск : Издатель Афанасьев В. С., 2019. — 128 с. ISBN 978-5-907131-28-6 В учебном пособии рассмотрены различные аспекты применения языка программирования Java для цифровой обработки изображений. В качестве базо- вой библиотеки алгоритмов компьютерного зрения использована OpenCV. При- водится описание процесса загрузки, фильтрации, обработки, сегментирования изображений и видео. Пособие рекомендовано для обучения студентов направле- ния подготовки 11.03.02 Инфокоммуникационные технологии и системы связи профиль «Сети связи и системы коммутации», 11.04.02 Инфокоммуникационные технологии и системы связи профиль «Сети, системы и устройства телекоммуни- каций», 09.03.01 Информатика и вычислительная техника профиль «Автоматизи- рованные системы обработки информации и управления», 09.04.01 Информатика и вычислительная техника профиль «Автоматизированные системы обработки информации и управления» и является прикладным рабочим материалом на лабо- раторных и практических занятиях. УДК 621.397:004.932(075.8) ББК З97 ISBN 978-5-907131-28-6 © Шибайкин С. Д., 2019 2 СОДЕРЖАНИЕ Введение .................................................................................................................. 4 1. Установка OpenCV .............................................................................................. 6 1.1 Подключение OpenCV к Eclipse, Windows 7 x64 ...................................... 6 1.2 Подключение OpenCV к Eclipse, MacOS Sierra ...................................... 10 1.3 Состав OpenCV .......................................................................................... 13 2. Работа с матрицами изображений ................................................................... 18 2.1 Типы изображений ..................................................................................... 18 2.2 Матрицы, пиксели, цвета .......................................................................... 19 2.3 Вывод изображения на GUI. Java Swing .................................................. 23 2.4 Основные методы Imgproc для работы c изображениями .................. 26 2.5 Основные методы Core для работы c изображениями ......................... 40 3. Фильтрация изображений ................................................................................ 48 3.1 Одномерная свертка функций .................................................................. 48 3.2 Двумерная свертка функций собственным фильтром ............................ 49 3.3 Фильтры сглаживания ............................................................................... 54 3.3.1 Фильтр усреднения ............................................................................ 59 3.3.2 Фильтр Гаусса .................................................................................... 60 3.3.3 Медианный фильтр ............................................................................ 61 3.3.4 Фильтр двустороннего сглаживания ................................................ 63 3.4 Морфологические операторы ................................................................... 64 3.4.1 Эрозия ................................................................................................. 70 3.4.2 Дилатация ........................................................................................... 71 3.4.3 Улучшенный морфологический оператор ...................................... 71 3.5 Пороговая фильтрация .............................................................................. 73 4.Сегментирование изображений ........................................................................ 77 4.1 Градиент и контур ...................................................................................... 77 4.2 Оператор Собеля ........................................................................................ 79 4.3 Оператор Шарра ......................................................................................... 82 4.4 Оператор Лапласа ...................................................................................... 85 4.5 Оператор Кэнни ......................................................................................... 87 4.6 Оператор Хафа .......................................................................................... 90 4.6.1 Оператор Хафа для поиска окружностей ........................................ 91 4.6.2 Оператор Хафа для поиска прямых ................................................. 94 4.6.3 Вероятностное преобразование Хафа для поиска прямых ............ 96 4.7 Поиск контуров .......................................................................................... 99 5. Обработка видеоизображений ....................................................................... 102 5.1 Удаление фоновой составляющей. Разница видеокадров ................... 102 5.2 Контуризация объектов и моменты в обработке изображений ........... 105 5.3 Методы вычитания фоновой составляющей ......................................... 109 5.3.1 Вычитание фона методом MOG2 ................................................... 109 5.3.2 Вычитание фона методом KNN ...................................................... 109 5.3.3 Построение оптического потока .................................................... 112 5.4 Обработка видео. Видеомонтаж. Запись видео .................................... 118 5.4.1 Добавление эффектов на видео ...................................................... 118 5.4.2 Наложение на видео с использованием цветового ключа ........... 121 3 ВВЕДЕНИЕ Целью учебного пособия является изучение общих принципов получе- ния, создания и обработки изображений средствами языка разработки Java и открытой библиотеки компьютерного зрения OpenCV, а также обучение ос- новам фильтрации и сегментирования, приобретение навыков применения алгоритмов и методов для обработки видеоизображений. В первой главе учебного пособия описан процесс подключения откры- той библиотеки OpenCV к IDE Eclipse для различных операционных систем. В качестве языка программирования используется Java. Все результаты апробированы на операционных системах Windows 7 x64 + Eclipse Juno и MacOS Sierra + Eclipse version: 2018-09. Сторонние платформы и «обертки» в учебном пособии использоваться не будут. Дополнительно в первой главе рассмотрен состав основных пакетов и классов, используемых в OpenCV. Во второй главе рассмотрена работа с матрицами изображений. Де- тально описаны различные цветовые системы RGB, CMYK, HSL, HSB, HSV, LAB, YUV и их составные компоненты. Показана непосредственная работа с пикселями изображения, создание изображений с различными параметрами битности и канальности. Подробно рассмотрен процесс сохранения и вывода изображения на стандартные графические элементы Swing пользовательско- го окна. В качестве основных элементов вывода используются компоненты JFrame и JPanel. В классах Imgproc и Core проанализированы основ- ные методы для обработки изображений: изменение размера, преобразование цветовых систем, вывод текстовой информации и геометрических элементов, суммирование изображений, операторы нормировки и др. Третья глава посвящена фильтрации изображений. На примере одно- мерной свертки разобран процесс обработки изображения двумерным филь- тром, а также параметры экстраполяции граничных пикселей. В качестве ба- зовых фильтров рассмотрены: фильтр усреднения, фильтр Гаусса, медиан- ный фильтр, фильтр двустороннего сглаживания, морфологические операто- ры. Рассмотрены различные аспекты применения фильтров: удаление шумов на изображении, сглаживание, эрозия и дилатация, пороговая фильтрация. В четвертой главе рассмотрены вопросы сегментирования изображе- ний. Даны определения понятиям градиент и контур. На многочисленных примерах рассмотрен процесс определения границы на изображении. На практике проанализированы различные операторы сегментирования: опера- тор Собеля, оператор Шарра, оператор Лапласа, оператор Кэнни, оператор Хафа. Приведен пример для поиска контуров с различными параметрами. В пятой главе даны представления об обработке видеоизображений. На примерах движения автотранспорта приведены примеры удаления фоновой составляющей с помощью нахождения разницы видеокадров. Далее показана работа контуризации объектов и вычисления характеристик изображения. В главе приведены методы вычитания фоновой составляющей на основе Гаус- совой смеси и k–ближайших соседей. Для определения направления движе- ния объектов будут изучены методы вычисления оптического потока. К ним 4 относятся методы Лукаса-Канаде (разряженный поток) и Фарнебака (плот- ный поток). В заключительном разделе на практических примерах показаны алгоритмы для обработки (видеомонтаж) видео: добавление эффектов на ви- део, создание видеоперехода, наложение на видео с использованием цветово- го ключа. Для однозначного понимания текста в учебном пособии приняты сле- дующие выделения: – Times New Roman – обычный текст (различный теоретический и по- яснительный материал); – Times New Roman – текст заглавия или названия различных методов или алгоритмов; – Courier New – шрифт для листинга, методов, переменных и т.д. Данный текст для непосредственного использования в своих приложениях необходимо копировать без изменений. Если указано имя переменной Java или метода OpenCV с прописной буквы нельзя его изменять на строчную и т.д.!!! По всему тексту в учебном пособии для данного шрифта отключена автоматическая расстановка переносов. В учебном пособии в качестве изображений использованы стикеры Salem и Meme Cats мессенджера Telegram, фотографии учебных корпусов ФГБОУВО «Национальный исследовательский Мордовский государственный университет им. Н. П. Огарёва». Ещё больше книг по Java в нашем телеграм канале:                                          https://t.me/javalib 5 1. Установка OpenCV 1.1 Подключение OpenCV к Eclipse, Windows 7 x64 Алгоритм использования библиотеки OPENCV состоит из следующей последовательности действий. Сначала необходимо скачать последнюю вер- сию релиза WIN PACK 4.0.1 со страницы https://opencv.org/releases.html (ри- сунок 1.1.1). Размер дистрибутива версии 4.0.1 занимает порядка 190Мб. По- дробная документация расположена в https://docs.opencv.org/4.0.1/javadoc/index.html. Рисунок 1.1.1 – Страница для скачивания релизов OpenCV После этого необходимо распаковать дистрибутив релиза в определен- ную директорию. В нашем случае это будет корень локального диска С. Рисунок 1.1.2 – Путь для распаковывания дистрибутива OpenCV Далее необходимо скопировать файл opencv_ffmpeg401_64.dll из папки C:\OPENCV\opencv\build\bin в папку C:\OPENCV\opencv\build\java\x64. Для версии Windows X32 необходимо скопировать файл opencv_ffmpeg401.dll. 6 После того, как дистрибутив распаковался, необходимо его подклю- чить к проекту Eclipse. Создаем проект Java Project (рисунок 1.1.3) и указы- ваем имя проекта (рисунок 1.1.4). Рисунок 1.1.3 – Создание проекта в Eclipse Рисунок 1.1.4 – Имя создаваемого проекта в Eclipse После этого необходимо нажать Next, выбрать вкладку Libraries и до- бавить (рисунок 1.1.6) внешнюю библиотеку OpenCV. 7 Рисунок 1.1.5 – Вкладка библиотеки Рисунок 1.1.6 – Кнопка для добавления библиотеки Далее выбираем файл opencv-401.jar из директории C:\OPENCV\opencv\build\java, куда распакован дистрибутив (рисунок 1.1.7) и редактируем путь к нативной библиотеке (рисунок 1.1.8). Рисунок 1.1.7 – Выбор библиотеки OpenCV 8 Рисунок 1.1.8 – Указание местонахождения нативной библиотеки Далее добавляем в наш проект класс firstclass (рисунок 1.1.9). По- сле этого в папке src проекта должен добавиться файл firstclass.java. Рисунок 1.1.9 – Добавление класса к проекту Добавим в текст нашего класса firstclass код из листинга ex111. Во время набора текста кода Eclipse будет подсвечивать «чужие» операторы библиотеки OpenCV. Для этого необходимо навести мышкой на подчеркну- тый оператор, и выбрать имя добавляемого класса (рисунок 1.1.10). 9 Рисунок 1.1.10 – Добавление классов Следует помнить о том, что в некоторых случаях Eclipse может пред- ложить несколько вариантов импортируемых классов, поэтому необходимо четко понимать, какой именно класс необходим для работы. Результатом ра- боты данной программы будет выведенная в консоли единичная матрица размером 4×4 (рисунок 1.1.11). Листинг ex111 – Первая программа import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.Size; public class firstclass { public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); Mat M1 = new Mat(); M1 = Mat.ones(new Size(4,4), 1); System.out.println(M1.dump()); } } Рисунок 1.1.11 – Результат работы листинга ex111 1.2 Подключение OpenCV к Eclipse, MacOS Sierra Для установки дистрибутива OpenCV для MacOS удобным средством является менеджер недостающих пакетов Homebrew. Установка его происходит в терминале с помощью команды /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/mast 10

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.