Scarabey писал(а):MIT
Извини конечно, но мне кажется ты совсем обленился, и не хочешь искать сам, это же все есть в MSDN!
Думаю данный вопрос покажется как интересным, так и нестандартным. В любом случае я с таким никогда не сталкивался и никаких аналогичных решеных впросов не видел...773FF писал(а):Простите за вредность, но хочется читать интересные ответы на интересные вопросы.
Задача: сравнить изображения. Скажете "фу, иди в ****, это обсуждалось!!!"
Особенности задачи: изначально дается 2 изображения, причем размеры, качество и формат оных может отличаться, отсюда следует, что попиксельное сравнение невозможно (в 99,99999% случаев), и придется изобретать что-то свое.
Мои мысли по данному поводу:
1)Приводим изображения к обному формату (32bpp) и одному размеру (наверно к меньшему)
2)Смотрим, цветные ли у нас изображения. Если одно из них чб, то обесцвечиваем второе
3)Непосредственно проверка. Поскольку качество изображений (по условию) разное, то будем использовать усредненно-блочную систему:
>выбираем определенный квадрат (прямокгольник) данных, например с 1х1 до 5х5, находим среднеарифветическое число каждого канала (не общее, так как если поменять каналы местами, то получится, что сумма каналов одна, а визуально изображения разное)
>сдвигаем оценочную область вправо (вниз) на 1 (2 или 5 - надо попробовать будет) px и проводим те же операции
>оценивем таким же образом второе изображение
>сравниваем полученные числа квадратов по каналам, записывая в массив процентную разницу между числами
>[здесь я тоже не уверен - надо пробовать] находим среднеарифмитическое число процентной разницы (или работаем с каждым числом отдельно), и если полученное соотношение разницы меньше 10%, то можно сказать, что изображения похожи, если меньше 5%, то возможно, что одинаковые.
На счет очередности 2ого и 2ого также до конца не уверен.
У кого какие соображения есть на данную тему?
З.Ы.: все это только теория, но в голове оно работает, причем неплохо