39 сообщений в этой теме

Интересны Ваши идеи. Конечно можно было бы заполнять полученные сегменты кругами и другими фигурами. Можно заполнять фигурами с ободками, прямоугольники будут в виде кирпичной кладки. Развитие редактора в этом направлении - это арт-искусство, но нам более интересно техническое применение. По поводу сегментации написаны сотни статей, защитили десятки диссертаций, а по пост сегментной обработке очень мало информации. Может потому что не получены практические результаты?

http://www.nihilogic.dk/labs/evolving-images/ - ответ 404

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да я в общем то не про заполнение фигурами говорю, просто можно рассматривать такое изображение как некоторую функцию от небольшого количества параметров.

То есть у нас имеется генератор изображений, выход которого зависит от вектора параметров.

В зависимости от значений этих параметров, изображение выходит более или менее похожим на оригинал.

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

То есть изменяя параметры, мы максимизируем или минимизируем значение целевой функции.

Целевая функция, определяет формально что мы хотим. Допустим мы хотим чтобы изображения были похожи, добавляем в функцию измеритель похожести (PSNR например), хотим чтобы изображение было разумного размера и, следовательно, добавляем получаемый размер со знаком минус, т.к. хотим меньше, после этого балансируем слагаемые при помощи коэффициентов.

Дальше запускаем оптимизацию целевой функции от параметров.

 

Что касается пост обработки, то думается тут графовые методы должны неплохо работать (graph cut и ему подобные).  

Ну и вот статейка http://graphicon.ru/html/2006/proceedings/papers/wr54_86_ZaugolnovaYurin.pdf близкая к теме ну на хабре https://habrahabr.ru/company/intel/blog/266347/ ну и марковские поля https://inclass.kaggle.com/c/mrf .

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мне кажется, что одним из самых продуманных и математически обоснованных методов сегментации являются суперпиксели. Они локализованы, достаточно структурированы и, самое главное, достаточно понятно, что с ними делать дальше. Можно трекать их на видео, можно с уверенностью сказать, что какой-нибудь большой ошибки в сегментации не будет (как тот же flood fill с большим порогом). Прекрасно сокращают размерность по сравнению с обычными пикселями и не приносят лишней сложности.

Вот.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
18 часов назад, Smorodov сказал:

Ну и вот статейка http://graphicon.ru/html/2006/proceedings/papers/wr54_86_ZaugolnovaYurin.pdf близкая к теме ну на хабре https://habrahabr.ru/company/intel/blog/266347/ ну и марковские поля https://inclass.kaggle.com/c/mrf .

Спасибо, буду разбирать.

По поводу коэффициентов сегментации, мы выложили редактор в открытый доступ с надеждой, что какое то количество людей им будет пользоваться и расскажут, какие коэффициенты использовались в том или ином случае. Так же важна предварительная обработка исходного изображения, такая как размывка и преобразование цветов, то что делается онлайн трассировщике, ссылку на который Вы давали. Для преобразования цветов, есть мысли выполнять цветную гистограмму и оставлять ограниченное количество цветов. В трассировщике онлайн максимальное количество цветов всего 32!!! Это очень мало. Начинать надо с 256 и до 4096 цветов для получения более или менее реалистичного изображения. Алгоритм цвета наиболее часто встречаемые заполняются в таблицу, а остальные цвета заменяются на ближайшие из таблицы.

15 часов назад, Nuzhny сказал:

Мне кажется, что одним из самых продуманных и математически обоснованных методов сегментации являются суперпиксели. Они локализованы, достаточно структурированы и, самое главное, достаточно понятно, что с ними делать дальше. Можно трекать их на видео, можно с уверенностью сказать, что какой-нибудь большой ошибки в сегментации не будет (как тот же flood fill с большим порогом). Прекрасно сокращают размерность по сравнению с обычными пикселями и не приносят лишней сложности.

Вот.

Получаемые нами сегменты можно рассматривать, как суперпиксели? Получили мы суперпиксели, как их дальше использовать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 minutes ago, 2expres said:

Получаемые нами сегменты можно рассматривать, как суперпиксели? Получили мы суперпиксели, как их дальше использовать?

Нет, у вас это не суперпиксели, а какие-то регионы.

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

Например:

 

Да, маленькие объекты не всегда правильно сегментируются, не всегда точно они повторяют границы (надо просто уменьшить размер суперпикселя). Но мы всегда можем быть уверены, что объект сегментировался примерно правильно. Если по размерам пешеход занимает примерно 2х4 суперпикселя, то, даже если он визуально сливается с фоном (стоит в тени, такое повсеместно встречается), можно спокойно перебирать блоки 2х4 суперпикселя и распознавать в них пешехода. Он не сольётся с фоном в единый сегмент, как при том же flood fill или других методах сегментации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Детектор движения можно реализовать и без суперпикселей, применяя сегментацию. Сравнили 2 картинки, нашли разность между нами. Предположим белый фон - это тот что не меняется, черным это изменение между 2 картинками (перемещаемые объекты). Провели сегментацию. Учитывая, что у нас только 2 цвета черный и белый сегментация будет очень быстрой. Самый большой черный сегмент и будет перемещаемым объектом, малые сегменты, которые могут быть из-за дождя, снега и/или ветра отбрасываем. Далее находим контур этого объекта и подсвечиваем. Как на Ваш взгляд нет тут подводных камней?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если бы все было так просто, то не было бы огрмной кучи алгоритмов вычитания фона: https://www.behance.net/gallery/3943089/BGS-Library-A-Background-Subtraction-Library , а они есть, ибо снег, дождь, туман, тени, листья, трава, пыль, солнечный свет, который постоянно меняется, шум в сеноре камеры, ветер качающий камеру.... не дают делать простые алгоримы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
33 minutes ago, 2expres said:

Детектор движения можно реализовать и без суперпикселей, применяя сегментацию. Сравнили 2 картинки, нашли разность между нами. Предположим белый фон - это тот что не меняется, черным это изменение между 2 картинками (перемещаемые объекты). Провели сегментацию. Учитывая, что у нас только 2 цвета черный и белый сегментация будет очень быстрой. Самый большой черный сегмент и будет перемещаемым объектом, малые сегменты, которые могут быть из-за дождя, снега и/или ветра отбрасываем. Далее находим контур этого объекта и подсвечиваем. Как на Ваш взгляд нет тут подводных камней?

С детектором движения всё намного сложнее. Вон в последней коллекции PETS2017 надо детектировать катера на воде. А там волны!

Я говорю не о детекторе движения, а о детекторе объектов, не обязательно его делать на видео, можно на изображении. Если использовать суперпиксели, то можно делать детектор с шагом в суперпиксель. И размер объекта подбирать кратным суперпикселям. А обычно рамку сдвигают по одному пикселю, что очень медленно. В качестве примера прикрепил статью по поиску автомобилей на снимке.

Возьмём другой пример: сегментацию на небо, здания, зелень, дорога. Типичная задача для камер, установленных в машине (навигация, приложения типа iOnRoad, всевозможная помощь водителю). Можно проводить сегментацию как в вашем примере, деля кадр на куски разного размера и формы. А дальше что? Как узнать, к чему относится тот или иной сегмент? Как обучить ту же нейросеть классифицировать сегменты по указанным выше типам? Я не знаю.

Чаще всего нейросети подают кадр целиком и она классифицирует, можно сказать, попиксельно. Что накладно.

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

jiang2015.pdf

1 пользователь нравится это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо, за ответы. Оставляю идею реализации детектора движению - значит, не мое это.

Тогда хочу реализовать определить товара соответствует он штрихкоду или нет. Это может быть интересно совместно с определителем штрихкодов, который я уже реализовал. Там нет ветра, снега и с тенями проще, можно сделать искусственное освещение. Товар, так же как и штрихкод должен определяться под любым углом и сравниваться с базой данных. Должно производится так же автоматическое формирование базы данных, т.е. раз сфотографировав новый товар он автоматически заносится в базу данных. Никто не встречал готовых решений в этом направлении?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот эта штука умеет искать по штрих коду в google:

https://play.google.com/store/apps/details?id=com.google.zxing.client.android&hl=ru

и вот эта (правда она использует внешний детектор кодов, например тот что выше) и умеет искать по внешнему виду упаковки тоже:

https://play.google.com/store/apps/details?id=com.google.android.apps.unveil&hl=ru

Плюс встречал сканеры акцизных марок, и винных этикеток с отзывами о винах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

http://simd.sourceforge.net/help/group__simd__overview.html

Можете сравнить свой asm код с этой simd реализацией.

По sobel:

http://simd.sourceforge.net/help/group__sobel__filter.html

 

 

1 пользователь нравится это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сегодня залил новую версию графического редактора с элементами компьютерного зрения Лубок. Что нового:

Реализовал преобразование полноцветных изображений в оптимальную палитру цветов методом медианного среза (оптимальная палитра - это не фиксированные значения цветов, а оптимальные цвета, взятые из изображения). Изображение можно разбить на 2-32 цвета, что бывает очень удобно для определения объектов. 

Как пользоваться: После загрузки изображения выбрать Эффекты-Фильтр- Цветовая палитра. Количество цветов задается от 2 до 32 плавно, фиксировано задается 256 и 1024. После каждого преобразования не забывайте делать Отмена (Ctrl_Z).

Так же в продолжении темы: 

 

Решил сделать у себя быструю "глубокую" сегментацию, предварительно  переведя изображение в палитру из 2….32 цветов, а затем выполнить очень быструю "легкую" сегментацию. Прочитал, что в GIMPе применяется метод медианного сечения. Применил у себя этот метод, т.к. он легко ложится на ассемблер. Скорость преобразования я получил высокую, раз в 100 выше чем в GIMPе. 16 мега пиксельную фотографию преобразует в 256 цветную палитру за 0,3 секунды. Но качество немного хуже чем GIMPе. Что можно сделать для повышения качества? Какой алгоритм применен в GIMP`е?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну можно посмотреть исходники GIMP-а.

У них там своя библиотека функций с использованием SIMD, но все можно выковырять при определенной настойчивости.  

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
17 минут назад, Smorodov сказал:

все можно выковырять при определенной настойчивости.

Одной настойчивости недостаточно. Требуется очень большое время на освоение этого материала. А хочется получить быстрый результат. Может кто то уже с этим разбирался?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!


Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу