Страница 1 из 1
Быстро сравнение изображений
Добавлено: 06 дек 2004, 00:08
Sh User
Помогите с написание функции для очень быстрого сравнения изображений.
Экран делится на опр. кол-во частей. Далее требуется со скоростью примерно 10 раз в секунду проверить были ли изменения изображения в кажой части экрана.
Добавлено: 06 дек 2004, 03:13
Naeel Maqsudov
Уточните, окно собственного приложения делится на части или требуется анализировать именно все то что находится сейчас на экране (включая окна чужих приложений).
Добавлено: 06 дек 2004, 13:11
Sh User
Всё на экране. Я создаю аналог программы RAdmin. Для экономии трафика отсылается только новое изображение. вот...
Добавлено: 07 дек 2004, 07:49
Naeel Maqsudov
Я тут подумал, что если витмап поXOR-ить с эталоном (параметр dwRop в Bitmap-функциях = SRCINVERT), то при условии одинаковости получится черный прямоугольник. Если найдете быстрый способ проверки является ли битмап черным прямоугольником, то это, как мне кажется и будет самый быстрый способ сравнения битмапов.
Добавлено: 07 дек 2004, 10:52
chur
Надо написать какую-нибудь хэш-функцию и уже сравнивать результаты функции. В данном случае предлагаю просто представить битмап в виде списка целых и похорить их между собой.
Добавлено: 07 дек 2004, 13:03
Eugie
Я тоже о варианте с XOR подумал. А проверить прямоугольник на 'черноту' можно полинейной OR-сверткой (напр., по горизонтали) -> и еще одной для полученной линии (по вертикали). Вариант с хэш-функцией тоже неплох, но я не вижу преимущества по скорости.
Вообще, в MPEG (кажется, 4) проблемы подобного рода давно решены, так что лучше не изобретать велосипед

Добавлено: 07 дек 2004, 23:34
Sh User
Спасибо!
Добавлено: 22 апр 2005, 23:14
val_pov
есть пару вопросов по теме:
вот написал я прогу для сравнения изображений... но всё равно както медленно...
разрешение 1024x768....
снимок делается за = 70 мс
перевод в 8 бит цвет = 30 мс
поиск изменений = 30 мс
запоковка (целого - для теста) изображения в gif = 70 мс
получается что я смогу сделать только около 5 снимков в 1 сек.
но это можно оптимизировать и сделать как в radmin - фоткать много раз верхнее окно - а весь экран редко...
ктонить может ещё предложить как ускорить этот процес???
и ктонить знает как radmin так быстро работает???
и как потом отправлять обработаный кадр??? я думаю преобразовывать каждую изменённую часть экрана (экран разбивал на 576 частей) в gif и создать стрим с этими всеми координатами и картинками - а потом послать это...