Определить разницу между двумя почти одинаковыми фотографиями

StackOverflow https://stackoverflow.com/questions/823564

Вопрос

Это довольно широкий вопрос; Какие инструменты / библиотеки существуют, чтобы делать две фотографии, которые не идентичны, но чрезвычайно похожи, и выявлять конкретные различия между ними?

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

Какие инструменты я могу использовать для создания различий в изображениях или в третьем тепловом изображении различий? Есть ли инструменты для .NET?

Это было полезно?

Решение

Просмотрите статью Эндрю Кириллова о CodeProject. Он написал приложение на C #, используя AForge.NET библиотеку компьютерного зрения для обнаружения движения. На веб-сайте AForge.NET проводится обсуждение двух различий кадров для обнаружения движения.

Другие советы

Это во многом зависит от формата изображения и сжатия. Но, в конце концов, вы, вероятно, берете два растра и сравниваете их попиксельно.

Ознакомьтесь с утилитой восприятия изображений .

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

Начнем с богатой библиотеки обработки изображений, такой как IM . , Вы можете взаимодействовать с его операторами в интерактивном режиме с помощью инструмента IMlab , вызывать его непосредственно из C или C ++ или использовать его действительно приличный Lua обязателен, чтобы выгнать его из Lua. Он поддерживает широкий спектр операций с растровыми изображениями, а также расширяемую библиотеку форматов файлов.

Даже если вы ничего не перемещали намеренно, вы можете использовать алгоритм, такой как SIFT для получения хорошего субпиксельного качества выравнивания между кадрами. Если вы не хотите обращаться с камерой как с фиксированной, а также обнаруживать движение дивана.

Я написал это бесплатное приложение .NET, используя инструментарий моей компании (DotImage). У него очень простой алгоритм, но код с открытым исходным кодом, если вы хотите поиграть с ним - вы можете адаптировать алгоритм к классам .NET Image, если вы не хотите покупать копию DotImage.

http: / /www.atalasoft.com/cs/blogs/31appsin31days/archive/2008/05/13/image-difference-utility.aspx

Это интересный вопрос. Я не могу отослать вас к каким-либо конкретным библиотекам, но процесс, о котором вы спрашиваете, в основном минимальный случай компенсации движения. Именно так MPEG (MP4, DIVX и т. Д.) Видео так хорошо сжимает видео; Вы можете посмотреть в MPEG некоторую информацию о том, как реализованы эти алгоритмы компенсации движения.

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

просто используйте классы изображений .net, создайте новое растровое изображение () x 2 и посмотрите на R & amp; G & amp; B значения каждого пикселя, вы также можете посмотреть на значения A (альфа / прозрачность), если вы хотите при определении разницы.

также примечание, что использование метода getPixel (y, x) может быть очень медленным, есть другой способ получить все изображение (менее элегантное) и для каждого, проходящего через него самостоятельно, если я помню, оно называлось getBitmap или что-то подобное, посмотрите в классы изображений / растровых изображений & amp; Прочитайте некоторые статьи, они действительно все, что вам нужно & amp; не так сложно в использовании, не переходите к третьей стороне, если вам не нужно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top