- Регистрация
- 08.08.2016
- Сообщения
- 161
- Благодарностей
- 168
- Баллы
- 43
Всем привет!
Наверное многие знают меня по темам по ВК, ФБ и Инсте. Но если не знаете, не суть)
При работе с социальными сетями очень много внимания приходится уделять работе с изображениями. Обрезка, уникализация, очистка екзифа и многое другое. Многое, подсмотрел из апи соцсетей. Кое-что делал исходя из собственных гипотез. Сегодня я хотел бы поделиться некоторыми своими наработками по такому плану:
1. Простейшая уникализация (по большому счету для обучения работы графикой на зенке+c#)
2. Шаб по разрезке картинок для лендинга Инсты (практическая применимость на уровне медиум. Можно переделать под разные задачи)
3. Уникальный шаблон по поиску и анализу похожести изображений на основе подсчета расстояния Хемминга. (здесь практическая применимость максимальна: можно использовать в любых коммерческих проектах по работе с изображениями, создавать свои нейронки, включать в свои проекты и не бояться повторов изображений при постинге (как например делаю я). Если прикинуть, то с легкостью можно найти ещё до десятка применений)
1. Простейшая уникализация.
Алгоритм взял из одного сервиса по постингу в соцсеть.
Суть следующая:
1 Генерим массив координат картинки (пикселей), в примере 1000 значений
2 Прогоняем в цикле этот массив и присваиваем пикселю, который находится по значению массива, цвет соседнего пикселя.
На выходе картинка практически не меняется визуально, но уже другая. Для большей уникализации можно менять не на соседний, а через несколько пикселей. В этом случае картинка будет меняться визуально больше, но и уникализация выше.
Сделано максимально на c#
2. Шаб по разрезке картинок для лендинга Инсты
Была такая мода делать ленгинги для Инсты разрезанием на несколько картинок большой картинки.
Алгоритм:
1 Рассчитывается картинка как резать
2 Разрезается на 12 квадратов
3 Заполняются поля
Получаем картинки для загрузки в аккаунт. Также можно делать и для ВК, если изменить циферки. Довольно часто приходится что то резать, заполнять в изображениях. Поэтому разобраться в алгоритме думаю будет полезно.
Сделано максимально на c#
3. Уникальный шаблон по поиску и анализу похожести изображений
Ну и наконец, серьезная научная штука)
Изначально мне надо было НЕ постить в свои группы похожие посты. Т.е. собирал я их из разных групп/доноров, но похожих тематик. И вероятность того, что со временем попадется одинаковый пост стремилась к 99.99999% . Что для меня было просто возмутительно. Можно было бы конечно искать по тексту поста, но это так себе способ. Всё таки картинка может быть и с другим текстом. Поэтому было принято решение - рыть! В итоге нашелся способ определеня похожих картинок. Вот здесь он описан очень подробно.
Краткий алгоритм:
1. Уменьшаем размер картинки, чтобы видны были только наиболее выделяющиеся контуры.
Самый быстрый способ избавиться от высоких частот — уменьшить изображение. В данном случае мы уменьшаем его до 8х8, так что общее число пикселей составляет 64. Можно не заботиться о пропорциях, просто загоняйте его в квадрат восемь на восемь. Таким образом, хэш будет соответствовать всем вариантам изображения, независимо от размера и соотношения сторон.
2. Убираем цвет. Маленькое изображение переводится в градации серого, так что хэш уменьшается втрое: с 64 пикселей (64 значения красного, 64 зелёного и 64 синего) всего до 64 значений цвета.
3. Находим среднее значение яркости получившегося изображения.
4. Бинаризация картинки. Оставляем только те пиксели, которые больше среднего (считаем их за 1, а все остальные за 0).
5. Строим хэш. Переводим полученные 64 значений 1 и 0 картинки в одно 64-битное значение хэша.
Теперь осталось самая малость)) Закодить его в зенке, точнее большая часть на c#. Сказано-сделано-затестировано. Работает замечательно. Чем меньше разница хешей, тем более похожее изображение.
Сделано максимально на c#
Спасибо за внимание! Будут вопросы - пишите!
Наверное многие знают меня по темам по ВК, ФБ и Инсте. Но если не знаете, не суть)
При работе с социальными сетями очень много внимания приходится уделять работе с изображениями. Обрезка, уникализация, очистка екзифа и многое другое. Многое, подсмотрел из апи соцсетей. Кое-что делал исходя из собственных гипотез. Сегодня я хотел бы поделиться некоторыми своими наработками по такому плану:
1. Простейшая уникализация (по большому счету для обучения работы графикой на зенке+c#)
2. Шаб по разрезке картинок для лендинга Инсты (практическая применимость на уровне медиум. Можно переделать под разные задачи)
3. Уникальный шаблон по поиску и анализу похожести изображений на основе подсчета расстояния Хемминга. (здесь практическая применимость максимальна: можно использовать в любых коммерческих проектах по работе с изображениями, создавать свои нейронки, включать в свои проекты и не бояться повторов изображений при постинге (как например делаю я). Если прикинуть, то с легкостью можно найти ещё до десятка применений)
1. Простейшая уникализация.
Алгоритм взял из одного сервиса по постингу в соцсеть.
Суть следующая:
1 Генерим массив координат картинки (пикселей), в примере 1000 значений
2 Прогоняем в цикле этот массив и присваиваем пикселю, который находится по значению массива, цвет соседнего пикселя.
На выходе картинка практически не меняется визуально, но уже другая. Для большей уникализации можно менять не на соседний, а через несколько пикселей. В этом случае картинка будет меняться визуально больше, но и уникализация выше.
Сделано максимально на c#
2. Шаб по разрезке картинок для лендинга Инсты
Была такая мода делать ленгинги для Инсты разрезанием на несколько картинок большой картинки.
Алгоритм:
1 Рассчитывается картинка как резать
2 Разрезается на 12 квадратов
3 Заполняются поля
Получаем картинки для загрузки в аккаунт. Также можно делать и для ВК, если изменить циферки. Довольно часто приходится что то резать, заполнять в изображениях. Поэтому разобраться в алгоритме думаю будет полезно.
Сделано максимально на c#
3. Уникальный шаблон по поиску и анализу похожести изображений
Ну и наконец, серьезная научная штука)
Изначально мне надо было НЕ постить в свои группы похожие посты. Т.е. собирал я их из разных групп/доноров, но похожих тематик. И вероятность того, что со временем попадется одинаковый пост стремилась к 99.99999% . Что для меня было просто возмутительно. Можно было бы конечно искать по тексту поста, но это так себе способ. Всё таки картинка может быть и с другим текстом. Поэтому было принято решение - рыть! В итоге нашелся способ определеня похожих картинок. Вот здесь он описан очень подробно.
Краткий алгоритм:
1. Уменьшаем размер картинки, чтобы видны были только наиболее выделяющиеся контуры.
Самый быстрый способ избавиться от высоких частот — уменьшить изображение. В данном случае мы уменьшаем его до 8х8, так что общее число пикселей составляет 64. Можно не заботиться о пропорциях, просто загоняйте его в квадрат восемь на восемь. Таким образом, хэш будет соответствовать всем вариантам изображения, независимо от размера и соотношения сторон.
2. Убираем цвет. Маленькое изображение переводится в градации серого, так что хэш уменьшается втрое: с 64 пикселей (64 значения красного, 64 зелёного и 64 синего) всего до 64 значений цвета.
3. Находим среднее значение яркости получившегося изображения.
4. Бинаризация картинки. Оставляем только те пиксели, которые больше среднего (считаем их за 1, а все остальные за 0).
5. Строим хэш. Переводим полученные 64 значений 1 и 0 картинки в одно 64-битное значение хэша.
Теперь осталось самая малость)) Закодить его в зенке, точнее большая часть на c#. Сказано-сделано-затестировано. Работает замечательно. Чем меньше разница хешей, тем более похожее изображение.
Сделано максимально на c#
Спасибо за внимание! Будут вопросы - пишите!
- Категория
- Другое
- Номер конкурса шаблонов
- Четвертый конкурс шаблонов
- Уровень сложности
- Продвинутый
Вложения
-
22,9 КБ Просмотры: 1 418
-
30,8 КБ Просмотры: 1 013
-
13,6 КБ Просмотры: 1 546
Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.