28 利用平面对应关系求解RT空间转换矩阵
0 引言
问题背景:给定CAD模型与点云的情况下,基于CAD比对实现对实测点云的尺寸测量是三维测量技术中一种常用的思路。该思路的关键问题在于
需要精确求解CAD模型与点云之间的空间转换矩阵。采用ICP(迭代最近邻点算法)的变种,将基于点-点对应关系的算法拓展为基于平面-平面
的算法。当前,基于二次开发技术求解出了CAD模型中的所有平面,并且基于点云PCL库中的生长聚类算法(regionGrowing做分割,RANSAC
对平面方程进行拟合)提取出了典型平面,因此希望通过平面-平面对应关系解出二者之间的空间转换矩阵。其中,给定两组平面,求解出面-面
对应关系是本文探讨的主要问题。
问题输入:两组平面 vector<myplane> ptsPlanes, cadPlanes, 并假设平面不重复.
/* myplane为存储平面方程的机构体
* 1、a,b,c,d为平面一般方程的四个参数:ax + by + cz + d =0;
* 2、其中,(a,b,c)为平面的法向量,d代表平面的平移向量
*/
struct myplane{
double a;
double b;
double c;
double d;
}
问题输出:int size = ptsPlanes.size();
int correspondanceRelations[size][2];
1 抽象问题具体化
举例如下:
1. 给定点云平面方程如下:
0.244/-0.668/0.702/11.900
-0.146/0.690/0.709/-107.045
0.958/0.277/-0.069/-59.060
0.958/0.277/-0.070/67.981
0.244/-0.669/0.702/3.670
0.244/-0.668/0.703/-127.611
0.957/0.281/-0.074/79.320
-0.147/0.688/0.711/26.081
0.959/0.275/-0.069/-70.594
-0.145/0.690/0.709/9.024
-0.141/0.672/0.727/-123.687
2. 给定CAD模型平面方程如下:
0.000/0.000/1.000/-0.000
0.000/0.000/1.000/-8.000
1.000/-0.000/-0.000/75.000
-0.000/1.000/-0.000/75.000
1.000/0.000/0.000/-75.000
0.000/1.000/0.000/-75.000
1.000/-0.000/-0.000/58.000
-0.000/1.000/-0.000/63.500
1.000/0.000/0.000/-58.000
0.000/1.000/0.000/-63.500
0.000/0.000/1.000/-138.000
3. 基于平面是否平行对模型进行分组,并根据d值降序排列
3.1 点云平面分组结果:
第一组
0.244/-0.668/0.702/13.219
0.244/-0.669/0.702/4.989
0.244/-0.669/0.702/-126.284
第二组
0.957/0.282/-0.075/79.085
0.958/0.277/-0.070/67.768
0.958/0.277/-0.069/-59.279
0.959/0.275/-0.068/-70.855
第三组
-0.147/0.688/0.710/25.914
-0.145/0.690/0.709/8.861
-0.146/0.690/0.709/-107.206
-0.140/0.668/0.731/-123.745
3.2 CAD平面分组结果
第一组
0.000/0.000/1.000/-0.000
0.000/0.000/1.000/-8.000
0.000/0.000/1.000/-138.000
第二组
1.000/-0.000/-0.000/75.000
1.000/-0.000/-0.000/58.000
1.000/0.000/0.000/-58.000
1.000/0.000/0.000/-75.000
第三组
-0.000/1.000/-0.000/75.000
-0.000/1.000/-0.000/63.500
0.000/1.000/0.000/-63.500
0.000/1.000/0.000/-75.000
28 利用平面对应关系求解RT空间转换矩阵的更多相关文章
- 利用反射将Datatable、SqlDataReader转换成List模型
1. DataTable转IList public class DataTableToList<T>whereT :new() { ///<summary> ///利用反射将D ...
- 利用boost做string到wstring转换,以及字符集转换 - Error - C++博客
利用boost做string到wstring转换,以及字符集转换 - Error - C++博客 利用boost做string到wstring转换,以及字符集转换 #include <boost ...
- hough变换中,直线方程从XY空间转换到参数空间的转换过程
XY空间直线方程:y=kx+b 参数空间直线方程:xcosθ+ysinθ=ρ 直线方程从XY空间转换到参数空间过程的转换过程: k=tan(π-α)=tan(-α)=-tanα=-cotθ=-cosθ ...
- C#利用 string.Join 泛型集合快速转换拼接字符串
C#利用 string.Join 泛型集合快速转换拼接字符串 List<int> superior_list = new List<int>(); superior_list. ...
- [转]kaldi特征和模型空间转换
转:http://blog.csdn.net/shmilyforyq/article/details/76807431 博主话:这篇博客是对kaldi官网中Feature and model-spac ...
- 已知(x,y,z,yaw,pitch,roll)如何得到4*4的转换矩阵?
作者:Nicholas链接:https://www.zhihu.com/question/41514206/answer/104827395来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...
- Java实现 LeetCode 756 金字塔转换矩阵(DFS)
756. 金字塔转换矩阵 现在,我们用一些方块来堆砌一个金字塔. 每个方块用仅包含一个字母的字符串表示. 使用三元组表示金字塔的堆砌规则如下: 对于三元组(A, B, C) ,"C" ...
- ch2_8_1求解n阶螺旋矩阵问题
思路:循环输出,注意边界控制 import java.util.Scanner; public class ch2_8_1求解n阶螺旋矩阵问题 { public static void main(St ...
- 【opencv】 solvepnp 和 solvepnpRansac 求解 【空间三维坐标系 到 图像二维坐标系】的 三维旋转R 和 三维平移 T 【opencv2使用solvepnp求解rt不准的问题】
参考: pnp问题 与 solvepnp函数:https://www.jianshu.com/p/b97406d8833c 对图片进行二维仿射变换cv2.warpAffine() or 对图片进行二维 ...
随机推荐
- Manacher模板(O(n)内求最长回文串长度)
转自:https://segmentfault.com/a/1190000008484167 /* 由于回文分为偶回文(比如 bccb)和奇回文(比如 bcacb),而在处理奇偶问题上会比较繁琐,所以 ...
- leetcode-162周赛-1254-统计封闭岛屿数量
题目描述: 自己的提交: class Solution: def closedIsland(self, grid: List[List[int]]) -> int: def dfs(grid,r ...
- 启动php-fpm和nginx
/usr/local/php/sbin/php-fpm #手动打补丁的启动方式/usr/local/php/sbin/php-fpm start sudo /usr/local/nginx/nginx ...
- Shiro学习(11)缓存机制
Shiro提供了类似于spring的Cache抽象,即Shiro本身不实现Cache,但是对Cache进行了又抽象,方便更换不同的底层Cache实现.对于Cache的一些概念可以参考我的<Spr ...
- Android中.9图片的了解和制作过程
个部分(九宫格),分别为4个角,4条边,以及一个中间区域,4个角是不做拉升的,所以还能一直保持圆角的清晰状态,而2条水平边和垂直边分别只做水平和垂直拉伸,所以不会出现边会被拉粗的情况,只有中间用黑线指 ...
- 贪心——cf708b
先求0,1的个数,然后贪心输出01即可 #include<bits/stdc++.h> using namespace std; #define ll long long ll a,b,c ...
- Chrome 调试跨域问题解决方案之插件篇
跨域,就是A域名下的js,想请求B域名下的接口数据.跨域,只存在于浏览器端.App和小程序不存在跨域问题.跨域,分浏览器策略和服务器策略. 如果服务器配置了允许跨域,那就没有跨域问题 如果uni-ap ...
- 第十四届华中科技大学程序设计竞赛 K--Walking in the Forest
链接:https://www.nowcoder.com/acm/contest/106/K来源:牛客网 题目描述 It’s universally acknowledged that there’re ...
- 数据可视化(Echart) :柱状图、折线图、饼图等六种基本图表的特点及适用场合
数据可视化(Echart) 柱状图.折线图.饼图等六种基本图表的特点及适用场合 参考网址 效果图 源码 <!DOCTYPE html> <html> <head> ...
- MVC3中_ViewStart.cshtml的一些事
MVC3中,使用Razor模板引擎的话,会自动生成一个_ViewStart.cshtml文件. 很多人把这个文件当成类似Webform中的Master模板文件,其实这个_ViewStart.cshtm ...