2008-09-16 4 views
69

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

Я посмотрел на совпадение, основанное на hausdorff, но, похоже, в основном для сопоставления преобразованных объектов и шаблонов формы.

+0

Есть некоторые хорошие ответы в этом другом аналогичном вопросе: http://stackoverflow.com/questions/25977/how-can-i-measure-the-similarity-between-two-images – blak 2012-07-02 20:17:21

+0

много «cans» и «mights». Кто-нибудь пробовал все эти предложения и знал, что лучше? – 2013-01-27 04:01:52

+0

Прошло некоторое время с тех пор, как я увидел компьютерное зрение, но вы можете посмотреть Matlab, там есть хорошие функции для анализа изображений, а затем сравнения сходства полученных матриц на основе различных показателей для вашего сравнения. – Mason 2008-09-16 19:30:43

ответ

53

Я сделал что-то подобное, разложив изображения в подписи, используя wavelet transform.

Мой подход состоял в том, чтобы выбрать наиболее значимые коэффициенты от каждого преобразованного канала и записать их местоположение. Это было сделано путем сортировки списка кортежей (питания, местоположения) в соответствии с абс (мощность). Аналогичные изображения будут иметь сходство в том, что они будут иметь значительные коэффициенты в тех же местах.

Я нашел, что лучше всего преобразовать изображение в формат YUV, что позволяет эффективно подобрать сходство по форме (Y-канал) и цвет (УФ-каналы).

Вы можете в найти свою реализацию выше в mactorii, который, к сожалению, я не работал на столько, сколько я должен иметь :-)

Другой метод, который некоторые из моих друзей использовали с удивительно Хорошие результаты - просто изменить размер изображения, чтобы сказать, что пиксель 4x4 и магазин, которые являются вашей подписью. Как аналогичные 2 изображения могут быть оценены, скажем, вычисляя Manhattan distance между двумя изображениями, используя соответствующие пиксели. У меня нет деталей того, как они выполняли изменение размера, поэтому вам, возможно, придется играть с различными алгоритмами, доступными для этой задачи, чтобы найти подходящую.

+6

Метод изменения размера до 4x4 - это потрясающая идея (не то чтобы ваш метод тоже невелик), но первый проще. – 2009-10-23 20:39:57

1

Вы можете выполнить какое-то сопоставление движения блоков между двумя изображениями и измерить общую сумму остатков и расходов вектора движения (как и в видеокодере). Это компенсировало бы движение; для бонусных очков, делать оценку движения аффинной трансформации (компенсирует масштабирование и растяжение и тому подобное). Вы также можете выполнять перекрывающиеся блоки или оптический поток.

4

Вы можете использовать Perceptual Image Diff

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

1

В качестве первого прохода вы можете попробовать использовать цветные гистограммы. Однако вам действительно необходимо сузить область проблем. Совпадение общего изображения - очень сложная проблема.

4

Это сложная проблема! Это зависит от того, насколько точно вы должны быть, и это зависит от того, с какими изображениями вы работаете. Вы можете использовать гистограммы для сравнения цветов, но это, очевидно, не учитывает пространственное распределение этих цветов внутри изображений (т. Е. Фигуры). Обнаружение края, за которым следует некоторая сегментация (т. Е. Выбор фигур), может обеспечить шаблон для сопоставления с другим изображением. Вы можете использовать матрицы coocurence для сравнения текстур, рассматривая изображения как матрицы значений пикселей и сравнивая эти матрицы. Есть несколько хороших книг, которые можно найти на изображении и машинное видение. Поиск на Amazon найдет.

Надеюсь, это поможет!

0

В этой теме есть несколько хороших ответов, но мне интересно, будет ли что-то, связанное с спектральным анализом? I.e., разорвать изображение до его фазовой и амплитудной информации и сравнить их. Это может избежать некоторых проблем с различиями в обрезке, трансформации и интенсивности. Во всяком случае, это только я размышляю, так как это кажется интересной проблемой. Если вы искали http://scholar.google.com, я уверен, вы могли бы придумать несколько статей по этому вопросу.

+0

Спектральный анализ - это wth Fourier Transform, нет цветовой гистограммы, так как вы можете восстановить изображение из двух частей - интеллектуального и реального. (не знаю, будет ли это работать, просто сообщив, что это не в той категории). – nlucaroni 2008-09-16 19:35:21

+0

Да, преобразование Фурье - это то, что я имел в виду. – dbrien 2008-09-16 20:59:52

2

Это звучит как проблема видения. Возможно, вы захотите изучить Adaptive Boosting, а также алгоритм извлечения Burns Line. Понятия в этих двух должны помочь с приближением этой проблемы. Обнаружение края - еще более простое место для начала, если вы новичок в алгоритмах видения, поскольку это объясняет основы.

Что касается параметров категоризации:

  • Цветовая палитра & Location (Gradient расчета, гистограммы цветов)
  • Содержится фигуры (Ada Активизации/Обучение для выявления формы.)
2

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

Для анализа квадратов вы можете, например, получить сумму значений цвета.

3

Некоторые программные решения для распознавания образов на самом деле не основаны на алгоритмах, а используют вместо них концепцию нейронной сети . Отъезд http://en.wikipedia.org/wiki/Artificial_neural_network, а именно NeuronDotNet, который также включает интересные образцы: http://neurondotnet.freehostia.com/index.html

+1

neurondotnet.freehostia.com ссылка мертва – 2017-05-06 00:53:38

3

Там связано исследование с использованием Кохонена нейронных сетей/самоорганизующейся карты

и более академических систем (Google для PicSOM) или менее академический
(http://www.generation5.org/content/2004/aiSomPic.asp, (возможно, не подходит для всех рабочих окружающих сред)) существуют презентации ,

11

Я использовал SIFT для повторного обнаружения того же объекта в разных изображениях. Это действительно мощная, но довольно сложная и может быть излишней. Если изображения должны быть похожими, некоторые простые параметры, основанные на различии между двумя изображениями, могут вам немного рассказать. Некоторые указатели:

  • нормализуют изображения, то есть сделать средняя яркость обоих изображений та же путем вычисления средней яркости как и масштабирование ярчайших вниз в зависимости от рациона (чтобы избежать отсечения на самом высоком уровне)) особенно если вы больше заинтересованы в форме, чем в цвете.
  • Сумма разницы в цвете по нормализованному изображению на канал.
  • найти края изображений и измерить расстояние между пикселями края на обоих изображениях. (для формы)
  • Разделите изображения в наборе дискретных областей и сравните средний цвет каждого региона.
  • Порог изображения на одном (или множестве) уровне (уровнях) и подсчет количества пикселей, где результирующие черно-белые изображения отличаются.
40

pHash может вас заинтересовать.

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

2

Вычисление суммы квадратов разностей значений цвета пикселя значительно уменьшенную версию (например: 6x6 пикселей) прекрасно работает. Идентичные изображения дают 0, похожие изображения дают небольшие числа, разные изображения дают большие.

Идея других ребят выше, чтобы проникнуть в ЮВ, сначала звучит интригующе - в то время как моя идея отлично работает, я хочу, чтобы мои изображения были рассчитаны как «разные», чтобы дать правильный результат - даже с точки зрения слепого наблюдателя ,

0

Извинения за участие в обсуждении.

Мы можем даже использовать методологию ORB для обнаружения похожих точек объектов между двумя изображениями. Следующая ссылка дает прямой реализации ORB в питона

http://scikit-image.org/docs/dev/auto_examples/plot_orb.html

Даже OpenCV получил непосредственную реализацию ОРБ. Если вам больше информации, следуйте приведенной ниже статье исследования.

https://www.researchgate.net/publication/292157133_Image_Matching_Using_SIFT_SURF_BRIEF_and_ORB_Performance_Comparison_for_Distorted_Images