Это просто идеи, о которых я думал, никогда не пробовал, но мне нравится думать о таких проблемах!
Прежде чем вы начнете
Подумайте о нормализации изображений, если у одного разрешение выше, чем у другого, рассмотрите вариант, что одно из них является сжатой версией другого, поэтому уменьшение разрешения может дать более точные результаты.
Рассмотрите возможность сканирования различных предполагаемых областей изображения, которые могут представлять увеличенные части изображения и различные положения и повороты. Это становится сложно, если одно из изображений является искаженной версией другого, это те ограничения, которые вы должны определить и скомпрометировать.
Matlab - отличный инструмент для тестирования и оценки изображений.
Тестирование алгоритмов
Вы должны протестировать (как минимум) большой анализируемый человеком набор тестовых данных, где совпадения известны заранее. Если, например, в ваших тестовых данных у вас есть 1000 изображений, из которых 5% соответствуют, у вас теперь есть достаточно надежный тест. Алгоритм, который находит 10% позитивов, не так хорош, как алгоритм, который находит 4% позитивов в наших тестовых данных. Тем не менее, один алгоритм может найти все совпадения, но он также имеет большой 20% ложных срабатываний, поэтому есть несколько способов оценить ваши алгоритмы.
Тестовые данные должны быть направлены на то, чтобы охватить как можно больше типов динамики, которые вы ожидаете найти в реальном мире.
Важно отметить, что каждый полезный алгоритм должен работать лучше, чем случайное угадывание, иначе он бесполезен для нас!
Затем вы можете применять свое программное обеспечение в реальном мире контролируемым образом и начать анализировать результаты, которые оно дает. Это своего рода программный проект, который может продолжаться бесконечно, всегда есть какие-то настройки и улучшения, которые вы можете сделать, важно помнить об этом при разработке, так как легко попасть в ловушку бесконечного проекта.
Цветные ведра
С двумя картинками отсканируйте каждый пиксель и посчитайте цвета. Например, у вас могут быть «ведра»:
white
red
blue
green
black
(Очевидно, у вас будет более высокое разрешение счетчиков). Каждый раз, когда вы находите «красный» пиксель, вы увеличиваете красный счетчик. Каждое ведро может представлять спектр цветов, чем выше разрешение, тем точнее, но вы должны поэкспериментировать с приемлемой разницей.
Получив итоги, сравните их с итогами для второго изображения. Вы можете обнаружить, что каждое изображение имеет довольно уникальный след, достаточный для определения совпадений.
Обнаружение края
Как насчет использования Edge Detection .
(источник: wikimedia.org )
С двумя подобными изображениями обнаружение края должно предоставить вам полезный и довольно надежный уникальный след.
Сделайте обе фотографии и примените функцию обнаружения края. Может быть, измерить среднюю толщину краев, а затем вычислить вероятность того, что изображение может быть масштабировано, и при необходимости измените масштаб. Ниже приведен пример применения фильтра Габора (тип обнаружения края) в различных поворотах.
Сравните картинки пиксель за пикселем, посчитайте совпадения и не совпадения. Если они находятся в пределах определенного порога ошибки, у вас есть совпадение. В противном случае вы можете попытаться уменьшить разрешение до определенной точки и посмотреть, улучшится ли вероятность совпадения.
Регионы интересов
Некоторые изображения могут иметь отличительные сегменты / области интереса. Эти области, вероятно, сильно контрастируют с остальной частью изображения и являются хорошим элементом для поиска в других ваших изображениях, чтобы найти совпадения. Возьмите это изображение, например:
(источник: meetthegimp.org )
Строитель синего цвета представляет интерес для региона и может использоваться в качестве объекта поиска. Вероятно, есть несколько способов извлечь свойства / данные из этой области интересов и использовать их для поиска в вашем наборе данных.
Если у вас есть более 2 областей интереса, вы можете измерить расстояния между ними. Возьмите этот упрощенный пример:
(источник: per2000.eu )
У нас есть 3 четких области интересов. Расстояние между областью 1 и 2 может составлять 200 пикселей, от 1 до 3 400 пикселей и от 2 до 3 200 пикселей.
Ищите другие изображения для похожих областей интереса, нормализуйте значения расстояния и посмотрите, есть ли у вас потенциальные совпадения. Эта техника может хорошо работать для повернутых и масштабированных изображений. Чем больше интересующих вас областей, тем больше вероятность совпадения с каждым измерением расстояния.
Важно думать о контексте вашего набора данных. Если, например, ваш набор данных представляет собой современное искусство, то интересующие области будут работать достаточно хорошо, поскольку интересующие области, вероятно, были разработаны, чтобы стать фундаментальной частью окончательного изображения. Однако, если вы имеете дело с изображениями строительных площадок, нелегальный копировальный аппарат может интерпретировать представляющие интерес области как некрасивые и может быть обрезан / отредактирован произвольно. Помните об общих особенностях вашего набора данных и попытайтесь использовать эти знания.
морфинг
Преобразование двух изображений - это процесс превращения одного изображения в другое с помощью ряда шагов:
Обратите внимание, это отличается от исчезновения одного изображения в другое!
Есть много программных пакетов, которые могут преобразовывать изображения. Это традиционно используется в качестве переходного эффекта, два изображения обычно не превращаются во что-то наполовину, одно крайнее превращается в другое в качестве конечного результата.
Почему это может быть полезно? В зависимости от используемого вами алгоритма преобразования может быть взаимосвязь между сходством изображений и некоторыми параметрами алгоритма преобразования.
В более упрощенном примере один алгоритм может выполняться быстрее, когда требуется внести меньше изменений. Затем мы знаем, что существует более высокая вероятность того, что эти два изображения имеют общие свойства друг с другом.
Эта техника может хорошо работать для повернутых, искаженных, искаженных, увеличенных, всех типов копируемых изображений. Опять же, это просто идея, которая у меня возникла, она не основана на каких-либо научных исследованиях, насколько я знаю (хотя я не выгляжу жестко), так что это может быть большая работа для вас с ограниченными / безрезультатными результатами.
Архивирование
Ответ Оу в этом вопросе превосходен, я помню, как читал об этой технике изучения ИИ. Это довольно эффективно при сравнении корпусных лексиконов.
Одна интересная оптимизация при сравнении корпусов состоит в том, что вы можете удалить слова, которые считаются слишком общими, например «The», «A», «And» и т. Д. Эти слова ослабляют наш результат, мы хотим выяснить, насколько различны эти два корпуса поэтому они могут быть удалены перед обработкой. Возможно, есть похожие сигналы на изображениях, которые могут быть удалены перед сжатием? Это может быть стоит посмотреть.
Коэффициент сжатия является очень быстрым и достаточно эффективным способом определения того, насколько похожи два набора данных. Читая о том, как работает сжатие , вы поймете, почему это может быть настолько эффективно. Для алгоритма быстрого выпуска это, вероятно, будет хорошей отправной точкой.
прозрачность
Опять же, я не уверен, как данные о прозрачности хранятся для определенных типов изображений, изображений и т. Д., Но это будет извлекаемым и послужит эффективным упрощенным вырезом по сравнению с прозрачностью ваших наборов данных.
Инвертирующие сигналы
Изображение это просто сигнал. Если вы воспроизводите шум из динамика и воспроизводите противоположный шум в другом динамике с идеальной синхронизацией на той же громкости, они взаимно подавляют друг друга.
(источник: themotorreport.com.au )
Инвертируйте изображения и добавьте их на другое изображение. Повторяйте масштабирование позиций / циклов до тех пор, пока не найдете результирующее изображение с достаточным количеством пикселей белого (или черного? Я буду называть его нейтральным холстом), чтобы получить положительное или частичное совпадение.
Однако рассмотрим два изображения, которые равны, за исключением того, что к одному из них применяется эффект яркости:
(источник: mcburrz.com )
Обращение одного из них, затем добавление его к другому не приведет к нейтральному холсту, к которому мы стремимся. Однако, сравнивая пиксели обоих исходных изображений, мы можем четко видеть четкую связь между ними.
Я не изучал цвет уже несколько лет, и не уверен, что цветовой спектр находится в линейной шкале, но если вы определили средний коэффициент цветового различия между двумя изображениями, вы можете использовать это значение для нормализации данных перед обработкой с эта техника.
Древовидные структуры данных
Поначалу они не подходят для этой проблемы, но я думаю, что они могут работать.
Вы можете подумать о том, чтобы извлечь определенные свойства изображения (например, цветные ячейки) и создать дерево Хаффмана или аналогичную структуру данных. Вы можете сравнить два дерева на предмет сходства. Это не будет хорошо работать для фотографических данных, например, с большим спектром цветов, но мультфильмы или другие изображения с уменьшенным набором цветов могут работать.
Это, вероятно, не сработает, но это идея. Trie структура данных велик на хранящих словарях, например , в dictionarty. Это префиксное дерево. Возможно, можно создать образ, эквивалентный лексикону (опять же, я могу думать только о цветах), чтобы построить три. Если вы уменьшите, скажем, изображение 300x300 до 5x5 квадратов, то разбейте каждый квадрат 5x5 на последовательность цветов, из которых вы могли бы построить три из полученных данных. Если квадрат 2х2 содержит:
FFFFFF|000000|FDFD44|FFFFFF
У нас есть довольно уникальный трехблочный код, который расширяет 24 уровня, увеличивая / уменьшая уровни (т.е. IE уменьшая / увеличивая размер нашего квадрата) может дать более точные результаты.
Сравнение трех деревьев должно быть достаточно простым и может обеспечить эффективные результаты.
Больше идей
Я наткнулся на интересную статью о классификации спутниковых снимков , в которой говорится:
Рассматриваются следующие показатели текстуры: матрицы совпадений, различия уровней серого, анализ тонов текстуры, особенности, полученные из спектра Фурье, и фильтры Габора. Некоторые функции Фурье и некоторые фильтры Габора были признаны хорошим выбором, в частности, когда для классификации использовалась одна полоса частот.
Возможно, стоит изучить эти измерения более подробно, хотя некоторые из них могут не относиться к вашему набору данных.
Другие вещи, чтобы рассмотреть
Вероятно, есть много статей на эту тему, поэтому чтение некоторых из них должно помочь, хотя они могут быть очень техническими. Это чрезвычайно сложная область в области вычислительной техники, поскольку многие люди, пытающиеся делать подобные вещи, проводят много бесполезных часов работы. Сохранение этого простым и основанное на этих идеях было бы лучшим способом пойти. Должно быть достаточно сложной задачей создать алгоритм с частотой совпадений, превышающей случайный, и начать улучшать его, что действительно становится довольно трудным для достижения.
Каждый метод, вероятно, необходимо будет тщательно протестировать и настроить. Если у вас есть какая-либо информация о типе изображения, которое вы также будете проверять, это будет полезно. Например, рекламные объявления, многие из которых содержат текст, поэтому распознавание текста будет простым и, вероятно, очень надежным способом поиска совпадений, особенно в сочетании с другими решениями. Как упоминалось ранее, попытайтесь использовать общие свойства вашего набора данных.
Комбинируя альтернативные измерения и методы, каждый из которых может иметь взвешенный голос (в зависимости от их эффективности), вы могли бы создать систему, которая генерирует более точные результаты.
Если при использовании нескольких алгоритмов, как было упомянуто в начале этого ответа, можно найти все положительные результаты, но уровень ложных срабатываний составляет 20%, было бы интересно изучить свойства / сильные / слабые стороны других алгоритмов, поскольку другой алгоритм может быть эффективным в устранении ложных срабатываний, полученных от другого.
Будьте осторожны, чтобы не попытаться завершить бесконечный проект, удачи!