Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2007, 16:32   #1
borodaj
 
Регистрация: 21.04.2007
Сообщений: 5
По умолчанию попиксельное сравнение

Доброго времени. господа!! подскажите такой вопрос несложный... есть два изображения, необходимо сравнить их попиксельно, и результат о их "схожести" вывести в процентах.... заранее спасибо!
borodaj вне форума Ответить с цитированием
Старый 29.05.2007, 17:05   #2
Wolfheart
Любитель
Пользователь
 
Регистрация: 29.05.2007
Сообщений: 16
По умолчанию

О'кэй, помещаем оба изображения в байтовые массивы и приступаем к сравниванию. Вводим переменную: Valid типа Integer, мы будем её икрементировать постоянно по ходу сравнения (если цвет пикселей совпадает, добавляем к Valid еденицу, иначе не добавляем). Далее пользуемся пропорциями.
Количество пикселей всего = 300.
Значение Valid = 160.
Результат в процентах = round(160 * 100) / 300.

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

Последний раз редактировалось zetrix; 30.05.2007 в 07:55.
Wolfheart вне форума Ответить с цитированием
Старый 29.05.2007, 17:23   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

цвет пикселя узнать можно работая с Canvas объекта TImage... кажись свойство Pixel
pu4koff вне форума Ответить с цитированием
Старый 29.05.2007, 17:47   #4
Wolfheart
Любитель
Пользователь
 
Регистрация: 29.05.2007
Сообщений: 16
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
цвет пикселя узнать можно работая с Canvas объекта TImage... кажись свойство Pixel
Можно. Только вот работать будет крайне медленно, если сравнивать изображение с расширением эдак 600 х 400. Сразу в массив сливать, в память.
Хочешь рассмешить Бога, расскажи ему о планах на завтра…
Wolfheart вне форума Ответить с цитированием
Старый 31.05.2007, 08:00   #5
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Используй ф-ию scanline
SERG1980 вне форума Ответить с цитированием
Старый 31.05.2007, 08:39   #6
НЕ_АЙС
Форумчанин
 
Регистрация: 18.04.2007
Сообщений: 135
По умолчанию

to Wolfheart:
Твой алгоритм не совсем правильный.
Приведу пример:
Имеется два абсолютно идентичных изображения A и B.
Далее к каждой составляющей цвета пикселя изображения B прибавляем по единице.
В результате на глаз ты никаких изменений не заметишь, но твой алгоритм скажет, что это абсолютно разные картинки.
Да и к тому же размеры картинок могут быть разными.
НЕ_АЙС вне форума Ответить с цитированием
Старый 31.05.2007, 10:20   #7
Wolfheart
Любитель
Пользователь
 
Регистрация: 29.05.2007
Сообщений: 16
По умолчанию

НЕ_АЙС, твои замечания верны, я привёл всего лишь упрощённую схему. В случае с изображениями различных размеров, конечно, мой вариант не годится. А по поводу составляющих цвета, можно ввсести допустимые границы каждого из них, скажем, плюс-минус 50.
Хочешь рассмешить Бога, расскажи ему о планах на завтра…
Wolfheart вне форума Ответить с цитированием
Старый 31.05.2007, 13:24   #8
mihaild
Пользователь
 
Регистрация: 31.05.2007
Сообщений: 10
По умолчанию

to НЕ_АЙС: а решение этой задачи в общем виде ещё и не найдено)
mihaild вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение данных White БД в Delphi 1 09.09.2008 22:32
сравнение дат Geddar Общие вопросы Delphi 2 04.06.2008 19:09
Сравнение и подстановка tsasha1 Microsoft Office Excel 2 08.04.2008 14:47
быстрый вывод карты на экран или попиксельное создание бмп angel2c Общие вопросы C/C++ 2 17.12.2007 10:50
Сравнение Си и Ассемблера... Sota Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 25.07.2007 16:15