深度图像和彩色图像对齐

深度图像和彩色图像对齐

原因:由于RGB图像数据与深度图像数据的空间坐标系是不同的,前者的原点是RGB摄像头,后者的原点是红外摄像头,因此两者会有相应的误差。没对齐之前的结果如下图所示:(执行这个 bin/cpp-capture,我用opencv显示的)

执行bin/cpp-alignimages 实现图像对齐,如下图所示:

对齐的原理:

       深度图上的2D点转换到世界坐标的3D点,世界坐标的3D点再投影到彩色图像上;如下图所示:

  

代码如下:

void alignmentDepthandColor(const Mat depth, const Mat color, const rs::device &dev)
{
    rs::float2 pt_depth, pt_color; 
    rs::float3 pt3_depth, pt3_color;
    auto intrinDepth = dev.get_stream_intrinsics(rs::stream::depth);
    auto intrinColor = dev.get_stream_intrinsics(rs::stream::color);
    auto extrinsics = dev.get_extrinsics(rs::stream::depth, rs::stream::color);
    int y=0, x= 0;
    Mat mat = Mat::zeros(color.rows,color.cols,CV_8UC3);  
    for (int row=0; row     {
        for (int col=0; col         {
             pt_depth.x = row;
             pt_depth.y = col;
           //  cout<<"depth 2d: x="<              pt3_depth = intrinDepth.deproject(pt_depth, depth.at(row,col));
            // cout<<"depth 3d: x="<

    imshow("color2", color2);
    imwrite("color.bmp", color2);
    imshow("alignment", mat);
}

效果图:

备注:

     最后一张图是彩色图与深度图对齐后的图像,对齐图像的大小变了,需要调整成同样大小。
————————————————
版权声明:本文为CSDN博主「jay463261929」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jay463261929/article/details/53582800

你可能感兴趣的:(三维测量-植物生长)