52
Цифровая обработка изображений Савченко А.В. Д.т.н., проф. Каф. Информационные системы и технологии [email protected] TMPA School 2018 Kostroma 1

Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

Цифровая обработка изображений

Савченко А.В. Д.т.н., проф. Каф. Информационные системы и технологии

[email protected]

TMPA School 2018 Kostroma 1

Page 2: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

План лекции

1. Информация о лекторе

2. Основные задачи компьютерного

зрения

3. Фильтрация изображений

4. Выделение краев (Edge detection)

5. Выделение ключевых точек

6. Дескрипторы

2

Page 3: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

фото

Информация о лекторе

3

Page 4: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Информация о лекторе

фото

Персональная страница НИУ ВШЭ: http://www.hse.ru/staff/avsavchenko

4

Page 5: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Научно-учебная группа «Анализ мультимедийных данных»

(https://nnov.hse.ru/bipm/amd/)

фото

• Распознавание лица по фотографиям/видео. Работа поддержана грантом

Президента РФ для молодых докторов наук

• Распознавание речи в системах голосового управления. Проект вошел в число

10 лучших в рамках ФЦП «Исследования и разработки» (2007-2013)

• Большие данные. Эффективная классификация дескрипторов изображений и

текстов (Пономаренко А.А.)

• Компьютерная лингвистика. Анализ текстов, opinion mining (Карпов Н.В.)

5

Page 6: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

Samsung-PDMI AI Center (https://samsung.pdmi.ras.ru)

фото

Проект User Preference Prediction in Visual Data

6 TMPA School 2018 Kostroma

Walking Baseball

Figure Japanese

Beauty

Travel Japanese

Ukulele

Golf

Lego Drama

Drone

User 1

User 2

User 3

Генерация профиля пользователя

Page 7: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Основные задачи компьютерного

зрения

7

Page 8: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Очистка изображений от шума

8

https://www.mathworks.com/help/wavelet/examples/denoising-signals-and-

images.html

Page 9: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Распознавание изображений

9

Page 10: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Семантическая сегментация

10

Page 11: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Детектирование объектов на изображениях

11

Page 12: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Классификация, детектирование, локализация…

12

https://leonardoaraujosantos.gitbooks.io/artificial-

inteligence/content/object_localization_and_detection.html

Page 13: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Восстановление 3D модели по изображению

13

[Рассадин, 2017]

Предсказание нейросетевои модели

Оригинальная 3D модель

Ошибка

Page 14: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Текстовое описание изображений

14

http://arxiv.org/abs/1411.4555 “Show and Tell: A Neural Image Caption Generator”

Page 15: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Обработка изображений лиц (1). Детектирование

15

Page 16: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Обработка изображений лиц (2). Верификация

16

Kumar et al, TPAMI, 2011

Page 17: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Обработка изображений лиц (3). Идентификация

(распознавание)

17

Входная видео последовательность

Эталонные

фотографии

Page 18: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Обработка изображений лиц (4). Распознавание пола

и возраста

18

Page 19: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Обработка изображений лиц (5). Распознавание

эмоций

19

Page 20: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Фильтрация изображений

20

Page 21: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Основной инструмент

- Open Source Computer Vision Library

- BSD license

- C++, C, Python, Java

- Windows, Linux, Mac OS, iOS and Android

21

Page 22: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Представления цифровых изображений. Дискретизация и квантование

22

Гонсалес, Вудс «Цифровая обработка изображений»

Page 23: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Преобразование формата. Полутоновые изображения

23

OpenCV: cvtColor()

Solem «Programming Computer Vision

with Python»

Page 24: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Нормировка

Приведение всех пикселей к нулевому среднему и единичной дисперсии

24

Ponce «Computer vision: models, learning and inference»

OpenCV: normalize()

Page 25: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Гистограмма полутонового изображения

25

OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example»

Page 26: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Выравнивание гистограммы (histogram equalization)

26

OpenCV: equalizeHist()

K – максимальное значение

интенсивности (обычно 256)

Ponce «Computer vision: models, learning and inference»

Page 27: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Медианный фильтр

27

OpenCV: medianBlur() Muhammad «OpenCV Android Programming By Example»

Шум «Salt-and-pepper»

Page 28: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Линейная фильтрация (1). Одномерный сигнал

28

Кросс-корреляция

Свертка (convolution)

Ketkar “Deep Learning with Python”

Page 29: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Линейная фильтрация (2). Двумерный сигнал (изображение)

29

OpenCV: filter2D() DLI-Teaching-Kit

http://intellabs.github.io/RiverTrail/tutorial/

Page 30: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Гауссовский фильтр (smoothing, blurring)

30

OpenCV: GaussianBlur()

Ponce «Computer vision: models, learning and inference»

Page 31: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Билатеральный фильтр

31

OpenCV: bilateralFilter() Wikipedia

Domain kernel Range kernel

Page 32: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Математическая морфология

32

OpenCV:

erode(),

dilate(),

morphologyEx() //MORPH_OPEN, MORPH_CLOSE

Расширение

(Dilation)

Сужение

(Erosion)

Szeliski «Computer Vision: Algorithms and Applications»

Открытие

(Opening) Закрытие

(Closing)

Page 33: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Фильтры Хаара. Интегральное изображение

33

Ponce «Computer vision: models, learning and inference»

Page 34: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Локальные бинарные шаблоны (Local Binary Patterns, LBP)

34

Ponce «Computer vision: models, learning and inference»

https://habrahabr.ru/post/280888/

Uniform pattern – число с 0, 1

или 2 переходами 0-1 или 1-0.

Примеры: «00111100»,

«11111111» и «01111111».

Non-uniforms patterns

объединяются в один:

«10100000» и «01010101»

LBPP,R

Page 35: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Выделение краев (Edge detection)

35

Page 36: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Вычисление первых производных

36

Фильтры Превитт Фильтры Собеля

Ponce «Computer vision: models, learning and inference»

Page 37: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Вторые производные. Фильтр Лапласа.

37

Ponce «Computer vision: models, learning and inference» OpenCV: Laplacian(),

filter2D

Page 38: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Фильтры Габора

38

Ponce «Computer vision: models, learning and inference» OpenCV: getGaborFilter()

Page 39: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Фильтр Кэнни

39

Ponce «Computer vision: models, learning and inference»

b)Вертикальный фильтр

Превитт

c)Горизонтальный фильтр

Превитт

d)Квантование ориентации

e)Амплитуда градиента

f)Non-maximal suppression:

угол квантуется ({0°, 45°,

90°, 135°}), амплитуда:=0,

если меньше хотя бы 1 из 2

пикселей перпендикулярных

градиенту

g)Два порога: белые пиксели

выше максимального порога,

OpenCV: Canny()

красные – больше минимального

h) Hysteresis thresholding – все белые пиксели и связанные с ними красные

Page 40: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Выделение ключевых точек

40

Page 41: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Interest points

41

Muhammad «OpenCV Android Programming By Example»

Page 42: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Детектор углов Харриса

42

hmn, vmn – отклики

фильтров

горизонтальных/

вертикальных частных

производных

Ponce «Computer vision: models, learning and inference» OpenCV: cornerHarris()

Image structure tensor

Page 43: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

FAST детектор

43

Тестирование 16 пикселей в окрестности, детектирование угла, если 12 из

них ярче/темнее центрального пикселя

OpenCV:

FastFeatureDetector () Muhammad «OpenCV Android Programming By Example»

В начале проверяются

только 4 пикселя (1, 9, 5, 13)

Page 44: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Инвариантность к масштабу. Пирамида изображений

44

Muhammad «OpenCV Android Programming By Example»

Page 45: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

SIFT детектор (Scale-Invariant Feature Transform)

45

1. Поиск в пирамиде экстремальных точек – интенсивность

больше/меньше всех (3х3х3-1=26 соседей)

2. Проверка условий детектора Харриса

3. Построение гистограммы ориентации градиента в локальной

окрестности (36 блоков на 360 градусов) и выбор одного или двух пиков

в гистограмме

OpenCV:

SiftFeatureDetector () Ponce «Computer vision: models, learning and inference»

Page 46: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Дескрипторы

46

Page 47: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Гистограммы элементарных признаков

47

Гистограмма цвета

[Lowe, 2004]

Гистограмма ориентаций

градиента

https://prophotos.ru/lessons/17601-gistogramma-i-

obrabotka-izobrazheniya

Page 48: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Локальный дескриптор SIFT

48

Ponce «Computer vision: models, learning and inference»

1. 16х16 окрестность точки разбивается сеткой 4х4 ячейки

2. В каждой ячейке вычисляется взвешенная гистограмма ориентации

градиента (8 блоков)

3. Гистограммы всех ячеек нормируются по ориентации ключевой точки и

объединяются в единый SIFT дескриптор (размерность 4х4х8=128)

OpenCV: SIFT class

Page 49: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Сравнение (matching) локальных дескрипторов

49

Solem «Programming Computer Vision with Python»

Дескрипторы совпадают, если расстояние до 1NN (nearest neighbor)

/расстояние до 2NN меньше определенного порога (0,6-0,8) Matching дескрипторов

левого изображения

Matching дескрипторов

обоих изображений

Page 50: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Глобальный дескриптор HOG (Histogram of Oriented Gradients)

50

Ponce «Computer vision: models, learning and inference»

b) Ориентация градиента (квантованная на 9 блоков для 180 градусов)

c) Амплитуда градиента

d) Дескрипторы ячеек 6х6 пикселей – взвешенные гистограммы ориентаций

e) Дескриптор блока – нормированный объединенный вектор дескрипторов

смежных 3х3 ячеек

Итоговый дескриптор HOG для изображения 64х128 – объединение

дескрипторов блоков

Page 51: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

TMPA School 2018 Kostroma

Bag-of-words

51

https://www.mathworks.com/help/vision/ug/image-classification-with-bag-of-visual-words.html

Формирование «словаря»

Кодирование изображения

Page 52: Цифровая обработка изображений...2018/09/29  · OpenCV: calcHist() Muhammad «OpenCV Android Programming By Example» TMPA School 2018 Kostroma Выравнивание

52