- Регистрация
- 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#
Спасибо за внимание! Будут вопросы - пишите!

- Номер конкурса шаблонов
- Четвертый конкурс шаблонов
- Уровень сложности
- Продвинутый
- Категория
- Другое





