Поиск локальных
         особенностей
Сайт курса:
http://cvbeginner.blogspot.com/

                                  1
Из прошлой лекции…
• Инвариантность
• Градиенты
• Матрица ковариации




                       2
Как найти или сравнить объекты?
• Имеем два изображения, содержащие объекты.
  Мы хотим ответить на вопрос «Содержат ли
  изображения одинаковые объекты или нет?»




                                               3
Прямое сопоставление (корреляция)




                                    4
Прямое сопоставление (корреляция)
• OpenCV
 – cv::matchTemplate(x,y,res,CV_TM_CCO
   RR_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
Отклик




         Slide credit: Антон Конушин

                                18
Алгоритм
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
Поиск пятен




              Slide credit: Антон Конушин

                                     26
Чтобы найти пятно
• Чтобы найти пятно надо свернуть
  сигнал с Лапласианом
  соответствующей дисперсией
• Проблема: при повышении
  дисперсии уменьшается отклик на
  идеальный край



                                    27
Нормализация
• Умножая лапласиан на дисперсию в квадрате
  этот эффект пропадает




                                              28
Многомасштабность
• Свертываем с нормализированным
  Лапласианом в разных масштабах
• Ищем максимумы функции по всем
  масштабам




                                   29
Поиск пятен




              30
Реализация
• OpenCV
  – SIFT
• Matlab
  – vl_sift(d)
• Считается эффективно, на
  пирамиде изображений



                             31
Области MSER
• Сегментировать по порогу яркости
• Для всех областей найти порог,
  чтобы рост площади области был
  минимален
• Описать эти области эллипсами




                                     32
Пример стабильных областей




                             33
Можно описать эллипсами




                          34
Реализация
• OpenCV
  – MSER
• Matlab
  – vl_mser




              35
Итого
• Необходима инвариантность к
  искажениям
• Углы и пятна – разные множества,
  можно использовать совместно




                                     36
Перерыв
• Вопросы?




             37
Дескрипторы
• Хотелось бы чтобы каждую точку можно
  было отличить от другой
• При этом описание практически не
  завесило от геометрических искажений




                          Slide credit: Антон Конушин

                                                 38
Дескрипторы


              d=(d1,d2,…dn)




                              39
Дескрипторы должны быть:
• специфичны (отличаем разные
  точки)
• локальны (зависеть только от
  небольшой окрестности)
• инвариантны (к
  искажениям/изменению
  освещенности)
• просты в вычислении

                                 40
Прямое сопоставление
Дескриптор: Вектор интенсивностей пикселей
окрестности




                                             41
Прямое сопоставление
• Сравниваем как сумма квадратов
  или модулей разности
• Работает только простой сдвиг
• Для достижения инвариантности по
  яркости надо нормировать
 – I=(I-mean(I))/std(I)
• Недостатки?


                                     42
SIFT
Scale-Invariant Feature Transform:
• Детектор DoG (быстрая вариация поиска Пятен)
• Определение положения и масштаба особенности
 Ориентация
• Определение доминантной ориентации по градиентам
 Дескриптор
• Использование статистик по направлению градиентам
• Устойчив к изменениям освещенности и небольшим
• Сдвигам
David G. Lowe. "Distinctive image features from scale-
   invariant keypoints.” IJCV 60 (2), pp. 91-110, 2004.



                                                          43
Ориентация




             Slide credit: Антон Конушин

                                    44
Окрестность особенности




                          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
Перспективные преобразование




                    Slide credit: Антон Конушин

                                           51
Аффинная нормализация




                  Slide credit: V. Lepetit

                                     52
Пример




         53
BRIEF




        Slide credit: V. Lepetit

                            54
SIFT + MSER




              Slide credit: Zisserman

                                 55
См. features2d




                 56
Вопросы




          57

L05 features