3

Как мы знаем в Matlab, существует функция обнаружения функции Harris или SURF по отдельности. Затем мне нужно объединить эти два списка функций от Harris и SURF, чтобы сделать сопоставление более эффективным.Как совместить точки SURF и Harris MATLAB

следующее процедура по умолчанию, что мы знаем

points_image_Harris =detectHarrisFeatures(image); 
[feature_image_Harris, validpoints_image_Harris] = extractFeatures(image, points_image_Harris); 
indexPairs_Harris = matchFeatures(feature_template_Harris,feature_image_Harris); 

, но я хочу, чтобы объединить два списка точек перед сопоставлением макияж: что-то вроде этого:

points_image_Harris =detectHarrisFeatures(image); 
points_image_SURF =detectSURFFeatures(image); 
Points = points_image_Harris + points_image_SURF 

затем использовать список точек для извлечение объектов и их соответствие. Как это сделать? если они имеют два разных типа? угловые точки и SURFPoints!

мне нужны обе функции, полученные от обоих SURF и Харрис, как следующий вывод:

enter image description here

Я не знаю, если комбинация возможна или любая идея, чтобы получить обе функции сопоставления с обоих.

На самом деле я хочу обнаружить эти функции, затем хочу получить расположение этих пикселей из кадров и затем рассчитать разницу между положением X и Y.

Также я не знаю, как получить координаты позиции объектов от SURF & Harris matching ??

+0

Если вы хотите совместить физические местоположения точек элементов, это прямо. Если вы хотите объединить оба контейнера 'cornerPoints' и' SURFPoints' вместе, вы не сможете этого сделать. Они оба описывают точки функции совершенно по-разному, и поэтому, если вы хотите объединить их обоих, вы помещаете разные вещи в один контейнер. Это невозможно. Пожалуйста, будьте более конкретными в том, как вы хотите их комбинировать. Вам просто нужны только физические точки или вы хотите объединить дескрипторы? – rayryeng

+0

@rayryeng, Пожалуйста, вы снова можете увидеть вопрос, я его отредактировал. –

+0

Насколько я понимаю, вы хотите найти наиболее похожие точки между обеими схемами? В этом случае вам не нужно объединять их вообще. Кроме того, можно получить только координаты самих функций для обеих фреймворков ... однако, это все еще немного запутанно. Сначала вы говорите, что хотите объединить функции ... и в конце сообщения вы говорите, что просто хотите извлечь координаты объектов. Который из них? – rayryeng

ответ

3

detectHarrisFeatures Использования и detectSURFFeatures существу возвращает структуру , где каждое поле содержит соответствующую информацию о процентных пунктах, которые обнаруживаются в изображении. Чтобы дать воспроизводимый пример, давайте использовать изображение cameraman.tif, которое является частью панели инструментов обработки изображений. Давайте также использовать обе функции рамки обнаружения с параметрами по умолчанию:

>> im = imread('cameraman.tif'); 
>> harrisPoints = detectHarrisFeatures(im); 
>> surfPoints = detectSURFFeatures(im); 

Когда мы выводим harrisPoints, это то, что мы получаем:

harrisPoints = 

    184x1 cornerPoints array with properties: 

    Location: [184x2 single] 
     Metric: [184x1 single] 
     Count: 184 

Когда мы выводим surfPoints, это то, что мы получаем:

surfPoints = 

    180x1 SURFPoints array with properties: 

       Scale: [180x1 single] 
    SignOfLaplacian: [180x1 int8] 
     Orientation: [180x1 single] 
      Location: [180x2 single] 
      Metric: [180x1 single] 
       Count: 180 

Как таковые, у harrisPoints и surfPoints есть поле под названием Location, которое содержит sp Atial координаты функций, которые вы хотите. Это будет матрица N x 2, где каждая строка дает вам местоположение точки объекта. Первая колонка - x или горизонтальная координата, а вторая колонка - y или вертикальная координата. Происхождение находится в верхнем левом углу изображения, а координата y положительна при движении вниз.

Поэтому, если вы хотите, чтобы объединить оба характерных точек вместе, доступ к Location поле обоих объектов и объединить их вместе в одну матрицу:

>> Points = [harrisPoints.Location; surfPoints.Location]; 

Points теперь должен содержать матрицу, где каждая строка дает вам особенность.


Я хотел бы сделать небольшую заметку о том, что детектор угла Гарриса является всего лишь алгоритмом обнаружения точки интереса. Все, что вам дано, это местоположение интересных точек на изображении. SURF - это и определение, и описание framework, где вы получаете не только очки с процентами, но также получаете хорошее надежное описание каждой точки интереса, которую вы можете использовать для выполнения сопоставления между другими интересными точками на других изображениях. Поэтому, если вы хотите объединить оба Harris и SURF вместе, это невозможно, потому что Харрис не поддерживает описание процентных очков.

+0

Спасибо, , но я не получил 1, как они соответствуют функции, зависят от точек местоположения. 2- какие отличия между описанием и Харрисом? –

+0

@ Ханаа - Я не уверен, что сопоставление Харриса выполняется в CVT MATLAB, но я подозреваю, что они смотрят на патчи интенсивности, которые окружают заданную точку интереса, и находят расстояние между патчами. Для вашего второго вопроса SURF описывает ключевые точки, используя гистограмму размером 128 бит, описывающую ориентацию и масштаб. Харрис дает только то, что пространственное расположение объектов. SURF не только дает вам пространственные местоположения, но также дает вам 128-битную гистограмму, которая ** описывает ** каждую точку поверх пространственного местоположения. Вместо этого гистограмма используется для сопоставления точек. – rayryeng

1

Это не очень хорошая идея объединить точки, возвращенные различными детекторами, прежде чем согласовать их. Лучше сопоставлять дескрипторы, извлеченные из разных точек интереса отдельно, а затем объединять согласованные точки. В противном случае вы будете сравнивать яблоки и апельсины.

Подумайте об этом так: Харрис обнаруживает углы, в то время как SURF обнаруживает центры капель. Угол Харриса и ключевая точка SURF вряд ли соответствуют одной и той же физической точке в мире. Поэтому имеет смысл сопоставлять эти моменты отдельно.

Смежные вопросы