Подтвердить что ты не робот

Вычисление разницы между изображениями

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

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

Посредством вычисления я имею в виду то, что Levenshtein_distance или Хэмминг расстояние для строк.

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

4b9b3361

Ответ 1

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

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

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

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

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

  • Другие пытались придумать методы сходства, которые охватывают некоторые из недостатков RMS-ошибки и PSNR. Была довольно крутая статья о мерном пространственном доменном сходстве (SSIM), которая пытается имитировать восприятие людьми ошибки изображения вместо прямого, математические понятия ошибки. Те же ребята сделали улучшенную версию с переводом/вращением, используя вейвлет-анализ в этот документ на WSSIM.

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

    В: Как работает визуальный поиск?

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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