GraphD писал(а):Норма разности средних цветов? Ммм... разность средних цветов обоих сравниваемых прямоугольников? Иными словами разность средних арифметических! Т.е. Вы хотите сравнивать скалярную характеристику, а тот, кто предложил гистограмму - сравнивать векторную характеристику, вот это и есть предмет спора (?) и вся сказка про белого бычка?
Предмет спора - полезность этих сравнений. Я вам говорю что гистограммы сравнивать так как вы сказали бесполезно, потому как ваша оценочная фукнция в самом точном вариаенте (который по идее должен давать самую точную оценку) дает одинаковый результат как в случае отличия всех пикселей на 255, так и на 1 по цвету. Кроме того ваша функция считается на порядок дольше.
GraphD писал(а):Так! Похоже, простите за прямоту, Вы хотите лишить CV-науку такого мощнейшего аппарата как теория распределения вероятностей и статистика! Столбики вырастут так как нужно!, [и будут вырастать везде ]! У вас же не десять пикселей в окне! Ну если меньше, то тут нужность статистики действительно сомнительна, и, как Вы предложили, берем средний цвет и поехали...
Утомляюсь уже спорить, вы не хотите видеть очевидных проблем. Возьмите тогда и реализуйте свой метод и сами всё поймете. Огребя проблемы с тем, что ваша оценочная функция будет давать какие угодно результаты кроме нужных и будет очень долго считаться. Только изображения берите реальные, а не в фотошопе сделанные.
PS: Последняя моя попытка показать, почему гистограммы плохо, а средний цвет - отлично:
Итак - что нам требуется: Заменить долгий рассчет distance(img1,img2)=sqrt(summ( sqr(img1[x][y]-img2[x][y]) )/totalPixels) какой-нибудь быстро считаемой функцией, дающей хорошую оценку снизу
Моя функция дает отличную оценку снизу - myEstimation(img1,img2)=abs(avgColor(img1)-avgColor(img2))<=distance(img1,img2) - это очень легко доказать. То есть если моя функция больше лучшего найденного ранее distance, то можно не считать долгий distance и переходить к следующему фрагменту, а значит мой способ отсечений будет эффективен.
Ваша же функция не дает такой оценки снизу ни с какой стороны. Как я уже показал yourFunction(img1,img2) может быть 255 как в случае distance(img1,img2)=1, так и в случае distance(img1,img2)=254. То есть ваша функция достигает своего максимума на чрезвычайно похожих изображениях, а значит её нельзя использовать для отсечений, иначе вы отсечете искомое изображение смещенное всего на 1 по цветам.