в одной строке:
FOR /F "tokens=*" %g IN ('*your command*') do (SET VAR=%g)
выход команды будет установлен в% g, затем в VAR.
Дополнительная информация: https: // ss64. com / nt / for_cmd.html
Это зависит полностью от того, как умный Вы хотите, чтобы алгоритм был.
, Например, вот некоторые проблемы:
самое легкое и самое простое алгоритм , я видел, это должно только сделать следующие шаги к каждому изображению:
Редактирование А , алгоритм масштабирования объединения является тем, что при уменьшении масштаба 10 пикселей до каждый сделает это с помощью функции, которая подражает всех тех 10 пикселей и комбинирует их в одного. Может быть сделан с алгоритмами как усреднение, среднее значение или более сложные как шлицы bicubic.
Тогда вычисляют среднее расстояние попиксельно между двумя изображениями.
Для поиска возможного соответствия в базе данных сохраните пиксельные цвета как отдельные столбцы в базе данных, индексируйте набор их (но не все, если Вы не используете очень маленькое изображение), и сделайте запрос, который использует диапазон для каждого пиксельного значения, т.е. каждое изображение, где пиксель в маленьком изображении между-5 и +5 из изображения, Вы хотите искать.
Это легко реализовать, и довольно быстро работать, но конечно не обработает самые усовершенствованные различия. Для этого Вам нужны намного более усовершенствованные алгоритмы.
Хорошо действительно метод основного уровня для использования мог пройти каждый пиксель, окрашивают и сравнивают его с соответствующим пиксельным цветом на втором изображении - но это, вероятно, очень очень медленное решение.
Если это - что-то, что Вы будете делать на случайной основе и не нуждаетесь в автоматизации, можно сделать это в редакторе изображений, который поддерживает слои, такие как Photoshop или Paint Shop Pro (вероятно, GIMP или Краска. Сеть также, но я не уверен в тех). Откройте оба снимка экрана и поместите тот как слой сверху другого. Измените режим наложения слоев на Различие и все, что это - то же между этими двумя, станет черным. Можно переместить верхний слой вокруг для уменьшения любых различий в выравнивании.
Вы могли бы посмотреть на код для инструмента с открытым исходным кодом findimagedupes, хотя это, кажется, было записано в жемчуге, таким образом, я не могу сказать, как легкий это должно будет проанализировать...
Читать findimagedupes страницу, которую я любил, я вижу, что существует реализация C++ того же алгоритма . По-видимому, это будет легче понять.
И кажется, что можно также использовать gqview.
чтобы подробно остановиться на примечании Vaibhav, , обнимающий является 'автосшивальщиком' с открытым исходным кодом, который должен иметь некоторое понимание на проблеме.
Вам будет нужно распознавание образов для этого. Для определения небольших различий между двумя изображениями, сети Хопфилда работа довольно хорошо и довольно легки реализовать. Я не знаю доступных реализаций, все же.
Ну, для не ответа на вопрос непосредственно но я видел, что это происходит. Microsoft недавно запустила инструмент, названный PhotoSynth, который делает что-то очень похожее для определения зон перекрытия в большом количестве изображений (который мог иметь отношения другого аспекта).
интересно, есть ли у них какие-либо доступные библиотеки или фрагменты кода на их блоге.
Алгоритмам кодирования разве видео не нравится MPEG, вычисляют различие между каждым кадром видео, таким образом, они могут просто закодировать дельту? Вы могли бы изучить, как алгоритмы кодирования видео вычисляют те различия в кадре.
Взгляд на это поисковое приложение изображения с открытым исходным кодом http://www.semanticmetadata.net/lire/ . Это описывает несколько подобий изображения algorighms, три из которых из стандарта MPEG-7: ScalableColor, ColorLayout, EdgeHistogram и Автоматическая Цветная Коррелограмма.
Используйте нормализованную цветную гистограмму. (Считайте раздел по приложениям здесь ), они являются наиболее часто используемыми в системах извлечения/соответствия изображения и являются стандартным способом соответствовать изображениям, который очень надежен, относительно быстр и очень легок реализовать.
По существу цветная гистограмма получит цветное распределение изображения. Это может тогда быть по сравнению с другим изображением, чтобы видеть, соответствуют ли цветные дистрибутивы.
Этот тип соответствия довольно эластичен к масштабированию (как только гистограмма нормализована), и вращение/смещение/перемещение и т.д.
Избегает попиксельных сравнений, как будто изображение вращается/смещается немного, это может привести к значительным различиям, о которых сообщают.
Гистограммы были бы просты для генерации себя (предположение, что можно получить доступ к пиксельным значениям), но если Вы не чувствуете себя подобно ему, , библиотека OpenCV является большим ресурсом для того, чтобы сделать этот вид материала. Здесь презентация PowerPoint, которая показывает Вам, как создать использование гистограммы OpenCV.
Интересно (и я действительно просто бросаю идею там, чтобы быть подстреленным), если что-то могло бы быть получено путем вычитания одного изображения из другого, и затем сжатия получающегося изображения как jpeg gif и взятия размера файла в качестве меры подобия.
, Если бы у Вас было два идентичных изображения, Вы получили бы белое поле, которое сжалось бы действительно хорошо. Чем больше изображения отличались, тем более сложно это будет для представления, и следовательно менее сжимаемое.
, Вероятно, не идеальный тест, и вероятно намного медленнее, чем необходимый, но это могло бы работать быстрой и грязной реализацией.
'Классический' способ измерить это состоит в том, чтобы разбиться, изображение в некоторое каноническое количество разделов (скажите 10x10 сетка), и затем вычисление гистограммы значений RGB в каждой ячейке, и сравните соответствующие гистограммы. Этот тип алгоритма предпочтен и из-за его простоты, и это - инвариантность к масштабированию и (маленький!) перевод.