1 место Большой пак для работы с изображениями: уникализация, нарезка и анализ схожести изображений

  • Автор темы Автор темы spesy
  • Дата начала Дата начала

spesy

Активный пользователь
Регистрация
08.08.2016
Сообщения
161
Реакции
168
Баллы
43
Всем привет!
Наверное многие знают меня по темам по ВК, ФБ и Инсте. Но если не знаете, не суть)

При работе с социальными сетями очень много внимания приходится уделять работе с изображениями. Обрезка, уникализация, очистка екзифа и многое другое. Многое, подсмотрел из апи соцсетей. Кое-что делал исходя из собственных гипотез. Сегодня я хотел бы поделиться некоторыми своими наработками по такому плану:
1. Простейшая уникализация (по большому счету для обучения работы графикой на зенке+c#)
2. Шаб по разрезке картинок для лендинга Инсты (практическая применимость на уровне медиум. Можно переделать под разные задачи)
3. Уникальный шаблон по поиску и анализу похожести изображений на основе подсчета расстояния Хемминга. (здесь практическая применимость максимальна: можно использовать в любых коммерческих проектах по работе с изображениями, создавать свои нейронки, включать в свои проекты и не бояться повторов изображений при постинге (как например делаю я). Если прикинуть, то с легкостью можно найти ещё до десятка применений)

1. Простейшая уникализация.

5ca06e8b28a52e88b88eeea8fcc20ee8-1024x683.jpg


Алгоритм взял из одного сервиса по постингу в соцсеть.
Суть следующая:
1 Генерим массив координат картинки (пикселей), в примере 1000 значений
2 Прогоняем в цикле этот массив и присваиваем пикселю, который находится по значению массива, цвет соседнего пикселя.
На выходе картинка практически не меняется визуально, но уже другая. Для большей уникализации можно менять не на соседний, а через несколько пикселей. В этом случае картинка будет меняться визуально больше, но и уникализация выше.
Сделано максимально на c#

2. Шаб по разрезке картинок для лендинга Инсты

178411-358458-1-1540589255.jpg


Была такая мода делать ленгинги для Инсты разрезанием на несколько картинок большой картинки.
Алгоритм:
1 Рассчитывается картинка как резать
2 Разрезается на 12 квадратов
3 Заполняются поля
Получаем картинки для загрузки в аккаунт. Также можно делать и для ВК, если изменить циферки. Довольно часто приходится что то резать, заполнять в изображениях. Поэтому разобраться в алгоритме думаю будет полезно.
Сделано максимально на c#

3. Уникальный шаблон по поиску и анализу похожести изображений

photo_2019-09-10_17-15-05.jpg


Ну и наконец, серьезная научная штука):dq:
Изначально мне надо было НЕ постить в свои группы похожие посты. Т.е. собирал я их из разных групп/доноров, но похожих тематик. И вероятность того, что со временем попадется одинаковый пост стремилась к 99.99999% . Что для меня было просто возмутительно. Можно было бы конечно искать по тексту поста, но это так себе способ. Всё таки картинка может быть и с другим текстом. Поэтому было принято решение - рыть! В итоге нашелся способ определеня похожих картинок. Вот здесь он описан очень подробно.
Краткий алгоритм:
1. Уменьшаем размер картинки,
чтобы видны были только наиболее выделяющиеся контуры.
Самый быстрый способ избавиться от высоких частот — уменьшить изображение. В данном случае мы уменьшаем его до 8х8, так что общее число пикселей составляет 64. Можно не заботиться о пропорциях, просто загоняйте его в квадрат восемь на восемь. Таким образом, хэш будет соответствовать всем вариантам изображения, независимо от размера и соотношения сторон.
2. Убираем цвет. Маленькое изображение переводится в градации серого, так что хэш уменьшается втрое: с 64 пикселей (64 значения красного, 64 зелёного и 64 синего) всего до 64 значений цвета.
3. Находим среднее значение яркости получившегося изображения.
4. Бинаризация картинки. Оставляем только те пиксели, которые больше среднего (считаем их за 1, а все остальные за 0).
5. Строим хэш. Переводим полученные 64 значений 1 и 0 картинки в одно 64-битное значение хэша.
Теперь осталось самая малость)) Закодить его в зенке, точнее большая часть на c#. Сказано-сделано-затестировано. Работает замечательно. Чем меньше разница хешей, тем более похожее изображение.
Сделано максимально на c#

Спасибо за внимание! Будут вопросы - пишите!:bt:
 
Номер конкурса шаблонов
  1. Четвертый конкурс шаблонов
Уровень сложности
Продвинутый
Категория
  1. Другое

Вложения

Лайк. 3 Способ как раз есть куда применить, только наоборот в поиске похожего изображения)
 
  • Спасибо
Реакции: spesy
Кайф, запилю к себе в проект полюбому что-то :)
 
  • Спасибо
Реакции: spesy
Отлично! Особенно впечатлил и порадовал алгоритм проверки изображений на похожесть. Прикручу к своим шаблонам.
 
Годно! Как раз надо похожие изобрадения фильтровать.
 
  • Спасибо
Реакции: spesy
Спасибо за хорошие отзывы! Если интересно, то можем совместно накидать варианты куда можно приделать проверку изображений)
 
  • Спасибо
Реакции: kagorec
Не пойму, как пользоваться первым шаблоном (простая уникализация). Путь к первой картинке, путь ко второй картинке. Шаблон сравнивает их или уникализирует?
 
  • Спасибо
Реакции: spesy
Не пойму, как пользоваться первым шаблоном (простая уникализация). Путь к первой картинке, путь ко второй картинке. Шаблон сравнивает их или уникализирует?
первый путь - исходная картинка
второй путь - уникализированная
 
  • Спасибо
Реакции: Danko33
Можно ли как-то "Увеличить четкость распознавания"? Я сейчас сравниваю разные части на одной картинке, выдало 3 места с минимальным значением, но мне нужно обязательно только одно самое подходящее
 
Можно ли как-то "Увеличить четкость распознавания"? Я сейчас сравниваю разные части на одной картинке, выдало 3 места с минимальным значением, но мне нужно обязательно только одно самое подходящее
в этом алгоритме достаточно сложно увеличить градацию. Для увеличения четкости нужно использовать алгоритм основанный на расчете pHash. Он будет гораздо медленнее, но будет более терпимее к изменениям картинки. Но я подумаю как тут можно увеличить шаг.
 
Для большей уникализации можно менять не на соседний, а через несколько пикселей
Здравствуйте, подскажите пожалуйста какие параметры менять, что бы добиться большей уникализации, что-то никак не пойму. И спасибо за шаблоны.
 
  • Спасибо
Реакции: spesy
Попробывал уникализатор, для яндекса не помогло!:(
 
Здравствуйте, подскажите пожалуйста какие параметры менять, что бы добиться большей уникализации, что-то никак не пойму. И спасибо за шаблоны.
Приветствую! Для более точного сравнения надо использовать алгоритм с вычислением pHash он похож (он в статье есть), но требует доработки. запланировал его сделать, т.к. попросило уже 4 человека. Поэтому примерно через 2 недели выложу его здесь. Пока просто ахтунг по времени.
Попробывал уникализатор, для яндекса не помогло!:(
яндекс и вообще поисковики используют алгоритм сравнения изображений из п.3 статьи. Поэтому надо или увеличивать шум или делать вращения/отображения картинки.
 
  • Спасибо
Реакции: Lanidor и daVinchi
Приветствую! Для более точного сравнения надо использовать алгоритм с вычислением pHash он похож (он в статье есть), но требует доработки. запланировал его сделать, т.к. попросило уже 4 человека. Поэтому примерно через 2 недели выложу его здесь. Пока просто ахтунг по времени.
Вероятно не правильно меня поняли... или я не понял :) я спрашивал за первый шаблон - уникализатор. Вы написали "Для большей уникализации можно менять не на соседний, а через несколько пикселей ". Как это реализовать? Если я чего-то не понял - извините)
 
яндекс и вообще поисковики используют алгоритм сравнения изображений из п.3 статьи. Поэтому надо или увеличивать шум или делать вращения/отображения картинки.
А в чем тогда смысл такой уникализации?
 
Вероятно не правильно меня поняли... или я не понял :-) я спрашивал за первый шаблон - уникализатор. Вы написали "Для большей уникализации можно менять не на соседний, а через несколько пикселей ". Как это реализовать? Если я чего-то не понял - извините)
Вот эта строчка отвечает за замену на соседний пиксель - http://joxi.ru/nAyO6BPtgDpn1m +1 это смещение координаты на 1 . Если сделть смещение на +10 то будет картинка не такая четкая и более уникализированная.
Также совсем просто можно добавить инструментами кубика зенки Обработка изображений - поворот картинки, отображение и генерация exif . Это я не стал делать в примере, потому как реализации этого уже есть на форуме.
Всё в сочетании дает хороший универсальный результат.
 
  • Спасибо
Реакции: Lanidor
Здраствуйте @spesy.
2. Шаб по разрезке картинок для лендинга Инсты - режет картинки. У вас 3м пунктом указано, 3 Заполняются поля.
У меня получилось только разрезать. Подскажите как заполнять поля, где увидеть поля, как их редактировать?
 
2. Шаб по разрезке картинок для лендинга Инсты - режет картинки. У вас 3м пунктом указано, 3 Заполняются поля.
ага да, заполняем посты с этими картинками в аккаунте инсты. Только последовательность не перепутать
 
это нечто на уровне: лишь бы ляпнуть...
из первого шаба - то что ты взял массив координат и пристроил ему сбоку пиксель это всё супер, можно внятно объяснить - зенка этого кренделя побрила сама или всё же нашла похожее фото в сети?
я к примеру потестил только первый шаб и нигде ничего уникализированного не нашёл, все поисковики прекрасно видят неуникальность фоток, к тому же фотки теряют качество многократно...
сам то прочти свой пост глазами стороннего наблюдателя, тут далеко не экстрасексы и не всем ясно что у кого в голове...
 
Для более точного сравнения надо использовать алгоритм с вычислением pHash... запланировал его сделать, т.к. попросило уже 4 человека.
Еще не передумали? Попробуете? Третий вариант работает совсем непредсказуемо, и точность.... Ну совсем никакая, как и определяет сходство с полностью другим текстом, так и сами копии текстов.
 
Еще не передумали? Попробуете? Третий вариант работает совсем непредсказуемо, и точность.... Ну совсем никакая, как и определяет сходство с полностью другим текстом, так и сами копии текстов.
да, разбираюсь, непредсказуемо почему? вроде бы дубликаты очень хорошо отсеивает
 
да, разбираюсь, непредсказуемо почему? вроде бы дубликаты очень хорошо отсеивает
Хорошо, продолжай )) Одинаковые по размеру скриншоты из соц-сетей, скорее всего отсеивать будет хорошо. А изобраджения разного размера, с разницей в иконках или фото одного и того же человека, почти одни и те же цифры может показывать. Т. к., абсолютно разные человек на фото, но показатель схожести может быть выше (т. е., ближе к нулю), чем фото одного и того же человека. Но это так, с текстами такое же, для обычных постов из соц-сети я думаю будет норм. Я пробовал например скопировать часть текста с форума, помещать в word и менять стили, часто совсем разные тексты показывает, что они ближе похожие, чем одни и те же тексты, но уже с разными стилями, размер шрифта, картинки и т. п.
 
Здравствуйте ребят, может поможете.
хотим убрать лого с картинки, как переделать код чтоб уникализатор работал конкретно в определенных местах (там где лого)?
 
хотим убрать лого с картинки, как переделать код чтоб уникализатор работал конкретно в определенных местах (там где лого)?
нужно разделить картинку на части = размеру лого и прогнать
 
Шаб Unik.xmlz не делает рандом. Правильно?
(P.S. Прошу прощения, что C# не умею читать)
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)