![]() |
Могу предложить упрощенный способ проверки совпадения изображений по гистограмме. Поскольку слово WATERMARK написано черным цветом, то на гистограмме оно будет находиться в крайнем левом углу шириной максимум 10 яркости от абсолютно черной + вносить небольшие изменения в крайний правый край гистограммы, так как буквы залиты белым цветом.
Что делаем - берем два изображения, находим гистограммы по их битмапам через .histogram(); получаем два вектора гистограмм. отрезаем немного от правой части от этих векторов (часть информации о буквах в крайней правой части, часть в крайней левой) Поскольку у букв белая заливка, то левый край вектора тоже будет затронут,его тоже нужно обрезать. Сравниваем две гистограммы. Центры гистограмм должны быть полностью идентичны Останется только подобрать края отрезания правой и левой частей гистограммы, чтобы убирать всю информацию о черных буквах с белой заливкой |
Ребят, я просто не могу удержаться от вставки этой картинки, в ответ на пост Дипа. Прошу меня простить.
http://animatika.ru/netcat_files/use...3/facepalm.jpg Цитата:
Цитата:
Цитата:
Короче, Дип. На самом деле алгоритмы распознования изображений или проекты типа http://www.tineye.com/ именно так и устроенны. Но ты не представляешь себе, сколько там мелких "но" и сколько вещей необходимо учесть при программировании таких алгоритмов. Так что, если картинки абсолютно одинаковые и отличаются только наличием ватермарка, то эту задачу лучше решить другим способом. |
iflamberg, была б моя воля, — я б вас забанил.
|
Почему? Я же попросил прощения. К тому же, это не просто "тупо"-пост, я объяснил Дипу, почему над его идеей надо еще поработать.
|
Пиу пиу, а у меня все работает =Р
Суть -пост №11 Код AS3:
Можно настраивать точность с помощью изменения переменных whiteThreshold, blackThreshold и epsilon Как оказалось, без обрезки гистограммы можно вполне обойтись Проверил на четырех фотках - определяет правильно все) Если же все таки обрезать - то сумма значений whiteThreshold и blackThreshold не должна превышать 255, я не делал проверку. (у нас 255 уровней яркости) ============================= Небольшая поправочка - попробовал поменять размер картинок с 500х500 до 150х150, оказывается не учел количество пикселей при сравнении картинок. Надо переделать функцию сравнения, чтобы считала проценты пикселей с заданной яркостью, а не само количество пикселей Код AS3:
Теперь можно сравнивать даже изображения с разным размером, у меня во всех случаях при epsilon = 2 правильно определило |
О, класс, про therehold я и не подумал. Хотя особо не думал.
Вообще я про свою задачу для arp: https://bitbucket.org/k0t0vich/arp Цитата:
|
Почему нет предложений про нейросеть? Удобная же задача)))
|
Сравнение такого плана (опознание картинок не точно похожих друг на друга) - это задача из области самообучающихся програм... Но, естесственно, если можно как-то схитрить, то имеет смысл (т.е. если картинки, за исключением группы пикселов идентичны, а не просто похожи.
Что да имело бы смысл сделать: изначально сравнивать не все картинки со всеми картинками, а вычислить хеш от каждой картинки, и сравнивать хеши (если создать хеши длиной 32 бита, то сравнения будут очень быстрыми). Можно воспользоваться CRC для этого, или тот же MD5 - главное быстрый алгоритм и короткий хеш. Для исключения вероятности потерять совпадающие картинки (которая будет очень незначительной в ситуации с хешированием, но все же будет, если где-то водяной знак не так приклеился, или во время приклеивания другие части картинки как-то исказились) можно сделать блум фильтр, для груп пикселов и сравнивать блум фильтры от картинок. Т.е. разделить картинки на непрерывные блоки, и сложить все пикселы блока в один блум фильтр. Такие блоки будет гораздо быстрее сравнить. Еще варианты: для предварительной фильтрации использовать вычисление гистограмы, или усредненного цвета всей картинки. Добавлено через 2 минуты Цитата:
|
Олег какой такой md5? Картинки не на 100% идентичны.
|
Цитата:
Цитата:
|
| Часовой пояс GMT +4, время: 10:04. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.