Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   C# Сравнение двух картинок (https://forum.antichat.xyz/showthread.php?t=209611)

noxjoker 06.06.2010 20:52

C# Сравнение двух картинок
 
Здравствуйте, нужен совет.
Я делаю скриншот получаю картинку, делаю второй скриншот и нужно узнать какая была разница с первым и вторым скриншотом.

Решение
1. По пикселям – долгий вариант.
2. По байтам – проблема, поскольку файлы всегда разные по размеру.


Возможно решение поставить фиксированный размер на скриншот.
:confused:

scrat 06.06.2010 21:03

Что если поделить картинку на зоны, скажем на 4. Потом сравнивать каждую зону с каждой, если они разные, поделить зону ещё раз и сравнить каждую часть.

noxjoker 06.06.2010 21:05

scrat а как сравнивать? По пиксельно долго ...

scrat 06.06.2010 21:06

погугли ещё по запросу «image diff», может найдёшь какую библиотеку.

scrat 06.06.2010 21:07

Цитата:

Сообщение от noxjoker
scrat а как сравнивать? По пиксельно долго ...

вырезать и сравнить md5

BrainDeaD 06.06.2010 21:08

scrat, какое это даст приемущество перед проверкой целой картинки? 1 = 4/4

noxjoker 06.06.2010 21:09

Цитата:

вырезать и сравнить md5
Допустим они разные мне ж, потом нужно что-то заменить в первой картинке!

Например:

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

scrat 06.06.2010 21:13

Цитата:

Сообщение от BrainDeaD
scrat, какое это даст приемущество перед проверкой целой картинки? 1 = 4/4

в том то и дело, что может быть и 3/4 и 2/4 и 1/4.

Ra$cal 06.06.2010 21:22

для чего сравнивать надо? просто узнать о наличии различий(тогда можно обходить попиксельно но с изменяемым шагом до первой разницы, например проверяем каждый сотый пиксел, если совпали, то сдвигаем на один пиксель и заново проходим, и так 100 раз для проверки всей картинки. на худой конец никто не отменял многоядерность, плюс на хабре была тема про медленность попиксельной обработки
http://habrahabr.ru/blogs/net/92016/
http://habrahabr.ru/blogs/net/60085/

Если же обработка пикселов с разными значениями чтобы выравнять картинки - только попиксельный проход.

BrainDeaD 06.06.2010 21:26

Цитата:

Сообщение от scrat
в том то и дело, что может быть и 3/4 и 2/4 и 1/4.

а, понял. в смысле, если 1/4 различна, то не нужно продолжать проверку. тогда вопрос в том, сколько частей оптимально? ведь проверить 1/8 быстрее, чем 1/4, и проверка может быть завершена уже после первой зоны. но в худшем случае придётся провести 8 проверок. так же можно уменьшить зону до пикселя, что усугубит ситуацийю для worst case, но сильно улучшит для best case.


Время: 02:28