Быстро сравнение изображений

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Sh User
Сообщения: 4
Зарегистрирован: 01 дек 2004, 20:52

Помогите с написание функции для очень быстрого сравнения изображений.
Экран делится на опр. кол-во частей. Далее требуется со скоростью примерно 10 раз в секунду проверить были ли изменения изображения в кажой части экрана.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Уточните, окно собственного приложения делится на части или требуется анализировать именно все то что находится сейчас на экране (включая окна чужих приложений).
Sh User
Сообщения: 4
Зарегистрирован: 01 дек 2004, 20:52

Всё на экране. Я создаю аналог программы RAdmin. Для экономии трафика отсылается только новое изображение. вот...
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Я тут подумал, что если витмап поXOR-ить с эталоном (параметр dwRop в Bitmap-функциях = SRCINVERT), то при условии одинаковости получится черный прямоугольник. Если найдете быстрый способ проверки является ли битмап черным прямоугольником, то это, как мне кажется и будет самый быстрый способ сравнения битмапов.
chur
Сообщения: 195
Зарегистрирован: 17 фев 2004, 10:44
Откуда: Riga, Latvia

Надо написать какую-нибудь хэш-функцию и уже сравнивать результаты функции. В данном случае предлагаю просто представить битмап в виде списка целых и похорить их между собой.
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Я тоже о варианте с XOR подумал. А проверить прямоугольник на 'черноту' можно полинейной OR-сверткой (напр., по горизонтали) -> и еще одной для полученной линии (по вертикали). Вариант с хэш-функцией тоже неплох, но я не вижу преимущества по скорости.

Вообще, в MPEG (кажется, 4) проблемы подобного рода давно решены, так что лучше не изобретать велосипед :)
Sh User
Сообщения: 4
Зарегистрирован: 01 дек 2004, 20:52

Спасибо!
val_pov
Сообщения: 1
Зарегистрирован: 17 апр 2005, 01:03
Откуда: Беларусь -> Гродно

есть пару вопросов по теме:

вот написал я прогу для сравнения изображений... но всё равно както медленно...
разрешение 1024x768....
снимок делается за = 70 мс
перевод в 8 бит цвет = 30 мс
поиск изменений = 30 мс
запоковка (целого - для теста) изображения в gif = 70 мс

получается что я смогу сделать только около 5 снимков в 1 сек.
но это можно оптимизировать и сделать как в radmin - фоткать много раз верхнее окно - а весь экран редко...

ктонить может ещё предложить как ускорить этот процес???
и ктонить знает как radmin так быстро работает???

и как потом отправлять обработаный кадр??? я думаю преобразовывать каждую изменённую часть экрана (экран разбивал на 576 частей) в gif и создать стрим с этими всеми координатами и картинками - а потом послать это...
Ответить