Локальные особенности и их дескрипторы, которые являются компактными векторными представлениями локального окружения, являются строительными блоками многих алгоритмов компьютерного зрения. Их приложения включают регистрацию изображения, обнаружение и классификацию объектов, отслеживание и оценку движения. Использование локальных функций позволяет этим алгоритмам лучше обрабатывать изменения масштаба, вращение и окклюзию. В Toolbox™ Computer Vision предусмотрены методы FAST, Harris, ORB и Shi & Tomasi для обнаружения элементов угла, а также методы SURF, KAZE и MSER для обнаружения элементов больших двоичных объектов. Панель инструментов включает дескрипторы SURF, KAZE, FREAK, BRISK, ORB и HOG. Можно смешивать и сопоставлять детекторы и дескрипторы в зависимости от требований приложения.
Локальные элементы относятся к узору или отдельной структуре, обнаруженной в изображении, такой как точка, кромка или небольшой фрагмент изображения. Обычно они связаны с фрагментом изображения, который отличается от его непосредственного окружения текстурой, цветом или интенсивностью. То, что эта особенность на самом деле представляет, не имеет значения, только то, что она отличается от своего окружения. Примерами локальных элементов являются блобы, углы и краевые пикселы.
I = imread('circuit.tif'); corners = detectFASTFeatures(I,'MinContrast',0.1); J = insertMarker(I,corners,'circle'); imshow(J)

Локальные функции позволяют находить соответствия изображений независимо от окклюзии, изменения условий просмотра или наличия загромождений. Кроме того, свойства локальных признаков делают их пригодными для классификации изображений, например в «Классификации изображений с сумкой визуальных слов».
Локальные особенности используются двумя фундаментальными способами:
Локализация опорных точек для использования при сшивании изображения или реконструкции 3-D.
Для компактного представления содержимого изображения для обнаружения или классификации без необходимости сегментации изображения.
| Приложение | Примеры MATLAB |
|---|---|
| Регистрация изображения и сшивание | Сшивание панорамного изображения на основе элементов |
| Обнаружение объектов | Обнаружение объектов в загроможденной сцене с помощью сопоставления элементов точек |
| Распознавание объектов | Классификация цифр с использованием функций HOG |
| Отслеживание объектов | Обнаружение и отслеживание лица с помощью алгоритма KLT |
| Распознавание категории изображения | Классификация категорий изображений с использованием пакета функций |
| Поиск геометрии стереосистемы | Некалиброванное исправление стереоизображений |
| 3-D реконструкция | Структура из движения из двух видов, Структура из движения из нескольких видов |
| Извлечение изображения | Извлечение изображения с помощью настраиваемого пакета функций |
Детекторы, которые полагаются на подходы изменения градиента и интенсивности, обнаруживают хорошие локальные особенности. К этим элементам относятся ребра, большие и большие области. Хорошие локальные характеристики обладают следующими свойствами:
Повторяемые обнаружения:
При наличии двух изображений одной и той же сцены большинство признаков, найденных детектором в обоих изображениях, являются одинаковыми. Эти функции устойчивы к изменениям условий просмотра и шуму.
Отличительные:
Окрестности вокруг центра элементов достаточно различаются, чтобы обеспечить надежное сравнение элементов.
Локализуемые:
Элементу назначено уникальное местоположение. Изменения условий просмотра не влияют на его расположение.
При обнаружении элементов выбираются области изображения с уникальным содержимым, например углы или блобы. Используйте функцию обнаружения, чтобы найти интересующие точки, которые можно использовать для дальнейшей обработки. Эти точки не обязательно соответствуют физическим структурам, таким как углы таблицы. Ключом к обнаружению элементов является поиск элементов, которые остаются локально инвариантными, чтобы их можно было обнаружить даже при наличии поворота или изменения масштаба.
Извлечение элементов включает в себя вычисление дескриптора, которое обычно выполняется в областях, центрированных вокруг обнаруженных элементов. Дескрипторы полагаются на обработку изображения для преобразования локальной пиксельной окрестности в компактное векторное представление. Это новое представление позволяет сравнивать окрестности независимо от изменения масштаба или ориентации. Дескрипторы, такие как SIFT или SURF, полагаются на локальные вычисления градиента. Двоичные дескрипторы, такие как BRISK, ORB или FREAK, полагаются на пары локальных разностей интенсивности, которые затем кодируются в двоичный вектор.
Выберите лучший детектор и дескриптор функций с учетом критериев приложения и характера данных. Первая таблица помогает понять общие критерии выбора. В следующих двух таблицах приведены подробные сведения о детекторах и дескрипторах, доступных в Computer Vision Toolbox.
Рекомендации по выбору детектора и дескриптора
| Критерии | Предложение |
|---|---|
Тип элементов изображения | Используйте детектор, соответствующий вашим данным. Например, если изображение содержит изображение клеток бактерий, используйте детектор больших двоичных объектов, а не детектор углов. Если изображение представляет собой вид с воздуха на город, можно с помощью детектора угла найти искусственные конструкции. |
Контекст, в котором используются элементы:
| Дескрипторы HOG, SURF и KAZE подходят для задач классификации. Напротив, двоичные дескрипторы, такие как ORB, BRISK и FREAK, обычно используются для поиска точечных соответствий между изображениями, которые используются для регистрации. |
Тип искажения в изображении | Выберите детектор и дескриптор, которые устраняют искажение данных. Например, если изменение масштаба отсутствует, рассмотрим угловой детектор, который не обрабатывает масштаб. Если данные содержат более высокий уровень искажений, например масштаб и поворот, используйте детектор и дескриптор признаков SURF, ORB или KAZE. Методы SURF и KAZE являются вычислительно интенсивными. |
Требования к производительности:
| Двоичные дескрипторы обычно более быстрые, но менее точные, чем основанные на градиенте дескрипторы. Для большей точности используйте несколько детекторов и дескрипторов одновременно. |
Выбор функции обнаружения на основе типа элемента
| Датчик | Тип элемента | Функция | Масштабирование независимо |
|---|---|---|---|
| FAST [1] | Угол | detectFASTFeatures | Нет |
| Алгоритм минимального собственного значения [4] | Угол | detectMinEigenFeatures | Нет |
| Угловой детектор [3] | Угол | detectHarrisFeatures | Нет |
| SURF [11] | Капля | detectSURFFeatures | Да |
| KAZE [12] | Капля | detectKAZEFeatures | Да |
| БРИСК [6] | Угол | detectBRISKFeatures | Да |
| MSER [8] | Область с равномерной интенсивностью | detectMSERFeatures | Да |
| ORB [13] | Угол | detectORBFeatures | Нет |
Примечание
Функции обнаружения возвращают объекты, содержащие информацию об элементах. extractHOGFeatures и extractFeatures Эти объекты используются функциями для создания дескрипторов.
Выбор метода дескриптора
| Описатель | Набор из двух предметов | Функция и метод | Постоянство | Типичное использование | ||
|---|---|---|---|---|---|---|
| Масштаб | Вращение | Соответствие точек поиска | Классификация | |||
| БОРОВ | Нет | extractHOGFeatures(I, ...) | Нет | Нет | Нет | Да |
| LBP | Нет | extractLBPFeatures(I, ...) | Нет | Да | Нет | Да |
| ПРИБОЙ | Нет | extractFeatures(I,points,'Method','SURF') | Да | Да | Да | Да |
| KAZE | Нет | extractFeatures(I,points,'Method','KAZE') | Да | Да | Да | Да |
| ФРИК | Да | extractFeatures(I,points,'Method','FREAK') | Да | Да | Да | Нет |
| ОЖИВЛЕННЫЙ | Да | extractFeatures(I,points,'Method','BRISK') | Да | Да | Да | Нет |
| ШАР | Да | extractFeatures(I,points,'Method','ORB') | Нет | Да | Да | Нет |
| Нет | extractFeatures(I,points,'Method','Block') | Нет | Нет | Да | Да |
Примечание
extractFeatures функция предоставляет различные методы извлечения для наилучшего соответствия требованиям приложения. Если не указать 'Method' входные данные для extractFeatures функция автоматически выбирает метод на основе типа класса входных точек.
Двоичные дескрипторы являются быстрыми, но менее точными с точки зрения локализации. Они не подходят для задач классификации. extractFeatures функция возвращает binaryFeatures объект. Этот объект включает метрику соответствия на основе расстояния Хэмминга, используемую в matchFeatures функция.
Регистрация двух изображений - это простой способ понять локальные особенности. В этом примере показано геометрическое преобразование между двумя изображениями. Для поиска хорошо локализованных опорных точек используются локальные элементы.
Отображение двух изображений
Первое изображение является исходным.
original = imread('cameraman.tif');
figure;
imshow(original);
Второе изображение - это исходное изображение, повернутое и масштабированное.
scale = 1.3; J = imresize(original,scale); theta = 31; distorted = imrotate(J,theta); figure imshow(distorted)

Обнаружение совпадающих элементов между исходным и искаженным изображением
Обнаружение соответствующих элементов SURF является первым шагом в определении преобразования, необходимого для коррекции искаженного изображения.
ptsOriginal = detectSURFFeatures(original); ptsDistorted = detectSURFFeatures(distorted);
Извлеките элементы и сравните обнаруженные блобы между двумя изображениями
На этапе обнаружения обнаружено несколько примерно соответствующих структур больших двоичных объектов в обоих изображениях. Сравните обнаруженные функции больших двоичных объектов. Этому процессу способствует извлечение элементов, которое определяет локальный дескриптор исправления.
[featuresOriginal,validPtsOriginal] = ... extractFeatures(original,ptsOriginal); [featuresDistorted,validPtsDistorted] = ... extractFeatures(distorted,ptsDistorted);
Возможно, что не все исходные точки использовались для извлечения дескрипторов. Точки могли быть отклонены, если они находились слишком близко к границе изображения. Поэтому в дополнение к дескрипторам функций возвращаются допустимые точки.
Размер исправления, используемый для вычисления дескрипторов, определяется на этапе извлечения признаков. Размер сегмента соответствует масштабу, при котором обнаруживается функция. Независимо от размера фрагмента, два вектора элементов, featuresOriginal и featuresDistorted, вычисляются таким образом, что они имеют одинаковую длину. Дескрипторы позволяют сравнивать обнаруженные элементы независимо от их размера и поворота.
Найти совпадения кандидатов
Получение совпадений кандидатов между элементами путем ввода дескрипторов в matchFeatures функция. Совпадения кандидатов подразумевают, что результаты могут содержать недопустимые совпадения. Два совпадающих исправления могут указывать на такие же элементы, но могут быть неверными. Угол стола может выглядеть как угол стула, но эти две особенности, очевидно, не совпадают.
indexPairs = matchFeatures(featuresOriginal,featuresDistorted);
Поиск расположений точек на обоих изображениях
Каждая строка возвращаемого indexPairs содержит два индекса совпадений признаков-кандидатов между изображениями. Используйте индексы для сбора фактических местоположений точек из обоих изображений.
matchedOriginal = validPtsOriginal(indexPairs(:,1)); matchedDistorted = validPtsDistorted(indexPairs(:,2));
Просмотр совпадений кандидатов
figure
showMatchedFeatures(original,distorted,matchedOriginal,matchedDistorted)
title('Candidate matched points (including outliers)')
Анализ расположений элементов
При наличии достаточного количества допустимых совпадений удалите ложные совпадения. Эффективным методом для этого сценария является алгоритм RANSAC. estimateGeometricTransform2D функция реализует консенсус выборки M-оценщика (MSAC), который является вариантом алгоритма RANSAC. MSAC находит геометрическое преобразование и отделяет inliers (правильные совпадения) от outliers (ложные совпадения).
[tform, inlierIdx] = estimateGeometricTransform2D( ... matchedDistorted, matchedOriginal,'similarity'); inlierDistorted = matchedDistorted(inlierIdx, :); inlierOriginal = matchedOriginal(inlierIdx, :);
Отображение точек соответствия
figure showMatchedFeatures(original,distorted,inlierOriginal,inlierDistorted) title('Matching points (inliers only)') legend('ptsOriginal','ptsDistorted')

Проверка вычисленного геометрического преобразования
Применение вычисленного геометрического преобразования к искаженному изображению.
outputView = imref2d(size(original));
recovered = imwarp(distorted,tform,'OutputView',outputView);Отображение восстановленного изображения и исходного изображения.
figure
imshowpair(original,recovered,'montage')
Этот пример основан на результатах примера «Использование локальных элементов». Использование нескольких детекторов и пары дескрипторов позволяет комбинировать и усиливать результаты. Несколько пар также полезны в тех случаях, когда невозможно получить достаточно хороших совпадений (inliers) с помощью одного детектора элементов.
Загрузите исходное изображение.
original = imread('cameraman.tif'); figure; imshow(original); text(size(original,2),size(original,1)+15, ... 'Image courtesy of Massachusetts Institute of Technology', ... 'FontSize',7,'HorizontalAlignment','right');

Масштабирование и поворот исходного изображения для создания искаженного изображения.
scale = 1.3; J = imresize(original, scale); theta = 31; distorted = imrotate(J,theta); figure imshow(distorted)

Определите функции на обоих изображениях. Сначала используйте детекторы BRISK, а затем детекторы SURF.
ptsOriginalBRISK = detectBRISKFeatures(original,'MinContrast',0.01); ptsDistortedBRISK = detectBRISKFeatures(distorted,'MinContrast',0.01); ptsOriginalSURF = detectSURFFeatures(original); ptsDistortedSURF = detectSURFFeatures(distorted);
Извлеките дескрипторы из исходных и искаженных изображений. Функции BRISK по умолчанию используют дескриптор FREAK.
[featuresOriginalFREAK,validPtsOriginalBRISK] = ... extractFeatures(original,ptsOriginalBRISK); [featuresDistortedFREAK,validPtsDistortedBRISK] = ... extractFeatures(distorted,ptsDistortedBRISK); [featuresOriginalSURF,validPtsOriginalSURF] = ... extractFeatures(original,ptsOriginalSURF); [featuresDistortedSURF,validPtsDistortedSURF] = ... extractFeatures(distorted,ptsDistortedSURF);
Определите совпадения кандидатов, сначала сопоставив дескрипторы FREAK, а затем дескрипторы SURF. Чтобы получить как можно больше совпадений элементов, начните с детектора и соответствующих пороговых значений, которые ниже значений по умолчанию. Получив рабочее решение, можно постепенно увеличить пороговые значения, чтобы уменьшить вычислительную нагрузку, необходимую для извлечения и сопоставления элементов.
indexPairsBRISK = matchFeatures(featuresOriginalFREAK,... featuresDistortedFREAK,'MatchThreshold',40,'MaxRatio',0.8); indexPairsSURF = matchFeatures(featuresOriginalSURF,featuresDistortedSURF);
Получение подходящих точек для BRISK и SURF.
matchedOriginalBRISK = validPtsOriginalBRISK(indexPairsBRISK(:,1)); matchedDistortedBRISK = validPtsDistortedBRISK(indexPairsBRISK(:,2)); matchedOriginalSURF = validPtsOriginalSURF(indexPairsSURF(:,1)); matchedDistortedSURF = validPtsDistortedSURF(indexPairsSURF(:,2));
Визуализация предполагаемых совпадений BRISK.
figure showMatchedFeatures(original,distorted,matchedOriginalBRISK,... matchedDistortedBRISK) title('Putative matches using BRISK & FREAK') legend('ptsOriginalBRISK','ptsDistortedBRISK')

Объединение подходящих локальных элементов BRISK и SURF. Используйте Location для объединения расположений точек из элементов BRISK и SURF.
matchedOriginalXY = ... [matchedOriginalSURF.Location; matchedOriginalBRISK.Location]; matchedDistortedXY = ... [matchedDistortedSURF.Location; matchedDistortedBRISK.Location];
Определите внутренние точки и геометрическое преобразование элементов BRISK и SURF.
[tformTotal,inlierIdx] = ... estimateGeometricTransform2D(matchedDistortedXY,... matchedOriginalXY,'similarity'); inlierDistortedXY = matchedDistortedXY(inlierIdx, :); inlierOriginalXY = matchedOriginalXY(inlierIdx, :);
Просмотрите результаты. Результат обеспечивает несколько больше совпадений, чем пример, в котором использовался один детектор признаков.
figure showMatchedFeatures(original,distorted,inlierOriginalXY,inlierDistortedXY) title('Matching points using SURF and BRISK (inliers only)') legend('ptsOriginal','ptsDistorted')

Сравните исходное и восстановленное изображение.
outputView = imref2d(size(original)); recovered = imwarp(distorted,tformTotal,'OutputView',outputView); figure; imshowpair(original,recovered,'montage')

[1] Ростен, Э. и Т. Драммонд. 9-я Европейская конференция по компьютерному зрению. Том 1, 2006, стр. 430-443.
[2] Миколайчик, К. и С. Шмид. «Оценка производительности локальных дескрипторов». Транзакции IEEE по анализу шаблонов и машинному интеллекту. Том 27, выпуск 10, 2005, стр. 1615-1630.
[3] Харрис, C. и М. Дж. Стивенс. «Комбинированный детектор углов и кромок». Материалы четвертой конференции Alvey Vision. 1988 августа, с. 147-152.
[4] Ши, J. и К. Томэзи. «Хорошие возможности для отслеживания». Материалы Конференции IEEE по компьютерному зрению и распознаванию образов. июнь 1994 года, стр. 593-600.
[5] Туйтелаарс, Т. и К. Миколайчик. «Локальные детекторы инвариантных элементов: опрос». Основы и тенденции компьютерной графики и зрения. Том 3, выпуск 3, 2007, стр. 177-280.
[6] Лейтенеггер, С., М. Чли и Р. Зигварт. «BRISK: бинарные инвариантные масштабируемые ключевые точки». Материалы Международной конференции IEEE. ICCV, 2011.
[7] Нистер, Д. и Х. Стюениус. 10-я Европейская конференция по компьютерному зрению. Марсель, Франция: 2008, № 5303, стр. 183-196.
[8] Матас, Дж., О. Чум, М. Урба и Т. Пайдла. «Надежное стерео с широким исходным уровнем из максимально стабильных экстремальных областей». Труды британской конференции Machine Vision. 2002, стр 384–396.
[9] Обдрзалек Д., С. Басовник, Л. Мач, А. Микулик. «Обнаружение элементов сцены с использованием максимально стабильных цветовых областей». La Ferte-Bernard, Франция: 2009, том 82 CCIS (2010 12 01), стр. 107-115.
[10] Миколайчик, К., Т. Туйтелаарс, К. Шмид, А. Зиссерман, Т. Кадир и Л. Ван Гул. "Сравнение Affine Region Detectors. "Международный журнал компьютерного зрения. т. 65, № 1-2, ноябрь 2005, с. 43-72.
[11] Бэй, Х., А. Эсс, Т. Туйтелаарс и Л. Ван Гул. «SURF: повышение надежности функций». Компьютерное зрение и понимание изображений (CVIU). т. 110, № 3, 2008, стр. 346-359.
[12] Алькантарилла, П. Ф., А. Бартоли и А. Дж. Дэвисон. «Особенности KAZE», ECCV 2012, Часть VI, LNCS 7577 pp. 214, 2012
[13] Рублее, Э., В. Рабо, К. Конолиге и Г. Брадски. «ORB: Эффективная альтернатива SIFT или SURF». В материалах Международной конференции по компьютерному зрению 2011 года, 2564-2571. Барселона, Испания, 2011.