2012-02-08 2 views
5

Позволяет сказать, что у меня есть киндекс, указывающий на пол.Использование Kinect для обнаружения объектов на полу

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

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

ответ

8

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

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

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

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

Finding the plane

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

+0

это отличный ответ, вы сделали много kinect? –

+0

Ну. Я сделал некоторые работы с ним, и сделал некоторые проекты компьютерного зрения тоже. Хороший взгляд! –

+0

Я хочу создать игру в понг, используя футбол для управления веслами. –

Смежные вопросы