Как я могу измерить подобие между двумя изображениями? [закрытый]

в одной строке:

FOR /F "tokens=*" %g IN ('*your command*') do (SET VAR=%g)

выход команды будет установлен в% g, затем в VAR.

Дополнительная информация: https: // ss64. com / nt / for_cmd.html

89
задан Luke Quinane 26 August 2009 в 00:49
поделиться

11 ответов

Это зависит полностью от того, как умный Вы хотите, чтобы алгоритм был.

, Например, вот некоторые проблемы:

  • кадрированные изображения по сравнению с необрезанным изображением
  • изображения с текстом, добавленным по сравнению с другим без
  • зеркальные изображения

самое легкое и самое простое алгоритм , я видел, это должно только сделать следующие шаги к каждому изображению:

  1. масштаб к чему-то маленькому, как 64x64 или 32x32, игнорирует соотношение сторон, использует алгоритм масштабирования объединения вместо самого близкого пикселя
  2. , масштабируют цветовые диапазоны так, чтобы самый темный был черным, и самый легкий белый
  3. , поворачивают и зеркально отражают изображение так, чтобы самый легкий цвет был верхним левым, и затем верхний правый является затем более темным, нижний левый является затем более темным (в максимально возможной степени, конечно)

Редактирование А , алгоритм масштабирования объединения является тем, что при уменьшении масштаба 10 пикселей до каждый сделает это с помощью функции, которая подражает всех тех 10 пикселей и комбинирует их в одного. Может быть сделан с алгоритмами как усреднение, среднее значение или более сложные как шлицы bicubic.

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

Для поиска возможного соответствия в базе данных сохраните пиксельные цвета как отдельные столбцы в базе данных, индексируйте набор их (но не все, если Вы не используете очень маленькое изображение), и сделайте запрос, который использует диапазон для каждого пиксельного значения, т.е. каждое изображение, где пиксель в маленьком изображении между-5 и +5 из изображения, Вы хотите искать.

Это легко реализовать, и довольно быстро работать, но конечно не обработает самые усовершенствованные различия. Для этого Вам нужны намного более усовершенствованные алгоритмы.

68
ответ дан angry person 24 November 2019 в 07:16
поделиться

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

0
ответ дан Ross 24 November 2019 в 07:16
поделиться

Если это - что-то, что Вы будете делать на случайной основе и не нуждаетесь в автоматизации, можно сделать это в редакторе изображений, который поддерживает слои, такие как Photoshop или Paint Shop Pro (вероятно, GIMP или Краска. Сеть также, но я не уверен в тех). Откройте оба снимка экрана и поместите тот как слой сверху другого. Измените режим наложения слоев на Различие и все, что это - то же между этими двумя, станет черным. Можно переместить верхний слой вокруг для уменьшения любых различий в выравнивании.

0
ответ дан Mark Ransom 24 November 2019 в 07:16
поделиться

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

Читать findimagedupes страницу, которую я любил, я вижу, что существует реализация C++ того же алгоритма . По-видимому, это будет легче понять.

И кажется, что можно также использовать gqview.

3
ответ дан dmckee 24 November 2019 в 07:16
поделиться

чтобы подробно остановиться на примечании Vaibhav, , обнимающий является 'автосшивальщиком' с открытым исходным кодом, который должен иметь некоторое понимание на проблеме.

2
ответ дан hometoast 24 November 2019 в 07:16
поделиться

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

8
ответ дан Konrad Rudolph 24 November 2019 в 07:16
поделиться

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

интересно, есть ли у них какие-либо доступные библиотеки или фрагменты кода на их блоге.

2
ответ дан Vaibhav 24 November 2019 в 07:16
поделиться

Алгоритмам кодирования разве видео не нравится MPEG, вычисляют различие между каждым кадром видео, таким образом, они могут просто закодировать дельту? Вы могли бы изучить, как алгоритмы кодирования видео вычисляют те различия в кадре.

Взгляд на это поисковое приложение изображения с открытым исходным кодом http://www.semanticmetadata.net/lire/ . Это описывает несколько подобий изображения algorighms, три из которых из стандарта MPEG-7: ScalableColor, ColorLayout, EdgeHistogram и Автоматическая Цветная Коррелограмма.

14
ответ дан Mark B 24 November 2019 в 07:16
поделиться

Используйте нормализованную цветную гистограмму. (Считайте раздел по приложениям здесь ), они являются наиболее часто используемыми в системах извлечения/соответствия изображения и являются стандартным способом соответствовать изображениям, который очень надежен, относительно быстр и очень легок реализовать.

По существу цветная гистограмма получит цветное распределение изображения. Это может тогда быть по сравнению с другим изображением, чтобы видеть, соответствуют ли цветные дистрибутивы.

Этот тип соответствия довольно эластичен к масштабированию (как только гистограмма нормализована), и вращение/смещение/перемещение и т.д.

Избегает попиксельных сравнений, как будто изображение вращается/смещается немного, это может привести к значительным различиям, о которых сообщают.

Гистограммы были бы просты для генерации себя (предположение, что можно получить доступ к пиксельным значениям), но если Вы не чувствуете себя подобно ему, , библиотека OpenCV является большим ресурсом для того, чтобы сделать этот вид материала. Здесь презентация PowerPoint, которая показывает Вам, как создать использование гистограммы OpenCV.

25
ответ дан Lehane 24 November 2019 в 07:16
поделиться

Интересно (и я действительно просто бросаю идею там, чтобы быть подстреленным), если что-то могло бы быть получено путем вычитания одного изображения из другого, и затем сжатия получающегося изображения как jpeg gif и взятия размера файла в качестве меры подобия.

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

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

4
ответ дан Matt Sheppard 24 November 2019 в 07:16
поделиться

'Классический' способ измерить это состоит в том, чтобы разбиться, изображение в некоторое каноническое количество разделов (скажите 10x10 сетка), и затем вычисление гистограммы значений RGB в каждой ячейке, и сравните соответствующие гистограммы. Этот тип алгоритма предпочтен и из-за его простоты, и это - инвариантность к масштабированию и (маленький!) перевод.

31
ответ дан Louis Brandy 24 November 2019 в 07:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: