Быстро сравнение изображений
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Помогите с написание функции для очень быстрого сравнения изображений.
Экран делится на опр. кол-во частей. Далее требуется со скоростью примерно 10 раз в секунду проверить были ли изменения изображения в кажой части экрана.
Экран делится на опр. кол-во частей. Далее требуется со скоростью примерно 10 раз в секунду проверить были ли изменения изображения в кажой части экрана.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Уточните, окно собственного приложения делится на части или требуется анализировать именно все то что находится сейчас на экране (включая окна чужих приложений).
Всё на экране. Я создаю аналог программы RAdmin. Для экономии трафика отсылается только новое изображение. вот...
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Я тут подумал, что если витмап поXOR-ить с эталоном (параметр dwRop в Bitmap-функциях = SRCINVERT), то при условии одинаковости получится черный прямоугольник. Если найдете быстрый способ проверки является ли битмап черным прямоугольником, то это, как мне кажется и будет самый быстрый способ сравнения битмапов.
Надо написать какую-нибудь хэш-функцию и уже сравнивать результаты функции. В данном случае предлагаю просто представить битмап в виде списка целых и похорить их между собой.
Я тоже о варианте с XOR подумал. А проверить прямоугольник на 'черноту' можно полинейной OR-сверткой (напр., по горизонтали) -> и еще одной для полученной линии (по вертикали). Вариант с хэш-функцией тоже неплох, но я не вижу преимущества по скорости.
Вообще, в MPEG (кажется, 4) проблемы подобного рода давно решены, так что лучше не изобретать велосипед
Вообще, в MPEG (кажется, 4) проблемы подобного рода давно решены, так что лучше не изобретать велосипед

есть пару вопросов по теме:
вот написал я прогу для сравнения изображений... но всё равно както медленно...
разрешение 1024x768....
снимок делается за = 70 мс
перевод в 8 бит цвет = 30 мс
поиск изменений = 30 мс
запоковка (целого - для теста) изображения в gif = 70 мс
получается что я смогу сделать только около 5 снимков в 1 сек.
но это можно оптимизировать и сделать как в radmin - фоткать много раз верхнее окно - а весь экран редко...
ктонить может ещё предложить как ускорить этот процес???
и ктонить знает как radmin так быстро работает???
и как потом отправлять обработаный кадр??? я думаю преобразовывать каждую изменённую часть экрана (экран разбивал на 576 частей) в gif и создать стрим с этими всеми координатами и картинками - а потом послать это...
вот написал я прогу для сравнения изображений... но всё равно както медленно...
разрешение 1024x768....
снимок делается за = 70 мс
перевод в 8 бит цвет = 30 мс
поиск изменений = 30 мс
запоковка (целого - для теста) изображения в gif = 70 мс
получается что я смогу сделать только около 5 снимков в 1 сек.
но это можно оптимизировать и сделать как в radmin - фоткать много раз верхнее окно - а весь экран редко...
ктонить может ещё предложить как ускорить этот процес???
и ктонить знает как radmin так быстро работает???
и как потом отправлять обработаный кадр??? я думаю преобразовывать каждую изменённую часть экрана (экран разбивал на 576 частей) в gif и создать стрим с этими всеми координатами и картинками - а потом послать это...