Перейти к содержимому
Compvision.ru
maxfashko

Алгоритм сегментации по принципу скользящего окна и вычисление контраста

Recommended Posts

9 минут назад, Smorodov сказал:

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

Сеперпиксели также позволяют уменьшить размерность задачи и поводить сегментацию изображения по меньшему количеству элементов. Можно провести каскадное преобразование или пропустить через классификатор и получить метки объектов. 

 

Ваш метод безусловно интересен, и результаты очень хорошие, но пользы от количества предоставленной по нему информации не много.

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

На сегодня очень хорошо и быстро получается определять штрихкоды на фотографиях большого размера, где штрихкод занимает 1% площади всего изображения.

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


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

По классике для сравнения объектов, обычно выделяются признаки, совокупность которых, по сути своей, является компактным представлением класса объектов, позволяющим максимально точно различать эти объекты между собой.

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

Классификатор, это такой инструмент, который позволяет вывести необходимые нам признаки, чтобы мы могли различать объекты, подавая на него новые данные. Могут быть как обучаемые, так и жестко заданные вручную. Обучаемые могут быть построены на основе простых математических правил (если a > 0.5 тогда это "кот" иначе "собака"), математической статистики (задаются распределения и выводится вероятность принадлежности объекта к заданному классу ("кот") ), или нейронных сетей (тоже бывают разные).

Как признаки, так и правила разделения классов могут быть как заданными вручную, так и обучаемыми на данных. 

см. "собственные лица" (eigen faces) как обучаемые признаки, или SIFT, FAST, LBP, SURF и т.д. как универсальные синтетические признаки (созданы вручную). 

 

 Метки объектов, это просто их удобное для компа представление (0-фон, 1-кот, 2-пес).

Каскадное преобразование, я имел ввиду проводим одно и то же действие с одним и тем же изображением но в разных масштабах. Можно изменять масштаб после обработки, например суперпикселями, а после обратным ходом, объединив суперпиксели и передав метки с наименьшего масштаба наибольшему получить сегментацию для исходной картинки. Ну это просто как вариант.

 После этого объединяем результат. Еще называется "пирамида".

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


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

>А что за информация в skin_no_skin.txt?

https://github.com/mrgloom/Simple-skin-detection/blob/master/tree/tree.py#L10

Data in format [B G R Label]

 

 

Тут пишут про размер входных изображений 600×800 http://xiaoyongshen.me/webpage_portrait/index.html

 

Matting как я понял не обязателен, он дополнительно даёт 'мягкие' границы на пушистых объектах типа волос и т.д.

 

 

p.s. векторизация и оверсегментация это другая задача.

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


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

>А что за информация в skin_no_skin.txt?

https://github.com/mrgloom/Simple-skin-detection/blob/master/tree/tree.py#L10

Data in format [B G R Label]

 

 

Тут пишут про размер входных изображений 600×800 http://xiaoyongshen.me/webpage_portrait/index.html

 

Matting как я понял не обязателен, он дополнительно даёт 'мягкие' границы на пушистых объектах типа волос и т.д.

 

 

p.s. векторизация и оверсегментация это другая задача.

Я скачал, поковырялся и понял, что без проблем это не заточить под мой пример. Начиная от переписывать код матлабовский, до проблем усреднения маски. 

Ну а обычный маттинг мне все же не подходит. Иногда граница маски на выходе моей сети слишком далека от сегментируемого объекта; выходит что я подаю на вход маттингу часть изображения заведомо относящуюся к другому классу ( это знаем только мы ). 

Его маттинг можно использовать только для головы и волос.

Выполняем поиск морды-лица на картинке, выделяем необходимые точки, например овал лица. Подаем кропнутую область в grabcut ( он кстати неплохо удаляет фон от волос). Создаем маску для grabcut, где овал зальем 1. Далее используем сегментированное после grabcut изображение для создания маски на вход маттингу, заливая область волос серым. И только после этого в дело вступает matting.

Только вот на всю сегментации уйдет около 30 секунд на процессоре. А так метод вроде рабочий.

А вообще, все же необходимо еще собрать данные для обучения. Необходимы еще человеки.

У меня не большие знания о pascal VOV****. Ведь имеются там изображения с полной аннотацией класса человек? Есть ли отличия в версиях по годам? Не считая кол-ва классов и кол-ва картинок? Какую лучше использовать?

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


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

Как варианты могут быть интересны: 

Кривые рассеяния:

https://habrahabr.ru/post/156903/#first_unread

http://lcs.ios.ac.cn/~guofu/files/vectorization/SparseImageCurves.pdf

Суперпиксели:

http://ivrl.epfl.ch/research/superpixels

 

Очень интересный метод, но а где реализацию метода нахождения контуров найти можно(желательно c++) ? Не рискую даже думать чтоб самому с нуля попробовать реализовать всё.

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


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

По кривым рассеяния не искал не знаю, есть ли открытые реализации.

По сегментации суперпикселями, вот поиграйтесь:SuperPixelSegmentation.rar

 

 

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×