如何使用Matlab

时间:2016-02-16 16:23:16

标签: matlab mapping kinect

我正在使用Kinect v2,我必须将深度信息映射到RGB图像上以处理它们:特别是,我需要知道RGB图像中的哪些像素在一定距离范围内(沿Z轴的深度);我使用C#程序获取所有数据并将其保存为图像(RGB)和txt文件(深度)。

我已经按照herehere的说明(我感谢他们分享),但我仍然遇到一些我不知道如何解决的问题。

我计算了深度传感器和RGB相机之间的旋转(R)和平移(T)矩阵,以及它们的内在参数。

我创建了P3D_d(与深度传感器相关的世界坐标中的深度像素)和P3D_rgb(与rgb相机相关的世界坐标中的深度像素)。

row_num = 424;
col_num = 512;

P3D_d = zeros(row_num,col_num,3);
P3D_rgb = zeros(row_num,col_num,3);
cont = 1;
for row=1:row_num
    for col=1:col_num
        P3D_d(row,col,1) = (row - cx_d) * depth(row,col) / fx_d;
        P3D_d(row,col,2) = (col - cy_d) * depth(row,col) / fy_d;
        P3D_d(row,col,3) = depth(row,col);

        temp = [P3D_d(row,col,1);P3D_d(row,col,2);P3D_d(row,col,3)];

        P3D_rgb(row,col,:) = R*temp+T;
    end
end

我创建了P2D_rgb_x和P2D_rgb_y。

P2D_rgb_x(:,:,1) = (P3D_rgb(:,:,1)./P3D_rgb(:,:,3))*fx_rgb+cx_rgb;
P2D_rgb_y(:,:,2) = (P3D_rgb(:,:,2)./P3D_rgb(:,:,3))*fy_rgb+cy_rgb;

但现在我不明白如何继续。

假设校准参数正确,我试图点击深度(坐标:row_d,col_d)和rgb(坐标:row_rgb,col_rgb)图像中的定义点,但是P2D_rgb_x(row_d, col_d)与row_rgb完全不同,P2D_rgb_y(row_d,col_d)与col_rgb完全不同。

那么,究竟是什么意思P2D_rgb_x和P2D_rgb_y?如何使用它们将深度值映射到rgb图像上或仅获取某个RGB像素的深度?

我会给予任何建议或帮助!

PS:我还在此链接上发表了关于MathWorks的相关文章

0 个答案:

没有答案