Перейти к содержимому
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

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


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

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

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

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

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

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

  • Like 1

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


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

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

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

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

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

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

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

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


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

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

289c8d77180d28804e4555facc1eafc2-full.jp

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


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

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

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

ddd.jpg

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


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

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

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

3c2df7235c54fdab5866d7f39cdfb184-full.jp

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


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

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

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

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

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


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

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
В 01.09.2018 at 16:44, idrua сказал:

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

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

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


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

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
В 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. Производить дополнительную проверку найденных объектов. Для того чтобы найти на этом изображении линии нужна хорошая сегментация изображения, выделение краев. 

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


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

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

5b8e3a08d8bc7_sob.jpg.2520a454ed6b930545e01d884a151096.jpg

5b8e3a0b98cba_1sob.jpg.59b8c9bbb33bf7967633bf779bd19c2d.jpg

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×