Comments 19
Видео
Видео почему-то иногда залипает (видимо хостинг у них слабоват) — просто отматывайте назад и оно подгружается.
В целом последовательность действий чем-то перекликается с методикой, описанной в статье.
У вас справа ус отклеился после дилатации.
Видимо ваши перцы были не критичны к такому качеству, мне приходится быть довольно точным, автоматизировать не удаётся. Мне часто приходится травить изображения фидерных устройств, но к сожалению они сложны даже для ручной обработки, часто приходится "выдумывать" где протравить, так как фон почти не отличается от предмета. Вот примерно как и у вас.
уверен, что у многих периодически возникает задача нормализации и очистки от мусора скана документа. ну, допустим, надо сравнивать два скана: один эталонный, и другой уже после подписания печатной копии, после повторного сканирования. понятно, что разные сканеры, разный немного размер изображений, какие-то нарушения геометрии и т.п. задача — найти отличия второго скана от эталона.
как вам тема? напишете? ;)
В последнее время также увлекся обработкой изображений, но с целью экономии времени пишу код на Python. А так как opencv для python очень тесно связан с numpy, то и всяческие операции с изображением (которое по сути является матрицей numpy) много удобнее производить именно в матричном виде. В вашем случае я бы
использовал threshold из opencv (пример могу привести позже, когда не с телефона сидеть буду) для отделения пикселей по значению нужного канала h/s/v и тут же для закрашивания их в какой-то цвет (я бы предпочел черный; почему — см. п.2)
- не красил изображение, а сперва сформировал бы dilated/"улучшенную" маску, а потом плпросту наложил бы ее на изображение с помощью бинарных операторов opencv (and в данном случае)
Сейчас забавы ради пишу скрипт, склеивающий стек изображений с разной плоскостью фото (для (супер-)макро нужно), там использую это подход с большим успехом =)
Мне больше HSL система координат нравится. Интуитивно понятнее.
Именно из алгоритмов сегментации мне больше всего понравился этот http://cs.brown.edu/~pff/segment/
Первая. Используя OpenCV разработчик большую часть воспринимает как набор BlackBox-ов.
Вторая. Адаптация большинства сторонних алгоритмов к использованию с OpenCV неоправданно высока. Как пример http://home.cse.ust.hk/~cstws/research/TensorVoting3D/ (собственно там TV3D).
И третья. Реализация слишком многих вещей в OpenCV вызывает недоумение по поводу их реализации. Не говоря уже об оптимизации их для реальных проектов. Например на ARM-ах без использования NEON-оа.
Фактически это приводит к тому что, начав проект с использования OpenCV вы ограничиваете себя неким набором посредственно имплементированных алгоритмов.
Цветовая сегментация для чайников