L05 features
-
Upload
victor-kulikov -
Category
Technology
-
view
3.580 -
download
0
description
Transcript of L05 features
Поиск локальных особенностей
Сайт курса:
http://cvbeginner.blogspot.com/
1
Из прошлой лекции…
• Инвариантность
• Градиенты
• Матрица ковариации
2
Как найти или сравнить объекты?
• Имеем два изображения, содержащие объекты. Мы хотим ответить на вопрос «Содержат ли изображения одинаковые объекты или нет?»
3
Прямое сопоставление (корреляция)
4
Прямое сопоставление (корреляция)
• OpenCV
– cv::matchTemplate(x,y,res,CV_TM_CCORR_NORMED);
• Matlab
– corr2(x,y)
• Что делать если изображения имеют разный масштаб?
5
Многомасштабное представление
• Строим пирамиду изображений, где каждое последующее меньше в два раза предыдущего
• Проводим сопоставление по всем маштабам
6
Многомасштабное представление
• OpenCV
–buildPyr(im,levels,maxlevel)
• Matlab
–Библиотека vlfeat.org
– imup(I)
– imdown(I)
7
Модель преобразований
• Геометрические
–Поворот
–Смещение
–Масштабирование
• Изменение яркости
8
А если объект закрыт или с другого ракурса?
9
Локальные особенности
• Найти точки на объекте, которые будут на обоих снимках
10
Где используется
• Создание мозаик
• Стерео отождествление
• Трассировка
• Классификация и поиск
11
Требования к особенностям
• Повторяемость
– Особенность находится в том же месте не смотря на изменения точки обзора и освещения
• Значимость
– У каждой особенности может быть уникальное описание
• Локальность
– Особенность занимает маленькую площадь и устойчива к перекрытиям
• Компактность и эффективность
12
Что можно выбрать в качестве особенности?
13
Типы локальных особенностей
• Углы
• Пятна(Блобы)
• Области
Вопрос: почему углы?
14
Углы
• Плоскость. По всем направлениям нет изменений.
• Край. В двух направлениях нет изменений.
• Угол. В любом направление есть изменение!
15
Детектор Харриса
• C.Harris and M.Stephens. "A Combined Corner and Edge Detector.” Proceedings of the 4th Alvey Vision Conference: pages 147—151, 1988
• Свойства угла
– Градиент имеет
два направления
– Повторимы и различимы
16
• Вычисляем производные
• Считаем в области матрицу ковариации
• По соб. числам матрицы М можем сказать принадлежит ли область углу, границе или плоскости
Основная идея
17
Отклик
18
Slide credit: Антон Конушин
Алгоритм
1. Считаем производные
2. Для каждого пикселя считаем матрицу ковариации M в окне
3. Вычисляем dst(x,y)
4. Режим по порогу dst(x,y)
5. Ищем локальные максимумы в окне
19
Различные параметры
20
Реализация
• OpenCV
– cv::cornerHarris(y,res,4,3,0);
– cv::goodFeaturesToTrack(y, corners, 200, 0.15, 5,cv::Mat(), 3,true, 0.04 );
• Matlab
–vl_harris(I)
21
Свойства детектора Харисса
• Инвариантность к повороту
• К смещению
• Частичная инвариантность к изменению яркости
22
Инвариантность к масштабу
• Найти признаки инвариантные к изменению масштаба
• Мы знаем как найти границу
23
Поиск границы Лапласианом
24
Пятна (Блобы)
• Точка или пятно имеющее вид круга – хорошая особая точка.
25
Поиск пятен
26
Slide credit: Антон Конушин
Чтобы найти пятно
• Чтобы найти пятно надо свернуть сигнал с Лапласианом соответствующей дисперсией
• Проблема: при повышении дисперсии уменьшается отклик на идеальный край
27
Нормализация• Умножая лапласиан на дисперсию в квадрате
этот эффект пропадает
28
Многомасштабность
• Свертываем с нормализированным Лапласианом в разных масштабах
• Ищем максимумы функции по всем масштабам
29
Поиск пятен
30
Реализация
• OpenCV
–SIFT
• Matlab
–vl_sift(d)
• Считается эффективно, на пирамиде изображений
31
Области MSER
• Сегментировать по порогу яркости
• Для всех областей найти порог, чтобы рост площади области был минимален
• Описать эти области эллипсами
32
Пример стабильных областей
33
Можно описать эллипсами
34
Реализация
• OpenCV
–MSER
• Matlab
–vl_mser
35
Итого
• Необходима инвариантность к искажениям
• Углы и пятна – разные множества, можно использовать совместно
36
Перерыв
• Вопросы?
37
Дескрипторы• Хотелось бы чтобы каждую точку можно
было отличить от другой
• При этом описание практически не завесило от геометрических искажений
38
Slide credit: Антон Конушин
Дескрипторы
39
d=(d1,d2,…dn)
Дескрипторы должны быть:
• специфичны (отличаем разные точки)
• локальны (зависеть только от небольшой окрестности)
• инвариантны (к искажениям/изменению освещенности)
• просты в вычислении
40
Прямое сопоставление
41
Дескриптор: Вектор интенсивностей пикселей
окрестности
Прямое сопоставление
• Сравниваем как сумма квадратов или модулей разности
• Работает только простой сдвиг
• Для достижения инвариантности по яркости надо нормировать
– I=(I-mean(I))/std(I)
• Недостатки?
42
SIFTScale-Invariant Feature Transform:
• Детектор DoG (быстрая вариация поиска Пятен)
• Определение положения и масштаба особенности
Ориентация
• Определение доминантной ориентации по градиентам
Дескриптор
• Использование статистик по направлению градиентам
• Устойчив к изменениям освещенности и небольшим
• Сдвигам
David G. Lowe. "Distinctive image features from scale-invariant keypoints.” IJCV 60 (2), pp. 91-110, 2004.
43
Ориентация
44
Slide credit: Антон Конушин
Окрестность особенности
45
Гистограмма градиентовВычисляем градиент в каждом пикселе
• Строим гистограммы направлений градиентов по прямоугольным областям
• Вклад каждого пикселя взвешиваем по гауссиане с центром в центре окрестности
• Обычно – сетка 4x4, в каждой гистограмма с 8ю ячейками
• Стандартная длина вектора-дескриптора – 128 (4*4*8)
• Сравниваем как вектор (разные метрики)
46
Работа с цветом
47
Реализация Opencv
• Features2d_featureDetector = cv::FeatureDetector::create( "FAST" );
_descriptorExtractor = cv::DescriptorExtractor::create( "SURF" );
_descriptorMatcher = cv::DescriptorMatcher::create( “BruteForce-Hamming”);
std::vector<cv::KeyPoint> kp;
_featureDetector->detect(grey,kp);
cv::Mat queryDescriptors;
_descriptorExtractor->compute( grey, kp, queryDescriptors );
vector<DMatch> matches;
if(!_descriptorMatcher->empty())
{
_descriptorMatcher->match( queryDescriptors, matches );
}else{ _descriptorMatcher->add( queryDescriptors);
48
Matlab + Vlfeat
Вычисление особых точек + дескриптора
• [fa, da] = vl_sift(Ia) ;
• [fb, db] = vl_sift(Ib) ;
Вычисление сопоставления
• [matches, scores] = vl_ubcmatch(da, db) ;
49
Итого• Дескриптор SIFT весьма специфичен, устойчив
к изменениям освещения, небольшим сдвигам
• Вся схема SIFT (детектор, выбор окрестностей, дескриптор) оказалась очень эффективным инструментов для анализа изображений
• Очень широко используется
50
Перспективные преобразование
51
Slide credit: Антон Конушин
Аффинная нормализация
52
Slide credit: V. Lepetit
Пример
53
BRIEF
54
Slide credit: V. Lepetit
SIFT + MSER
55
Slide credit: Zisserman
См. features2d
56
Вопросы
57