Попиксельное сравнение двух картинок

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Попиксельное сравнение двух картинок

Сообщение uhm » 02.09.2006 (Сб) 13:46

Есть две ЧЕРНО-БЕЛЫЕ (т. е. ровно два цвета) картинки в двух PictureBox'ах. Нужно определить, сколько пикселей в них отличаются (картинки, естественно, одного и того же размера). При этом критична скорость сравнения.

Возможно я не прав, но, по-моему, попиксельное сравнение с помощью GetPixel - не самый скоростной вариант. Пока придумал сXORить картинки при помощи BitBlt и считать белые пиксели в получившейся картинке - в два раза меньше GetPixel'ей. Можно ли еще как-то ускориться?
Быть... или не быть. Вот. В чём вопрос?

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 02.09.2006 (Сб) 14:07

Если работать с ними как с набором пикселей, то думаю никак (один то раз считать полюбому придется). Если поискать их адреса в памяти и проверять на идентичность, то думаю будет быстрее. Особенно учитывая, что они черно-белые.


Вот только как это реально сделать понятия не имею, это или к гурам, или сам ищи :)

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 02.09.2006 (Сб) 16:46

Вообще-то, поиск по массиву пикселей от GetDIBits.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 04.09.2006 (Пн) 10:04

Ага, спасибо, попробую :)
Быть... или не быть. Вот. В чём вопрос?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 134

    TopList