Программирование компьютерного зрения на языке Python
Покупка
Издательство:
ДМК Пресс
Автор:
Солем Ян Эрик
Перевод:
Слинкин Алексей Александрович
Год издания: 2016
Кол-во страниц: 312
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-200-3
Артикул: 651162.02.99
К покупке доступен более свежий выпуск
Перейти
Если вы хотите разобраться в основах теории и алгоритмов компьютерного зрения, то эта книга - как раз то, что вам нужно. Вы узнаете о методах распознавания объектов, трехмерной реконструкции, обработке стереоизображений, дополненной реальности и других приложениях компьютерного зрения. Изложение сопровождается понятными примерами на языке Python. При этом объяснения даются в общих чертах, без погружения в сухую теорию. Издание идеально подходит для студентов, исследователей и энтузиастов-любителей с базовыми знаниями математики и навыками программирования.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Программирование компьютерного зрения на Python Если вы хотите разобраться в основах теории и алгоритмов компьютерного зрения, то эта книга — как раз то, что вам нужно. Вы узнаете о методах распознавания объектов, трехмерной реконструкции, обработке стереоизображений, дополненной реальности и других приложениях компьютерного зрения. Изложение сопровождается понятными примерами на языке Python. При этом объяснения даются в общих чертах, без погружения в сухую теорию. Издание идеально подходит для студентов, исследователей и энтузиастов-любителей с базовыми знаниями математики и навыками программирования. Интернет-магазин: www.dmkpress.com Книга – почтой: orders@alians-kniga.ru Оптовая продажа: “Альянс-книга” тел.(499)782-38-89 books@alians-kniga.ru www.дмк.рф Краткое содержание книги: • методы, применяемые для ориентации роботов, обработки медицинских изображений и в других приложениях машинного зрения; • преобразования изображений, в частности деформирование текстур и создание панорам; • вычисление трехмерной реконструкции по нескольким изображениям одной сцены; • организация изображений по сходству или содержанию с применением методов кластеризации; • разработка эффективных методов поиска изображений по содержанию; • алгоритмы распознавания объектов и классификации изображений по содержанию; • работа с популярной библиотекой OpenCV через интерфейс с Python. Программирование компьютерного зрения Ян Эрик Солем, большой энтузиаст языка Python, занимается исследованиями и популяризацией компьютерного зрения. По образованию прикладной математик, работал доцентом, техническим директором стартапа, пишет книги. 9 785970 602003 ISBN 978-5-97060-200-3 на языкеPython Ян Эрик Солем Цветное издание
Ян Эрик Солем Программирование компьютерного зрения на языке Python
Programming Computer Vision with Python Jan Erik Solem Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo
Москва, 2016 Программирование компьютерного зрения на языке Python Ян Эрик Солем
УДК 004.93Python ББК 32.972.1 С60 С60 Ян Эрик Солем Программирование компьютерного зрения на языке Python. / пер. с англ. Слинкин А. А. – М.: ДМК Пресс, 2016. – 312 с.: ил. ISBN 978-5-97060-200-3 Если вы хотите разобраться в основах теории и алгоритмов компьютерного зрения, то эта книга – как раз то, что вам нужно. Вы узнаете о методах распознавания объектов, трехмерной реконструкции, обработке стереоизображений, дополненной реальности и других приложениях компьютерного зрения. Изложение сопровождается понятными примерами на языке Python. При этом объяснения даются в общих чертах, без погружения в сухую теорию. Издание идеально подходит для студентов, исследователей и энтузиастов-любителей с базовыми знаниями математики и навыками программирования. УДК 004.93Python ББК 32.972.1 Original English language edition published by O'Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. Copyright © 2012 O'Reilly Media, Inc. Russian-language edition copyright © 2016 by DMK Press. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроиз ведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, по скольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-1-44931-654-9 (англ.) Copyright © Jan Erik Solem, 2012. ISBN 978-5-97060-200-3 (рус.) © Оформление, перевод на русский язык, ДМК Пресс, 2016
Оглавление Предисловие.................................................... 11 Требования к читателю и структура книги ...................................... 12 Необходимые знания и навыки ............................................................. 12 Чему вы научитесь ................................................................................ 12 Структура книги .................................................................................... 13 Введение в компьютерное зрение ................................................. 14 Python и NumPy ............................................................................. 14 Обозначения и графические выделения ........................................ 15 О примерах кода ........................................................................... 16 Как с нами связаться ..................................................................... 17 Благодарности .............................................................................. 17 Об авторе ...................................................................................... 18 Глава.1..Основы.обработки.изображений............... 19 1.1. PIL – библиотека Python Imaging Library ................................... 19 Преобразование изображения в другой формат ................................... 20 Создание миниатюр.............................................................................. 21 Копирование и вставка областей .......................................................... 21 Изменение размера и поворот .............................................................. 22 1.2. Библиотека Matplotlib ............................................................. 22 Рисование точек и прямых линий .......................................................... 22 Изолинии и гистограммы изображений ................................................ 25 Интерактивное аннотирование ............................................................. 26 1.3. Пакет NumPy ........................................................................... 27 Представление изображения в виде массива ....................................... 27 Преобразование уровня яркости .......................................................... 29 Изменение размера изображения ........................................................ 31 Выравнивание гистограммы ................................................................. 31 Усреднение изображений ..................................................................... 33 Метод главных компонент для изображений ......................................... 34 Использование модуля pickle ................................................................ 37 1.4. Пакет SciPy ............................................................................. 39 Размытие изображений ........................................................................ 39 Производные изображения ................................................................... 40 Морфология – подсчет объектов........................................................... 43 Полезные модули в пакете SciPy ........................................................... 46
Оглавление 1.5. Более сложный пример: очистка изображения от шумов ........ 47 Упражнения ................................................................................... 50 Соглашения в примерах кода ........................................................ 51 Глава.2..Локальные.дескрипторы.изображений...... 53 2.1. Детектор углов Харриса .......................................................... 53 Нахождение соответственных точек в изображениях ............................ 57 2.2. SIFT – масштабно-инвариантное преобразование признаков . 62 Особые точки ........................................................................................ 62 Дескриптор ........................................................................................... 63 Обнаружение особых точек ................................................................... 63 Сопоставление дескрипторов ............................................................... 67 2.3. Сопоставление изображений с геометками ............................ 70 Загрузка изображений с геометками из Panoramio ............................... 71 Сопоставление с помощью локальных дескрипторов ............................ 74 Визуализация связанных изображений ................................................. 76 Упражнения ................................................................................... 78 Глава.3..Преобразования.изображений................. 80 3.1. Гомографии ............................................................................ 80 Алгоритм прямого линейного преобразования ..................................... 82 Аффинные преобразования .................................................................. 84 3.2. Деформирование изображений .............................................. 85 Изображение внутри изображения ....................................................... 86 Кусочно-аффинное деформирование ................................................... 91 Регистрация изображений .................................................................... 95 3.3. Создание панорам ................................................................ 101 RANSAC .............................................................................................. 101 Устойчивое вычисление гомографии .................................................. 102 Сшивка изображений .......................................................................... 106 Упражнения ................................................................................. 109 Глава.4..Модели.камер.и.дополненная.реальность.... 110 4.1. Модель камеры с точечной диафрагмой ............................... 110 Матрица камеры ................................................................................. 111 Проецирование точек трехмерного пространства ............................... 113 Вычисление центра камеры ................................................................ 116 4.2. Калибровка камеры .............................................................. 116 Простой метод калибровки ................................................................. 117 4.3. Оценивание положения по плоскостям и маркерам .............. 119 4.4. Дополненная реальность ...................................................... 123 PyGame и PyOpenGL............................................................................ 124
Оглавление От матрицы камеры к формату OpenGL ............................................... 125 Помещение виртуальных на изображение .......................................... 127 Собираем все вместе ......................................................................... 129 Загрузка моделей ............................................................................... 132 Упражнения ................................................................................. 134 Глава.5..Многовидовая.геометрия...................... 135 5.1. Эпиполярная геометрия ....................................................... 135 Демонстрационный набор данных ...................................................... 138 Построение трехмерных графиков в Matplotlib .................................... 140 Вычисление F – восьмиточечный алгоритм ......................................... 141 Эпиполюс и эпиполярные прямые ...................................................... 142 5.2. Вычисления, относящиеся к камерам и трехмерной структуре .................................................................................... 145 Триангуляция ...................................................................................... 145 Вычисление матрицы камеры по точкам в пространстве ..................... 148 Вычисление матрицы камеры по фундаментальной матрице .............. 150 5.3. Многовидовая реконструкция ............................................... 153 Устойчивое вычисление фундаментальной матрицы ........................... 154 Пример трехмерной реконструкции .................................................... 156 Обобщения и случай более двух видов................................................ 159 5.4. Стереоизображения ............................................................. 161 Вычисление карт диспаратности......................................................... 163 Упражнения ................................................................................. 167 Глава.6..Кластеризация.изображений................. 170 6.1. Кластеризация методом K средних ....................................... 170 Пакет кластеризации в SciPy ............................................................... 171 Кластеризация изображений .............................................................. 172 Визуализация проекций изображений на главные компоненты ........... 174 Кластеризация пикселей .................................................................... 175 6.2. Иерархическая кластеризация .............................................. 178 Кластеризация изображений .............................................................. 182 6.3. Спектральная кластеризация ................................................ 186 Упражнения ................................................................................. 191 Глава.7..Поиск.изображений.............................. 193 7.1. Поиск изображений по содержанию ..................................... 193 Векторная модель – инструмент анализа текста ................................. 193 7.2. Визуальные слова ................................................................. 195 Создание словаря ............................................................................... 195 7.3. Индексирование изображений ............................................. 198 Подготовка базы данных ..................................................................... 198
Оглавление Добавление изображений ................................................................... 200 7.4. Поиск изображений в базе данных ........................................ 202 Использование индекса для получения кандидатов ............................ 203 Запрос по изображению ..................................................................... 205 Эталонное тестирование и построение графика ................................. 206 7.5. Ранжирование результатов с применением геометрических соображений ............................................................................... 209 7.6. Создание демонстраций и веб-приложений ......................... 212 Создание веб-приложений с помощью CherryPy ................................. 212 Демонстрация поиска изображений ................................................... 212 Упражнения ................................................................................. 215 Глава.8..Классификация.изображений. по.содержанию............................................... 217 8.1. Метод k ближайших соседей ................................................ 217 Простой двумерный пример ............................................................... 218 Плотные SIFT-дескрипторы в качестве признаков изображения ......... 222 Классификация изображений – распознавание жестов ...................... 223 8.2. Байесовский классификатор ................................................ 227 Использование метода главных компонент для понижения размерности ....................................................................................... 231 8.3. Метод опорных векторов ...................................................... 232 Использование библиотеки LibSVM .................................................... 233 И снова о распознавании жестов ........................................................ 235 8.4. Оптическое распознавание символов ................................... 237 Обучение классификатора .................................................................. 238 Отбор признаков ................................................................................. 238 Выделение клеток и распознавание символов .................................... 240 Выпрямление изображений ................................................................ 243 Упражнения ................................................................................. 245 Глава.9..Сегментация.изображений.................... 247 9.1. Разрезание графов ............................................................... 247 Графы изображений ........................................................................... 249 Сегментация с привлечением пользователя ....................................... 254 9.2. Сегментация с применением кластеризации ........................ 258 9.3. Вариационные методы ......................................................... 264 Упражнения ................................................................................. 265 Глава.10..OpenCV............................................. 268 10.1. Интерфейс между OpenCV и Python .................................... 268 10.2. Основы OpenCV .................................................................. 269
Оглавление Чтение и запись изображений ............................................................. 269 Цветовые пространства ...................................................................... 270 Отображение изображений и результатов обработки ......................... 270 10.3. Обработка видео ................................................................ 273 Ввод видео ......................................................................................... 273 Чтение видео в массивы NumPy .......................................................... 275 10.4. Трассировка ....................................................................... 276 Оптический поток ............................................................................... 276 Алгоритм Лукаса-Канаде .................................................................... 279 Использование трассировщика .......................................................... 283 Применение генераторов ................................................................... 284 10.5. Другие примеры ................................................................. 285 Ретуширование ................................................................................... 285 Сегментация по морфологическим водоразделам .............................. 286 Обнаружение фигур с помощью преобразования Хафа....................... 288 Упражнения ................................................................................. 288 Приложение.А..Установка.пакетов...................... 291 А.1. NumPy и SciPy....................................................................... 291 Windows .............................................................................................. 291 Mac OS X ............................................................................................. 291 Linux ................................................................................................... 292 А.2. Matplotlib .............................................................................. 292 А.3. PIL ........................................................................................ 292 А.4. LibSVM .................................................................................. 293 А.5. OpenCV ................................................................................. 293 Windows и Unix .................................................................................... 293 Mac OS X ............................................................................................. 294 Linux ................................................................................................... 294 А.6. VLFeat ................................................................................... 294 А.7. PyGame ................................................................................ 295 А.8. PyOpenGL ............................................................................. 295 А.9. Pydot .................................................................................... 295 А.10. Python-graph ....................................................................... 296 А.11. Simplejson ........................................................................... 296 А.12. PySQLite.............................................................................. 297 А.13. CherryPy ............................................................................. 297 Приложение.Б..Наборы.изображений.................. 298 Б.1. Flickr ..................................................................................... 298 Б.2. Panoramio ............................................................................. 299 Б.3. Оксфордская группа Visual Geometry .................................... 300
К покупке доступен более свежий выпуск
Перейти