Преобразование глубины Kinect из мм в пиксели
Кто-нибудь знает, сколько пикселей соответствует каждому миллиметру значения глубины в изображениях, взятых из kinect для xbox360? Я использую стандартное разрешение и настройки...
Спасибо!
1 ответ
1 пиксель соответствует количеству миллилитров, которое зависит от значения глубины этих пикселей (то есть уровня серого).
Самый простой способ получить расстояние между двумя пикселями в изображении глубины - это преобразовать эти пиксели (выраженные в пространстве глубины) в координаты реального мира (т.е. в пространстве скелета) 1. Затем вы можете рассчитать расстояние между этими точками, используя общую евклидову формулу расстояния.
Поэтому, если у вас есть два пикселя P 1 и P 2 со значениями глубины, соответственно равными D 1 и D 2, вы можете действовать следующим образом:
DepthImagePoint dip1 = new DepthImagePoint();
dip1.X = P1.x;
dip1.Y = P1.y;
dip1.Depth = D1;
DepthImagePoint dip2 = new DepthImagePoint();
dip2.X = P2.x;
dip2.Y = P2.y;
dip2.Depth = D2;
SkeletonPoint sp1 = CoordinateMapper.MapDepthPointToSkeletonPoint(DepthImageFormat.Resolution640x480Fps30, dip1);
SkeletonPoint sp2 = CoordinateMapper.MapDepthPointToSkeletonPoint(DepthImageFormat.Resolution640x480Fps30, dip2);
double dist = euclideanDistance(sp1, sp2);
1 См. Координатные пространства для получения дополнительной информации.