我正在使用Kinect v2,我必须将深度信息映射到RGB图像上以处理它们:特别是,我需要知道RGB图像中的哪些像素在一定距离范围内(沿Z轴的深度);我使用C#程序获取所有数据并将其保存为图像(RGB)和txt文件(深度)。
我已经按照here和here的说明(我感谢他们分享),但我仍然遇到一些我不知道如何解决的问题。
我计算了深度传感器和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的相关文章