(一)PCL库 ICP配准

简介:通过ICP配准,对齐CBCT提取牙齿与口内扫描获取牙冠,结果失败。原因:可能是因为两者重叠点云数据少,而不重叠部分过多,待后续分析。

1、CBCT提取牙齿 与口内扫描获取数据在同坐标系下显示,绿色是CBCT生成的牙齿点云;红色是口内扫描点云数据;

 2、PCL库调用ICP进行配准

void registCTInteroral()
{
    char strST[256] = "E:\\CBCT\\lower.ply";
    char strCT[256] = "E:\\CBCT\\lower-CT.ply";

    pcl::PointCloud<pcl::PointXYZ>::Ptr lowerSL(new pcl::PointCloud<pcl::PointXYZ>);
    pcl::PointCloud<pcl::PointXYZ>::Ptr lowerCT(new pcl::PointCloud<pcl::PointXYZ>);

    if (-1 == pcl::io::loadPLYFile(strST, *lowerSL))
    {
        cout << "error input!" << endl;
        return;
    }
    if (-1 == pcl::io::loadPLYFile(strCT, *lowerCT))
    {
        cout << "error input!" << endl;
        return;
    }

    pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp;
    icp.setInputSource(lowerSL);
    icp.setInputTarget(lowerCT);

    pcl::PointCloud<pcl::PointXYZ> Final;
    icp.align(Final);

    std::cout << "has converged:" << icp.hasConverged() << " score: " <<
        icp.getFitnessScore() << std::endl;
    std::cout << icp.getFinalTransformation() << std::endl;

    pcl::io::savePLYFileASCII("E:\\CBCT\\align.ply", Final);
}

3、将结果和CBCT提取牙齿一起显示,红色是变换后的口内扫描数据

4、结果

没配上,待后续分析 。后面学习下:https://github.com/MIT-SPARK/TEASER-plusplus

https://stackoverflow.com/questions/38754668/plane-fitting-in-a-3d-point-cloud

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伍心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值