Использование Kinect для обнаружения объектов на полу - PullRequest
5 голосов
/ 08 февраля 2012

Допустим, у меня есть Kinect, указывающий на пол.

Если я положу 3 или 4 объекта на пол, как я могу определить плоскость, на которой находятся эти объекты?

Как я могу обнаружить ярко окрашенные объекты на этом этаже?

1 Ответ

8 голосов
/ 08 февраля 2012

Kinect возвращает вам матричную deph-карту, которая представляет расстояние от любой поверхности до датчика, и, следуя модели камеры с точечным отверстием , можно выровнять каждый показатель глубины с соответствующим значением RGB. Я буду считать, что вы уже знаете, как соотнести каждый пиксель матрицы глубины с его X, Y, Z в пространстве и значением RGB. Если нет, вам нужно будет провести дальнейшие исследования и понять, как осуществляется стереокорреляция между датчиком глубины и камерой RGB.

Вы задали два совершенно разных вопроса здесь. Первый легко решаем с некоторым базовым понятием геометрии, но сначала необходимо решить второй, чтобы найти положение объекта в пространстве.

Существует несколько подходов к поиску ярко окрашенных объектов. Если ваш датчик будет записывать статическую сцену, можно использовать Фоновое вычитание . Это даст вам двоичное изображение, представляющее пиксели с различными значениями от ранее обученной фоновой модели. Поскольку у ваших объектов явно будут более яркие цвета, чем у фона, вы можете просто применить пороговая сегментация . Просто преобразуйте RGB в изображение HSL и посмотрите на более высокие значения яркости. Есть несколько других методов, исследуйте их, если они не решают вашу проблему. После того, как оба эти метода вернут вам двоичное изображение с каплями. Вы можете использовать центр этих сгустков в качестве координат матрицы ваших ярких объектов.

С 3 центральными каплями A ', B' и C 'вы сможете найти самолет, который вы ищете, как показано на рисунке ниже:

Finding the plane

Объяснение: Плоскость можно представить в виде точки (положение) и нормали (ориентация). Учитывая, что все ваши объекты будут точно в той плоскости, которую вы пытаетесь найти, все, что вам нужно, это 3 точки, A, B, C, которые будут представлять треугольник внутри этой плоскости. Эта нормаль треугольника равна (A - B) x (C - B) - , здесь x представляет собой перекрестное произведение - и совпадает с плоскостью. Таким образом, ваш самолет будет любым из этих трех точек и этого нормального треугольника. Если размеры объекта значительны, вам необходимо принять их во внимание, чтобы определить положение в плоскости.

...