Сравнение изображений - PullRequest
       29

Сравнение изображений

26 голосов
/ 20 апреля 2011

Первоначально я задавал этот вопрос на cstheory.stackexchange.com , но мне было предложено переместить его на stats.stackexchange.com .

Существует ли существующий алгоритм, который возвращает мне показатель сходства между двумя растровыми изображениями? Под «подобным» я подразумеваю, что человек сказал бы, что эти два изображения были изменены с одной и той же фотографии. Например, алгоритм должен сказать, что следующие 3 изображения одинаковы (оригинал, смещение позиции, сжато).

То же самое

enter image description here enter image description here enter image description here

Мне не нужно обнаруживать искаженные или перевернутые изображения. Мне также не нужно обнаруживать, если это один и тот же объект в разных ориентациях.

Различные

enter image description here enter image description here

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

Ответы [ 6 ]

16 голосов
/ 20 апреля 2011

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

6 голосов
/ 28 июня 2017

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

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

Вот пара блогов, которые проведут вас через этот процесс. http://blog.ethanrosenthal.com/2016/12/05/recasketch-keras/ https://erikbern.com/2015/09/24/nearest-neighbor-methods-vector-models-part-1.html

4 голосов
/ 13 февраля 2017

У Amazon есть новый API под названием Rekognition , который позволяет сравнивать два изображения на предмет сходства лиц. API возвращает процент сходства для каждого лица друг с другом и ограничительные рамки для каждого лица.

Rekognition также включает API для анализа лица (возвращающий пол, приблизительный возраст и другие соответствующие детали лица) и обнаружения объекта (возвращая теги объектов, находящихся внутри изображения).

2 голосов
/ 11 февраля 2019

Используйте https://github.com/Netflix/vmaf для сравнения двух наборов изображений.

Сначала преобразуйте изображения в yuv422p с помощью ffmpeg, а затем запустите тест.Обратите внимание на разницу очков.Это может использоваться, чтобы сказать, является ли изображение подобным или другим.Для этого примера они оба выглядят довольно похоже ...

ffmpeg -i .\different-pose-1.jpg  -s 1920x1080 -pix_fmt yuv422p different-pose-1.yuv
ffmpeg -i .\different-pose-2.jpg  -s 1920x1080 -pix_fmt yuv422p different-pose-2.yuv
.\vmafossexec.exe yuv422p 1920 1080 different-pose-1.yuv different-pose-2.yuv vmaf_v0.6.1.pkl --ssim --ms-ssim --log-fmt json --log different.json
Start calculating VMAF score...
Exec FPS: 0.772885
VMAF score = 2.124272
SSIM score = 0.424488
MS-SSIM score = 0.415149

ffmpeg.exe -i .\same-pose-1.jpg  -s 1920x1080 -pix_fmt yuv422p same-pose-1.yuv
ffmpeg.exe -i .\same-pose-2.jpg  -s 1920x1080 -pix_fmt yuv422p same-pose-2.yuv
.\vmafossexec.exe yuv422p 1920 1080 same-pose-1.yuv same-pose-2.yuv vmaf_v0.6.1.pkl --ssim --ms-ssim --log-fmt json --log same.json
Start calculating VMAF score...
Exec FPS: 0.773098
VMAF score = 5.421821
SSIM score = 0.285583
MS-SSIM score = 0.400130

Ссылки Как я могу создать кадр YUV422 из JPEG или другого изображения в Ubuntu

2 голосов
/ 21 апреля 2011

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

Надеюсь, это поможет.

2 голосов
/ 21 апреля 2011

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

Если вам нужно выполнить анализ лица, вы должны искать алгоритмы, специфичные для этого. При таком анализе часто выполняется расчет относительного размера и положения глаз, носа и рта.

...