Как стать автором
Обновить

Комментарии 19

НЛО прилетело и опубликовало эту надпись здесь
Закажите непосредственно у Adobe.
Экшн всего из двух операций: color range + refine edge.
Поделюсь своим методом обтравки. В своё время сильно помогало, когда клепали виньетки для школ и фотографии на документы. Снял видео. На видео грубый вариант обтравки первого попавшегося изображения, но в целом можно понять последовательность действий. Если приложить ещё немного фантазии и усилий, то метод вполне годится для массовой обтравки.
Видео
Видео почему-то иногда залипает (видимо хостинг у них слабоват) — просто отматывайте назад и оно подгружается.
В целом последовательность действий чем-то перекликается с методикой, описанной в статье.
В фотошопе выделение по цвету давно есть (Меню Select->Color Range). Статья то не про то как сделать в фотошопе, а про то как можно сделать такой инструмент, если делаешь «свой фотошоп».

У вас справа ус отклеился после дилатации.


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

В ссылке на морфологию вы забыли двоеточие после http.
Спасибо, исправила.
В первом цикле, где ищется цвет, слишком много строк кода, есть же inRange
Надо отметить что очень статья очень банально рассказывает о довольно сложной теме.
Гораздо интереснее рассказать о GrabCut и Watershed алгоритмах, а так же о их возможных вариациях.
Когда я начинала вникать в тему, мне как раз не хватало банальных примеров.
Возможно позже я напишу про другие алгоритмы.
не знаю в каком году вы начинали вникать, но по ссылке что я указывал, весь материал из статьи есть. И датировано это 3 годами ранее.
отличный пример. и предлагаю тему для следующей вашей статьи.
уверен, что у многих периодически возникает задача нормализации и очистки от мусора скана документа. ну, допустим, надо сравнивать два скана: один эталонный, и другой уже после подписания печатной копии, после повторного сканирования. понятно, что разные сканеры, разный немного размер изображений, какие-то нарушения геометрии и т.п. задача — найти отличия второго скана от эталона.
как вам тема? напишете? ;)
Юлия, какая примерно длительность обработки одного изображения?
800-900мс

В последнее время также увлекся обработкой изображений, но с целью экономии времени пишу код на Python. А так как opencv для python очень тесно связан с numpy, то и всяческие операции с изображением (которое по сути является матрицей numpy) много удобнее производить именно в матричном виде. В вашем случае я бы


  1. использовал threshold из opencv (пример могу привести позже, когда не с телефона сидеть буду) для отделения пикселей по значению нужного канала h/s/v и тут же для закрашивания их в какой-то цвет (я бы предпочел черный; почему — см. п.2)


  2. не красил изображение, а сперва сформировал бы dilated/"улучшенную" маску, а потом плпросту наложил бы ее на изображение с помощью бинарных операторов opencv (and в данном случае)

Сейчас забавы ради пишу скрипт, склеивающий стек изображений с разной плоскостью фото (для (супер-)макро нужно), там использую это подход с большим успехом =)

Мне больше HSL система координат нравится. Интуитивно понятнее.

Во первых это не сегментация. Во вторых OpenCV очень так себе. Когда я работал в R&D по темам распознавания образов и стеганографии, все лучше (по качеству и скорости) было писать самому.
Именно из алгоритмов сегментации мне больше всего понравился этот http://cs.brown.edu/~pff/segment/
а чем не понравился OpenCV? Понятно что не все есть там, но базовые примитивы оттуда удобно использовать.
Тут есть целых три проблемы.
Первая. Используя OpenCV разработчик большую часть воспринимает как набор BlackBox-ов.
Вторая. Адаптация большинства сторонних алгоритмов к использованию с OpenCV неоправданно высока. Как пример http://home.cse.ust.hk/~cstws/research/TensorVoting3D/ (собственно там TV3D).
И третья. Реализация слишком многих вещей в OpenCV вызывает недоумение по поводу их реализации. Не говоря уже об оптимизации их для реальных проектов. Например на ARM-ах без использования NEON-оа.

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории