2014-07-09 3 views
1

Я пытаюсь выполнить сортировку изображений.Сортировка изображения с помощью matlab

У меня 5 изображений, а первое - мое основное изображение. Я пытаюсь сортировать изображения в соответствии с их сходством (большинство похожих изображений с менее похожим изображением).

Matlab был matchfeature метод, но я не думаю, что я Jave использовал это правильно, потому что мои результаты wrong.I пытаются использовать:

[indexPairs,matchmetric] = matchFeatures(features1,features2,"MatchThreshold,10") 

тогда я пытаюсь отсортировать matchmetric array.But оно не работает

Может ли кто-нибудь сказать мне какой-нибудь алгоритм или какие-нибудь советы? Спасибо.

+0

'matchFeatures' работает только при вызове одного из алгоритмов обнаружения функций MATLAB:' MSER', 'SURF' и т. Д. Вы не можете использовать изображения в качестве прямого ввода в' matchFeatures'. Кроме того, входы являются ** характеристическими матрицами **. См. Http://www.mathworks.com/help/vision/ref/matchfeatures.html и ознакомьтесь с их примерами, как правильно использовать это. Однако вы хотите найти сходство изображений, а не сходство с процентами. Предложение @ Benoit_11 может работать. – rayryeng

+0

Кстати, если вы делаете то, что, я думаю, вы делаете, это проблема ** поиска изображений **. Поиск в Google: поиск контента на основе контента. Вы пытаетесь найти изображения, похожие на изображение запроса. Существует много способов решить эту проблему, и это еще нерешенная проблема. – rayryeng

ответ

1

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

doc corr2 

Например, предположим, что вы храните все ваши изображения в массив ячеек (так называемый ImageCellArray), в котором первое изображение является «основной образ»:

for i = 2:size(ImageCellArray,2) % size(ImageCellArray,2) is the total # of images, i.e. the size of the cell array containing them. 

CorrCoeff(i) = corr2(rgb2gray(ImageCellArray{1}),rgb2gray(ImageCellArray{i})); 

end 

[values indices] = sort(CorrCoeff); % sort the coefficients and get the number of the corresponging image. 

Тогда вы хорошо пойдите, я думаю.

1

Вы можете вычислить PSNR (отношение пикового сигнала к шуму) для каждого изображения по сравнению с основным изображением. PSNR - это метрика, обычно используемая для измерения качества восстановленного сжатия по сравнению с исходным изображением.

Это implemented in Matlab в панели инструментов компьютерной системы видеонаблюдения в качестве функционального блока, а также есть набор инструментов psnrfunction. Результатом будет число в децибелах, которое вы могли бы использовать для ранжирования изображений. Более высокое значение PSNR указывает на большее сходство.

+0

Одно небольшое предостережение с этим методом. Предположим, что у вас есть изображение совершенно серого цвета, и вы хотели сравнить его с полностью белым изображением. Можно утверждать, что этот образ имеет много подобия. Это просто серое изображение, но его интенсивности сдвинуты на 128. Однако PSNR сообщит об этом как о очень низком значении, когда субъективно они должны быть похожими. Я не пробовал это проверять, но это то, что, я думаю, произойдет. – rayryeng

+0

Правда; полезность PSNR (или любой другой метрики) зависит от того, что OP означает по подобию. Если эти изображения должны быть минимально измененными представлениями одного и того же изображения, PSNR должен быть хорошим выбором. Если интересны более высокие функции, такие как однородность или предмет, то, вероятно, это не так. Кроме того, нормализация значений пикселей позаботится о конкретной проблеме, которую вы подняли, если что-то вроде равномерного смещения считается тривиальной разницей. –

+0

Определенно согласен с тобой там! Мы не знаем, какими типами изображений они являются - если они немного изменены версии изображения, или если они радикально отличаются друг от друга. Если они радикально отличаются друг от друга, это проблема поиска изображений и до сих пор остается нерешенной проблемой. Если есть немного измененные версии, PSNR должен работать нормально. Нормализация также должна помочь - возможно, стандартизация каждой интенсивности путем вычитания ее среднего значения и деления на стандартное отклонение. – rayryeng

0

Взгляните на этот пример image retrieval. Вместо сопоставления функций между парами изображений он использует KDTreeSearcher из панели инструментов статистики, чтобы найти ближайших соседей каждой функции из образа запроса по всему набору изображений базы данных.

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