exponenta event banner

Обнаружение и извлечение локальных элементов

Локальные особенности и их дескрипторы, которые являются компактными векторными представлениями локального окружения, являются строительными блоками многих алгоритмов компьютерного зрения. Их приложения включают регистрацию изображения, обнаружение и классификацию объектов, отслеживание и оценку движения. Использование локальных функций позволяет этим алгоритмам лучше обрабатывать изменения масштаба, вращение и окклюзию. В Toolbox™ Computer Vision предусмотрены методы FAST, Harris, ORB и Shi & Tomasi для обнаружения элементов угла, а также методы SURF, KAZE и MSER для обнаружения элементов больших двоичных объектов. Панель инструментов включает дескрипторы SURF, KAZE, FREAK, BRISK, ORB и HOG. Можно смешивать и сопоставлять детекторы и дескрипторы в зависимости от требований приложения.

Что такое локальные функции?

Локальные элементы относятся к узору или отдельной структуре, обнаруженной в изображении, такой как точка, кромка или небольшой фрагмент изображения. Обычно они связаны с фрагментом изображения, который отличается от его непосредственного окружения текстурой, цветом или интенсивностью. То, что эта особенность на самом деле представляет, не имеет значения, только то, что она отличается от своего окружения. Примерами локальных элементов являются блобы, углы и краевые пикселы.

Пример 1. Пример обнаружения углов
I = imread('circuit.tif');
corners = detectFASTFeatures(I,'MinContrast',0.1);
J = insertMarker(I,corners,'circle');
imshow(J)

Преимущества и применение локальных функций

Локальные функции позволяют находить соответствия изображений независимо от окклюзии, изменения условий просмотра или наличия загромождений. Кроме того, свойства локальных признаков делают их пригодными для классификации изображений, например в «Классификации изображений с сумкой визуальных слов».

Локальные особенности используются двумя фундаментальными способами:

  • Локализация опорных точек для использования при сшивании изображения или реконструкции 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);

Figure contains an axes. The axes contains an object of type image.

Второе изображение - это исходное изображение, повернутое и масштабированное.

scale = 1.3;
J = imresize(original,scale);
theta = 31;
distorted = imrotate(J,theta);
figure
imshow(distorted)

Figure contains an axes. The axes contains an object of type image.

Обнаружение совпадающих элементов между исходным и искаженным изображением

Обнаружение соответствующих элементов 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)')

Figure contains an axes. The axes with title Candidate matched points (including outliers) contains 4 objects of type image, line.

Анализ расположений элементов

При наличии достаточного количества допустимых совпадений удалите ложные совпадения. Эффективным методом для этого сценария является алгоритм 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')

Figure contains an axes. The axes with title Matching points (inliers only) contains 4 objects of type image, line. These objects represent ptsOriginal, ptsDistorted.

Проверка вычисленного геометрического преобразования

Применение вычисленного геометрического преобразования к искаженному изображению.

outputView = imref2d(size(original));
recovered  = imwarp(distorted,tform,'OutputView',outputView);

Отображение восстановленного изображения и исходного изображения.

figure
imshowpair(original,recovered,'montage')

Figure contains an axes. The axes contains an object of type image.

Регистрация изображения с использованием нескольких функций

Этот пример основан на результатах примера «Использование локальных элементов». Использование нескольких детекторов и пары дескрипторов позволяет комбинировать и усиливать результаты. Несколько пар также полезны в тех случаях, когда невозможно получить достаточно хороших совпадений (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');

Figure contains an axes. The axes contains 2 objects of type image, text.

Масштабирование и поворот исходного изображения для создания искаженного изображения.

scale = 1.3;
J = imresize(original, scale);
 
theta = 31;
distorted = imrotate(J,theta);
figure
imshow(distorted)

Figure contains an axes. The axes contains an object of type image.

Определите функции на обоих изображениях. Сначала используйте детекторы 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')

Figure contains an axes. The axes with title Putative matches using BRISK & FREAK contains 4 objects of type image, line. These objects represent 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')

Figure contains an axes. The axes with title Matching points using SURF and BRISK (inliers only) contains 4 objects of type image, line. These objects represent ptsOriginal, ptsDistorted.

Сравните исходное и восстановленное изображение.

outputView = imref2d(size(original));
recovered  = imwarp(distorted,tformTotal,'OutputView',outputView);
 
figure;
imshowpair(original,recovered,'montage')

Figure contains an axes. The axes contains an object of type image.

Ссылки

[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.

Связанные темы