cpp

Николай Прохоренок. OpenCV и Java. Обработка изображений и компьютерное зрение

Книга знакомит с современными технологиями компьютерного зрения, позволяющими машинам, роботам и другим устройствам распознавать изображения. Приведено описание библиотеки компьютерного зрения OpenCV применительно к языку программирования Java. Объясняется, как загружать и сохранять изображения в различных форматах, захватывать кадры с веб-камеры в режиме реального времени, выполнять обработку, трансформацию и сегментацию изображения, применять к изображению фильтры. На практических примерах рассмотрены алгоритмы компьютерного зрения, предназначенные для обнаружения, классификации и отслеживания объектов, выделения границ и контуров объектов, поиска объектов по шаблону, особым точкам, цвету или обученному классификатору.

Требования к читателям: знание языка программирования Java в объеме книги "Основы Java" 2-е изд. Примеры в книге максимально упрощены, поэтому глубоких знаний в математике не требуется. Чтобы найти все лица на фотографии достаточно написать всего несколько строк кода. С этим справится любой Java-программист!

См. также: "Основы Java"
См. также: "JavaFX. В подлиннике" (разработка оконных приложений на языке Java)

Оглавление книги OpenCV и Java. Обработка изображений и компьютерное зрение

Часть I. Загрузка изображения

Глава 1. Первые шаги

1.1. Установка OpenCV
1.2. Настройка редактора Eclipse
1.3. Вспомогательные классы
    1.3.1. Класс Point: точка
    1.3.2. Класс Point3: 3D-точка
    1.3.3. Класс Size: размеры прямоугольной области
    1.3.4. Класс Rect: прямоугольная область
    1.3.5. Класс RotatedRect: повернутая прямоугольная область
    1.3.6. Класс Scalar: объект из четырех элементов
    1.3.7. Класс Range: диапазон

Глава 2. Матрицы

2.1. Класс Mat: матрица
    2.1.1. Создание матрицы
    2.1.2. Размеры матрицы
    2.1.3. Тип элементов
    2.1.4. Доступ к элементам
    2.1.5. Получение диапазона значений
    2.1.6. Создание копии матрицы
    2.1.7. Транспонирование матрицы
    2.1.8. Изменение структуры матрицы
    2.1.9. Удаление матрицы
2.2. Изменение значений матрицы
    2.2.1. Изменение сразу всех значений
    2.2.2. Сложение
    2.2.3. Вычитание
    2.2.4. Умножение
    2.2.5. Деление
    2.2.6. Вычисление квадратного корня
    2.2.7. Возведение в степень
    2.2.8. Вычисление натурального логарифма и экспоненты
    2.2.9. Использование таблицы соответствия
    2.2.10. Нормализация и вычисление нормы
    2.2.11. Побитовые операции
2.3. Поиск минимального, максимального и среднего значений
2.4. Вычисление суммы элементов
2.5. Заполнение матрицы случайными числами
2.6. Сортировка элементов матрицы
2.7. Сравнение элементов
2.8. Прочие методы
2.9. Классы MatOfByte, MatOfInt, MatOfFloat и MatOfDouble
2.10. Классы MatOfPoint, MatOfPoint3 и MatOfRect

Глава 3. Создание и преобразование изображений

3.1. Загрузка изображения из файла
3.2. Сохранение изображения в файл
3.3. Преобразование матрицы в массив и обратно
3.4. Преобразование цветового пространства
    3.4.1. Преобразование BGR в оттенки серого
    3.4.2. Преобразование BGR в RGB
    3.4.3. Добавление или удаление альфа-канала
    3.4.4. Преобразование BGR в HSV
    3.4.5. Преобразование BGR в HLS
    3.4.6. Преобразование BGR в Lab
3.5. Изменение типа изображения
    3.5.1. Преобразование типа CV_8U в CV_32F
    3.5.2. Преобразование типа CV_16U в CV_32F
    3.5.3. Преобразование типа CV_8U в CV_16U
3.6. Преобразование Mat в BufferedImage
3.7. Преобразование Mat в WritableImage
3.8. Сохранение матрицы в бинарный файл
3.9. Класс CvUtils и шаблон приложения JavaFX
3.10. Чтение кадров из видеофайла
3.11. Захват кадров с веб-камеры

Часть II. Обработка изображения

Глава 4. Рисование фигур и вывод текста на изображение

4.1. Указание цвета
4.2. Рисование линии
4.3. Рисование стрелки
4.4. Рисование прямоугольника
4.5. Рисование круга
4.6. Рисование эллипса, дуги или сектора
4.7. Рисование ломаной линии и многоугольника
4.8. Вывод текста на изображение
4.9. Создание рамки
4.10. Вставка одного изображения в другое
4.11. Наложение одного изображения на другое
4.12. Рисование маркеров

Глава 5. Трансформация изображения

5.1. Разделение изображения на отдельные каналы
5.2. Создание зеркального отражения
5.3. Объединение нескольких изображений
5.4. Повтор изображения по горизонтали и вертикали
5.5. Изменение размеров изображения
5.6. Аффинные преобразования
    5.6.1. Смещение, масштабирование и сдвиг
    5.6.2. Вращение
5.7. Трансформация перспективы

Глава 6. Обработка изображения

6.1. Преобразование цветного изображения в черно-белое
6.2. Изменение яркости и насыщенности
6.3. Изменение цветового баланса
6.4. Изменение контраста
6.5. Создание негатива изображения
6.6. Сепия
6.7. Вычисление гистограммы
6.8. Автоматическое выравнивание гистограммы изображения в градациях серого
6.9. Класс CLAHE
6.10. Метод applyColorMap()

Глава 7. Применение фильтров

7.1. Размытие и подавление цифрового шума
    7.1.1. Метод blur(): однородное сглаживание
    7.1.2. Размытие по Гауссу
    7.1.3. Метод bilateralFilter(): двустороннее сглаживание
    7.1.4. Метод adaptiveBilateralFilter()
    7.1.5. Медианный фильтр
    7.1.6. Метод boxFilter()
7.2. Методы filter2D() и sepFilter2D()
7.3. Методы dilate() и erode()
7.4. Метод morphologyEx()
7.5. Гауссовы пирамиды
7.6. Вычисление градиентов изображения
    7.6.1. Методы Sobel() и Scharr()
    7.6.2. Метод Laplacian()
7.7. Фильтр Габора
7.8. Повышение резкости

Часть III. Компьютерное зрение

Глава 8. Поиск объектов

8.1. Поиск контуров
    8.1.1. Метод Canny(): выделение границ
    8.1.2. Метод findContours(): поиск контуров
    8.1.3. Метод drawContours(): отрисовка контура
    8.1.4. Основные методы для работы с контурами
    8.1.5. Сравнение контуров
8.2. Поиск объекта по цвету
8.3. Вычитание фона из текущего кадра
8.4. Поиск объекта по шаблону
8.5. Поиск прямых линий и кругов
8.6. Класс LineSegmentDetector

Глава 9. Сегментация изображения

9.1. Метод watershed()
9.2. Метод pyrMeanShiftFiltering()
9.3. Метод floodFill()
9.4. Метод grabCut()
9.5. Метод kmeans()

Глава 10. Поиск особых точек

10.1. Поиск углов
    10.1.1. Детектор углов Харриса
    10.1.2. Метод cornerMinEigenVal()
    10.1.3. Метод preCornerDetect()
    10.1.4. Метод goodFeaturesToTrack()
    10.1.5. Уточнение местоположения углов
10.2. Поиск ключевых точек
    10.2.1. Класс KeyPoint
    10.2.2. Класс MatOfKeyPoint
    10.2.3. Отрисовка ключевых точек
    10.2.4. Класс FeatureDetector
10.3. Сравнение ключевых точек
    10.3.1. Класс DescriptorExtractor
    10.3.2. Класс DMatch
    10.3.3. Класс MatOfDMatch
    10.3.4. Отрисовка найденных совпадений
    10.3.5. Класс DescriptorMatcher
10.4. Создание панорамы
10.5. Класс Feature2D

Глава 11. Каскады Хаара

11.1. Класс CascadeClassifier
11.2. Поиск лиц
11.3. Поиск глаз
11.4. Поиск улыбки
11.5. Поиск носа

Предметный указатель книги "OpenCV и Java. Обработка изображений и компьютерное зрение"