算法
文章平均质量分 52
zeeq_
A WHU LIESMARSer
展开
-
高效率mesh转深度图python代码
要将mesh转换为深度图,有两种思路:遍历mesh的每一个面片,将每个面片往图像上投影,将投影覆盖到的区域深度利用面片顶点的深度进行插值计算。获取图像上所有像素对应的光线,将这些光线与mesh进行求交运算,获取交点的坐标,进而求解交点到像素的距离,即为深度值。 这里介绍的是第2种方法 。使用python语言,基于mesh处理包trimesh(官网)进行计算。此外,由于代码使用了pyembree进行加速,所以需要同时安装pyembree包。这两个包的安装命令:......原创 2022-08-25 20:30:50 · 3273 阅读 · 0 评论 -
三维点沿指定向量方向到平面的距离计算方法及C++代码实现
设平面外一点为P(p1,p2,p3),指定的方向向量为d=(d1,d2,d3),平面Q方程为Ax+By+Cz=D,其法向量为n=(A,B,C)。则计算点P沿方向向量d到平面Q的距离,可以通过下式计算 (P+t* d)* n=D [1] 其中t为待求的常数。下面将[1]式分两个步骤解释一下该式子的意义(理解了以后其实就很简单): P’ = P+t* d [2] P’ * n=D [3] [2]式表示三维点P沿着方向向量d移动t倍距离,到达点P原创 2020-12-29 21:38:21 · 3362 阅读 · 0 评论 -
向量法计算三维点到平面的距离公式及C++代码实现
点到平面距离公式推导如下图所示,详细信息参见百度百科:https://baike.baidu.com/item/%E7%82%B9%E5%88%B0%E5%B9%B3%E9%9D%A2%E8%B7%9D%E7%A6%BB/10690055?fr=aladdin 该计算方法在C++中的实现代码如下:原创 2020-12-29 21:48:42 · 5400 阅读 · 0 评论 -
使用普鲁克分析对两组相机/三维点(已知对应关系)进行相似变换对齐的方法及python代码
对两组相机进行对齐,需要首先明确相机坐标系的定义方式,有两种:Xworld = RXcamera + tXcamera = RXworld + t 这两种坐标系的定义是不一样的(其实它们就是一个互逆变换的过程),弄错了的话就没法获得正确的转换结果了(关于这两种坐标系的转换关系,这篇博客里有说明)。在明确了坐标系定义之后,就可以进行计算了。 转换代码参考BARF论文github源码,链接。下面将两种坐标系下的相机组对齐方法都放出来。 1 世界坐标系定义 如果你的坐标系是按照如下方原创 2022-05-21 22:34:00 · 1531 阅读 · 0 评论 -
两组相机(或三维点)对齐方法介绍及实现代码(求解相似变换,包含旋转R、平移t、尺度s)
这个变换用于将生成的稀疏重建场景对齐到真值上。由于SfM(Structure from Motion,运动恢复结构)求解的结果是尺度未定的,所以重建场景与真值之间不仅会相差一个旋转与平移,还会存在尺度缩放。待求解的问题可以描述为:已知一组相机(个数为m)的位姿真值Rgt、tgt和预测位姿Rpred、tpred,现要将预测值对齐到真值上。它们之间会相差一个相似变换Msimilarity,包括尺度s、旋转量R、平移量t,可以根据如下步骤进行求解: 1 求解旋转R 首先计算所有m个相机的位姿差异总和原创 2022-05-13 16:34:58 · 3006 阅读 · 5 评论 -
用向量叉乘快速判断点在三角形内外原理与代码
import numpy as npdef inTri(a, b, c, p): ab = b-a ap = p-a bc = c-b bp = p-b ca = a-c cp = p-c if np.cross(ab,ap)>0 and np.cross(bc,bp)>0 and np.cross(ca,cp)>0: # 在三角形内部 return 1 if np.cross(ab,ap) * np原创 2022-03-30 00:37:18 · 5675 阅读 · 1 评论