Нам нужно построить модель цеха, в которой мы можем связать пиксельные координаты (x, y) из изображений с камеры с реальными объектами в трехмерном пространстве магазина.Изображения с камеры, которые будут служить источниками для создания такой модели, страдают от искажений типа «рыбий глаз».Следовательно, прямые линии фактически появляются в виде кривых на изображениях с камеры, и стены, кажется, встречаются друг с другом не совсем точно под прямым углом.
Мы подразделяем область на многоугольники.Каждый многоугольник на изображении относится к определенной области, такой как полка, область отображения, счетчик проверки и т. Д. Сопоставляя пиксели, попадающие в каждый многоугольник, мы хотим связать его как принадлежащий полке, соответствующей этой области.
Есть идеи, как это сделать?
Ниже приведен пример изображения магазина с помеченными полигонами:
РЕДАКТИРОВАТЬ: Мы не стремимся выяснить трехмерные координаты, нам просто нужно знать, на какую полку нанесен любой полигон.Поэтому, если пользователь нажимает на многоугольник, мы можем сказать, что он щелкнул по какой полке.
Мы можем управлять вышеописанным для больших полигонов, подобных тем, что показаны на рисунке, но полки от камеры могут быть размером всего в несколько пикселей, поэтому нам нужен какой-то вероятностный результат, говорящий, что еслипользователь щелкнул по (x, y), какова вероятность того, что он пытался щелкнуть по Полке-A, или какова вероятность того, что он пытался щелкнуть по Полке-B и т. д.
По сути, мы ищем функцию вероятности, которая бы возвращала вероятности щелчка на близлежащих объектах, когда на 2D-изображении щелкают маленький многоугольник (или пиксель).
РЕДАКТИРОВАТЬ 2: Одна вещь, которая не очевидна из примера изображения, состоит в том, что размер многоугольника может быть очень маленьким (всего несколько пикселей), а многоугольники, в свою очередь, могут быть очень близко друг к другу.
Кроме того, случай использования заключается в том, что покупатель в магазине выбирает товар с одной из полок.Пользователь приложения нажимает на точку на изображении, с которой он думает, что продукты подобраны.Теперь, поскольку полигоны настолько малы и настолько близки, пользователь может только угадать точную точку захвата, поэтому мы можем только знать, что это может быть любой из 3-4 полигонов, близких к точке щелчка.Таким образом, вопрос заключается в том, как рассчитать вероятности для этих 3-4 полигонов с учетом клика?
Как и предполагалось, расстояние клика от центра многоугольника и его площадь могут быть параметрами при расчете этой вероятности, и мне интересно, есть ли алгоритм для этого.