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

9 ответов

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

0
ответ дан Federico A. Ramponi 23 November 2019 в 20:49
поделиться

Наземное расстояние двигателей могло бы быть точно, в чем Вы нуждаетесь. Это могло бы быть abit, тяжелый для реализации в режиме реального времени все же.

1
ответ дан shoosh 23 November 2019 в 20:49
поделиться

Что относительно того, чтобы вычислить манхэттенское Расстояние из двух изображений. Это дает Вам значения n*n. Тогда Вы могли сделать что-то как среднее число строки для сокращения до значений n и функции по этому для получения одного единственного значения.

1
ответ дан Tobias 23 November 2019 в 20:49
поделиться

Вы видели Алгоритм для нахождения подобных изображений вопрос? Проверьте его для наблюдения предложений.

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

3
ответ дан Community 23 November 2019 в 20:49
поделиться

Большинство данных ответов не будет иметь дело с освещением уровней.

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

5
ответ дан Loren Pechtel 23 November 2019 в 20:49
поделиться

Тривиальная вещь попробовать:

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

13
ответ дан Ates Goral 23 November 2019 в 20:49
поделиться

Два популярных и относительно простых метода: (a) Евклидово расстояние, уже предложенное, или (b) нормализованная взаимная корреляция. Нормализованная взаимная корреляция имеет тенденцию быть заметно более устойчивой к освещению изменений, чем простая взаимная корреляция. Википедия дает формулу для нормализованная взаимная корреляция . Более сложные методы существуют также, но они требуют вполне немного большего количества работы.

Используя подобный numpy синтаксис,

dist_euclidean = sqrt(sum((i1 - i2)^2)) / i1.size

dist_manhattan = sum(abs(i1 - i2)) / i1.size

dist_ncc = sum( (i1 - mean(i1)) * (i2 - mean(i2)) ) / (
  (i1.size - 1) * stdev(i1) * stdev(i2) )

предположение, что i1 и i2 2D массивы полутонового изображения.

19
ответ дан Mr Fooz 23 November 2019 в 20:49
поделиться

Можно сравнить два изображения с помощью функций от PIL.

import Image
import ImageChops

im1 = Image.open("splash.png")
im2 = Image.open("splash2.png")

diff = ImageChops.difference(im2, im1)

различный объект является изображением, в котором каждый пиксель является результатом вычитания значений цвета того пикселя во втором изображении из первого изображения. Используя различное изображение можно сделать несколько вещей. Самый простой - эти diff.getbbox() функция. Это скажет Вам минимальный прямоугольник, который содержит все изменения между Вашими двумя изображениями.

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

56
ответ дан elifiner 23 November 2019 в 20:49
поделиться

простое решение А:

Кодируют изображение jpeg и ищут существенные изменения в размер файла .

я реализовал что-то похожее с видео миниатюрами и имел большой успех и масштабируемость.

74
ответ дан keparo 23 November 2019 в 20:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: