ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 06.06.2010, 21:32
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

это зависит от конкретных типов картинок, так же нужно учитывать зоны с высокой вероятностью изменений. В самом худшем случае такая проверка проиграет последовательной накладные расходы на организацию проверок и выборок областей, что, все таки, мелочи.

Интересно все таки узнать, какого рода картинки проверяются - фото, скриншоты, или еще что.
 
Ответить с цитированием

  #12  
Старый 06.06.2010, 21:34
noxjoker
Познающий
Регистрация: 07.08.2009
Сообщений: 85
Провел на форуме:
705829

Репутация: 53
Отправить сообщение для noxjoker с помощью ICQ
По умолчанию

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

Решение для меня такое:

Это сравнение части картинки с другой частью картинки не пиксели, а md5.
В итоге мы получаем. Если md5 1 части 1 картинки != md5 1 части 2 картинки тогда эта часть разная.

Таким образом, можно выйти из ситуации.


Моя задача была сравнение скриншотов.
Так же решение задачи это ставить фиксированный размер на скрины и сравнивать байты но, увы, я не знаю, как это сделать.

Последний раз редактировалось noxjoker; 06.06.2010 в 21:38..
 
Ответить с цитированием

  #13  
Старый 06.06.2010, 21:39
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

Объясните мне, зачем мд5? Вы берете пиксели, например 1000, прогоняете через мд5, проверяете мд5, берете 1000 пикселей второго изображдения, прогоняете мд5, сравниваете. Если немножко посчитать, вся выгода проверки заключается не в мд5, а в разбиении картинки, и мд5 здесь как раз лишнее движение, ибо он так же обходит массив пикеслей. Т.е. немножко подумав получаем, что если мы сравним 1000 пикселей мимо мд5 мы получим тот же эффект, только без лишних телодвижений. Или вы думаете мд5 магическим образом получает хэш без обхода массива?
 
Ответить с цитированием

  #14  
Старый 06.06.2010, 21:44
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

Код:
Pixel oldPixels[];
Pixel newPixels[];

for(int curPixIndex = 0; i < 1000; curPixIndex++){
    if(oldPixels[curPixIndex] != newPixels[curPixIndex])
        return false;
    return true;
}
это вариант без мд5. теперь с мд5
return md5(oldPixels) == md5(newPixels);

а md5 имеем

Код:
md5(Pixels[] pixels)
{
foreach(Pixel pixel in pixels){
...
}
Итого - два цикла при расчете мд5 вместо одного прямого сравнения. Прямое сравнение прерывается если пиксели не совпали. мд5 же гарантированно досчитает до конца. Считайте профит сами.
 
Ответить с цитированием

  #15  
Старый 06.06.2010, 21:50
scrat
Постоянный
Регистрация: 08.04.2007
Сообщений: 853
Провел на форуме:
5812656

Репутация: 1540


Отправить сообщение для scrat с помощью ICQ
По умолчанию

Ra$cal, хэш будет браться от байтов сжатого изображения. Но тут ещё затраты на сжатие.
 
Ответить с цитированием

  #16  
Старый 06.06.2010, 21:52
noxjoker
Познающий
Регистрация: 07.08.2009
Сообщений: 85
Провел на форуме:
705829

Репутация: 53
Отправить сообщение для noxjoker с помощью ICQ
По умолчанию

Сотри.

Есть первая картинка мы просто берем ее скрин.

Вторая картинка это скрин с изменением, например, вылезло окно.

Мы должны узнать, где вылезло это окно, но мы ж не хотим сравнивать попиксельно и не хотим весь скрин кидать. Мы делим вторую картинку, например на 4 части.

Узнаем хеши каждой части. Если эти хеши совпадают тогда это не та часть а если ода из частей не совпала тогда эта та часть и ее мы кидаем себе и просто налажуем на первую картинку.
 
Ответить с цитированием

  #17  
Старый 06.06.2010, 22:00
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

Тут надо понять, важно просто отличие найти, или просто факт разницы. Ибо разница в сжатых не даст координату пикселя отличающегося. Раньше ТС чтото писал про замену пиксела.

ТС, еще раз почитай что я написал про хеш. На личсточке можешь погонять тестовый пример 10х10 например.
 
Ответить с цитированием

  #18  
Старый 06.06.2010, 22:13
scrat
Постоянный
Регистрация: 08.04.2007
Сообщений: 853
Провел на форуме:
5812656

Репутация: 1540


Отправить сообщение для scrat с помощью ICQ
По умолчанию

Вопрос стоит в том, что будет затратнее: сжатие N-частей и сравнение хешей сжатого, или попиксельное/хешовое сравнение разжатых байтов.

В принципе никто не мешает объединить оба подхода. Как я понимаю, для маленьких кусков изображения быстрее будет попиксельное сравнение, а вот большую картинку можно для начала поделить на много кусков, сжать их, и сравнить их хеши с хешами предыдущих.
 
Ответить с цитированием

  #19  
Старый 06.06.2010, 22:29
scrat
Постоянный
Регистрация: 08.04.2007
Сообщений: 853
Провел на форуме:
5812656

Репутация: 1540


Отправить сообщение для scrat с помощью ICQ
По умолчанию

Кстати, а что мешает просто проксорить расжатые варианты? Быстро и получится чёрная картинка, кроме разных мест.
 
Ответить с цитированием

  #20  
Старый 06.06.2010, 22:41
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

Репутация: 84
По умолчанию

вариант предложенный scrat'ом - напоминаеи алгоритм бинарного поиска. ваще-то очень даже тру
далее, ТС как считать хэш собрался?
Стандартными способами?
Тогда если операцию проводить часто, а в твоем случае так и выглядит, то лучше проводить проверку самому, и оптимизировать ее, а иначе смысла нет, т.к. вычисление md5 - такая же долгая операция, которую ты изначально не хотел.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для скачивания картинок по поисковым запросам Бывший ПО для Web разработчика 2 25.05.2010 14:37
Сравнение двух страниц Seravin С/С++, C#, Delphi, .NET, Asm 2 02.02.2010 10:44
Хостинг с оплатой за просмотры картинок peonix Партнерки 21 23.11.2009 16:26
Новый инструмент для монетизации картинок Maxstorn Партнерки 0 14.10.2009 19:17
Samsung Spinpoint F3: терабайт на двух пластинах Fo)(a Мировые новости 1 24.09.2009 20:27



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ