Страница 1 из 1

как сравнить bmpхи др с другом

Добавлено: 23 авг 2005, 01:34
grayWolf_
Срочно надо что-то придумать, тема такая: водим оранжевым прицелом пистолета по экрану (ну те по стене, через проектор все происхоит) и стреляем, надо определить в каком месте мишень в момент нажатия. при выстреле мы делаем снимок web-камерой - единственная > < работающая идея, и пытаемся сравнить кактинку без мишени с захваченной в момент выстрела, но толком как это сделать придумать не можем. за помощь в реализации этой херни (или может у кого другой алгоритм созреет) плачу wm.
скажу еще для ясности: это что-то вроде тира, в руках пистолет водим прицелом по стене и стреляем по мишеням (нажатие курка вызывает событие левого щелчка), снимаем в момент выстрела камерой...

респект всем кто хоть попытается помочь :shock: [/i]

Добавлено: 24 авг 2005, 07:59
Septic
Попробуй найти инфу об устройстве световых пистолетов для приставок. ИМХО, там все намного проще должно быть.

Добавлено: 20 сен 2005, 16:30
Naeel Maqsudov
Сфотографированный квадратик (если я правильно понял задачу) надо "прикладывать" на исходное изображение (которое видимо проецируется на стену) и найти то место, где все совпадает. Так?

Если поXORить эталон с маленьким кусочком, то при условии идентичности кусочка и закрываемого им пространства, в месте такого "прикладывания" получится черный квадрат.

Идея заключается в том, чтобы многократно "прикладывать" (со сдвигом по X и Y) этот кусочек с операцией XOR. То место, где прикладывание даст наичернейший результат - и есть искомая позиция.

Накладывание маленького битмапа на определенное место большого с операцией XOR -это наистандартнейшая функция WinAPI. Оценить "черность" полученного результата можно подсчитывая средний цвет точки. Возможно обычное среднее арифметическое - это плохой выбор... Тут прийдется немного подумать.

Оптимизировать процедуру поиска можно начав с предполагаемого места прицеливания, а затем задавая сдвиг по X и Y обходя предполагаемое место прицеливания по спирали.

Если предполагаемых мест прицеливания несколько, то можно попробовать делать несколько поисков в несколько параллельных потоков.

Добавлено: 11 окт 2005, 21:41
Хыиуду
>>Накладывание маленького битмапа на определенное место большого с операцией XOR -это наистандартнейшая функция WinAPI.
А называется эта функция bitblt

Добавлено: 12 окт 2005, 20:27
Naeel Maqsudov
Угу.
А как оценить "черность" результата?

Добавлено: 12 окт 2005, 21:28
Хыиуду
Ууу, мы же еще не учли, что проецируется изображение из одной точки, а игрок стоит в другой. Таким образом, изображение по краям будет растянутым и не совпадет с оригиналом... грустно.

Добавлено: 12 окт 2005, 21:36
Naeel Maqsudov
Еще мы не учли необходимость гамма-коррекции, так как у камеры цветопередача может оказаться другой.....
Потому я и не говорю, что получится черный...

К черту края!
Где получистя ченее всего, это оно и есть. Или я не прав?

Добавлено: 13 окт 2005, 11:38
Хыиуду
Не всегда. Если взять для примера черно-белое изображение, то похожие цвета 10000000 и 01111111 при XORe дадут 11111111, т.е. белый.
Тэк-с. С растром мы зашли в тупик: у нас получается искаженное по координатам и по цвету изображение, которое мы должны найти на неискаженном оригинале. Может, попробовать перетрассировать растр в векторную форму?