Jump to content
Compvision.ru
korvintag

Использование OpenCV для складских роботов

Recommended Posts

Для системы управления складскими роботами необходимо определять погрешности монтажников при варке стеллажей. С этой целью для каждой ячейки делается фото, и сейчас живой человечек рисует в каждом таком фото желтый крестик (см. фото с красным кружочком и зеленым контуром). Пока ячеек было 2-3000, было терпимо. Сейчас планируется робосклад на 100000 ячеек, и решили делать распознавание образов (нужно определить край уголка). Образы могут быть сами разные, в т.ч. с перегороженным куском уголка (см. другие фото). Хотим использовать библиотеку OpenCV (emgucv для C#). Вопрос - в какую сторону копать?
- анализ изображений (выбор отличительных признаков, морфология, поиск контуров, гистограммы)
- или обнаружение объектов, в частности лиц
- или еще что?
Сгодятся ли для этой задачи контуры? Или, из-за игры теней и частичного перекрытия самим роботом, контуры использовать не получится?

Еще чисто теоретически задача решаема для дневного освещения? Или только ночью (см. фото в аттаче)?

Etalon_001U000(Xue=39+0,Yue=2037-2).jpg

000U001(Xue=428+9,Yue=166-23).jpg

000U002(Xue=427-42,Yue=167-38).jpg

000U024(Xue=427+38,Yue=169-24).jpg

Share this post


Link to post
Share on other sites

Чистый "анализ изображения" тут мало пригоден, у целевого объекта нет особых отличительных признаков.

Я вижу тут два варианта:

  1. "Классический" поиск объекта (hog, haar и т.п.) 
  2. Глубокий сетки

Работать должно и днем и ночью, ничего критичного тут нет.

Но вообще хорошо бы при сборе этих ячеек красить уголки в яркий цвет и задача упросится в разы.

  • Like 1

Share this post


Link to post
Share on other sites
5 часов назад, iskees сказал:

Чистый "анализ изображения" тут мало пригоден, у целевого объекта нет особых отличительных признаков.

Я вижу тут два варианта:

  1. "Классический" поиск объекта (hog, haar и т.п.) 
  2. Глубокий сетки

Работать должно и днем и ночью, ничего критичного тут нет.

Но вообще хорошо бы при сборе этих ячеек красить уголки в яркий цвет и задача упросится в разы.

Спасибо!
Буду пробовать!

Share this post


Link to post
Share on other sites

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

289c8d77180d28804e4555facc1eafc2-full.jp

Share this post


Link to post
Share on other sites
10 часов назад, idrua сказал:

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

Поиск нужно осуществлять только в части изображения (там где ожидается примерно увидеть край уголка ячейки). См. аттач ниже - я пометил зеленым прямоугольником.
Конечный результат - маленький желтенький крестик - он на пересечении зеленых краешков уголка - см. самое первое фото в ветке.

ddd.jpg

Share this post


Link to post
Share on other sites
3 часа назад, korvintag сказал:

Поиск нужно осуществлять только в части изображения (там где ожидается примерно увидеть край уголка ячейки). См. аттач ниже - я пометил зеленым прямоугольником.

Ответ не совсем понятен. Т.е. можно смело вырезать и удалить 50% изображения  и оставить только центр? Ведь именно там "ожидается примерно увидеть край уголка ячейки". Или как?
Чем отличается нужный край ячейки от остальных краев на фото? Он всегда под одним углом?

3c2df7235c54fdab5866d7f39cdfb184-full.jp

Share this post


Link to post
Share on other sites
1 час назад, idrua сказал:

Ответ не совсем понятен. Т.е. можно смело вырезать и удалить 50% изображения  и оставить только центр? Ведь именно там "ожидается примерно увидеть край уголка ячейки". Или как?

Чем отличается нужный край ячейки от остальных краев на фото? Он всегда под одним углом?

Именно так - вырезать и удалить :-)
Нужный край - это нижний левый край текущей ячейки. Т.е. он отличается логически, но не материалистически. Другие края тоже могут быть нижними левыми краями уже других ячеек. Потому и обрезка нужна.

Share this post


Link to post
Share on other sites
8 часов назад, korvintag сказал:

Именно так - вырезать и удалить :-)
Нужный край - это нижний левый край текущей ячейки. Т.е. он отличается логически, но не материалистически. Другие края тоже могут быть нижними левыми краями уже других ячеек. Потому и обрезка нужна.

Задача мне кажется интересной. Могу попробовать нейросетями выделить зону с нужной ячейкой. Но есть проблема с картинками. Для обучения потребуется 350 картинок(для начала).

Share this post


Link to post
Share on other sites
В 01.09.2018 at 16:44, idrua сказал:

Задача мне кажется интересной. Могу попробовать нейросетями выделить зону с нужной ячейкой. Но есть проблема с картинками. Для обучения потребуется 350 картинок(для начала).

К сожалению, пока есть всего лишь 250.

Share this post


Link to post
Share on other sites
44 минуты назад, korvintag сказал:

К сожалению, пока есть всего лишь 250.

Чем больше картинок, тем лучше. Попробовать могу и на 250, но это бейзлайн, однозначно.

Share this post


Link to post
Share on other sites
В 31.08.2018 at 14:43, korvintag сказал:

Для системы управления складскими роботами необходимо определять погрешности монтажников при варке стеллажей. С этой целью для каждой ячейки делается фото, и сейчас живой человечек рисует в каждом таком фото желтый крестик (см. фото с красным кружочком и зеленым контуром). Пока ячеек было 2-3000, было терпимо. Сейчас планируется робосклад на 100000 ячеек, и решили делать распознавание образов (нужно определить край уголка). Образы могут быть сами разные, в т.ч. с перегороженным куском уголка (см. другие фото). Хотим использовать библиотеку OpenCV (emgucv для C#). Вопрос - в какую сторону копать?
- анализ изображений (выбор отличительных признаков, морфология, поиск контуров, гистограммы)
- или обнаружение объектов, в частности лиц
- или еще что?
Сгодятся ли для этой задачи контуры? Или, из-за игры теней и частичного перекрытия самим роботом, контуры использовать не получится?

Еще чисто теоретически задача решаема для дневного освещения? Или только ночью (см. фото в аттаче)?

Etalon_001U000(Xue=39+0,Yue=2037-2).jpg

000U001(Xue=428+9,Yue=166-23).jpg

000U002(Xue=427-42,Yue=167-38).jpg

000U024(Xue=427+38,Yue=169-24).jpg

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

Share this post


Link to post
Share on other sites

Пример использования  выделения краев (Соболя):

5b8e3a08d8bc7_sob.jpg.2520a454ed6b930545e01d884a151096.jpg

5b8e3a0b98cba_1sob.jpg.59b8c9bbb33bf7967633bf779bd19c2d.jpg

Осталось найти вертикальные и горизонтальные линии, которых не так уж и много. Могу выполнить данную задачу под ключ.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×