2009-03-05 3 views
25

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

Возьмите эту веб-страницу, например http://tineye.com/ Вы даете ссылку или загружаете изображение, и оно находит похожие изображения. Я сомневаюсь, что он сравнивает изображение, о котором идет речь, против всех (или, может быть, и так).

Вычислить Я имею в виду то, что Levenshtein_distance или Hamming distance для строк.

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

+0

Это классный сайт ... Как вы думаете, он может использовать кроме того, соответствующие имена файлов? Это может помочь ... – alex

+0

Забавный: http://tineye.com/search/789b9c5d3a71fe1609725c8fab0597a825258463 – OscarRyz

+0

productOverview, действительно выглядит как stackoverflow logo – OscarRyz

ответ

21

Самые простые меры будут подходы, основанные RMS-ошибок, например:

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

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

  • Много работы пошел в подходах с использованием dimensionality reduction (PCA, SVD, собственное значение анализа и т.д.), чтобы выбрать основные компоненты изображения и сравнить их по разным изображениям.

  • Другие подходы (в частности, медицинской визуализации) используют segmentation методы, чтобы выделить важные части изображений, то они сравнивают изображения, основанные на том, что нашли

  • Третьи пытались разработать меры подобия, которые получают вокруг некоторых из недостатки RMS-ошибки и PSNR. На мера spatial domain structural similarity (SSIM) была довольно крутая бумага, которая пытается имитировать восприятие людьми ошибки изображения вместо прямых математических выражений ошибки. Те же ребята сделали улучшенную версию с переводом/вращением, используя wavelet analysis в this paper on WSSIM.

  • Похоже, что TinEye использует векторы признаков со значениями для лотов атрибутов для их сравнения. Если вы охотиться на своем сайте, вы в конце концов добраться до Ideé Labs страницы, и their FAQ имеет некоторые (но не слишком много) особенности по алгоритму:

    Q: Как визуальный поиск?

    A: визуальная технология поиска Idee использует сложные алгоритмы для анализа сотен изображения атрибутов, таких как цвет, форма, текстура, светимость, сложности объектов и regions.These атрибуты образуют компактную цифровую подпись, которая описывает появление каждое изображение, и эти подписи рассчитываются и индексируются нашим программным обеспечением. При визуальном поиске эти подписи быстро сравниваются нашей поисковой системой, чтобы возвращать визуально похожие результаты.

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

1

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

1

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

0

Методы корреляции заставят матч выскочить. Если они JPEG, вы можете сравнить доминирующие коэффициенты для каждого блока 8x8 и получить достойное соответствие. Это не совсем корреляция, но она основана на косинусе transfore, так что это первый кузен.

5

Один из методов заключается в использовании color histograms. Вы можете использовать алгоритмы машинного обучения для поиска похожих изображений на основе представленного вами представления. Например, обычно используется k-means algorithm. Я видел другие решения, пытающиеся проанализировать вертикальные и горизонтальные линии на изображении после использования edge detection. Texture analysis также используется.

Недавний paper Сгруппированные изображения из сети picasa. Вы также можете попробовать clustering algorithm, над которым я работаю.

4

Рассмотрите возможность использования lossy wavelet compression и сравните наивысшие элементы релевантности изображений.

+0

Я проделал определенную работу, используя только эту технику, и получил хорошие результаты (хотя и недостаточно хорош для финансирования полного проекта разработки). –

1

вот какой код я написал, 4 года назад в java yikes, который выполняет сравнение изображений с использованием гистограмм. не смотрят на любой его части, кроме buildHistograms()

https://jpicsort.dev.java.net/source/browse/jpicsort/ImageComparator.java?rev=1.7& зрения = разметки

может быть, его полезно, по крайней мере, если вы используете Java

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