机器人学之感知算法:点云处理:点云运动估计与跟踪_第1页
机器人学之感知算法:点云处理:点云运动估计与跟踪_第2页
机器人学之感知算法:点云处理:点云运动估计与跟踪_第3页
机器人学之感知算法:点云处理:点云运动估计与跟踪_第4页
机器人学之感知算法:点云处理:点云运动估计与跟踪_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机器人学之感知算法:点云处理:点云运动估计与跟踪1点云基础理论1.1点云数据结构点云数据,作为三维空间中物体表面或环境的离散表示,通常由一系列三维坐标点组成。这些点可以携带额外信息,如颜色、强度、法线等,具体取决于数据采集设备。点云数据结构可以分为两种主要类型:有序点云和无序点云。1.1.1有序点云有序点云,也称为网格点云,其点按照某种规则排列,如扫描线顺序。这种结构常见于激光雷达(LiDAR)数据,其中点云数据可以被组织成类似于图像的二维数组,每一行代表激光雷达的一次扫描。有序点云便于快速访问和处理,但可能在处理非规则形状物体时效率较低。1.1.2无序点云无序点云中的点没有特定的排列顺序,每个点独立存储。这种结构常见于通过三维扫描仪或深度相机获取的数据。无序点云在处理复杂环境和自由形状物体时更为灵活,但数据处理和算法实现相对复杂。1.2点云预处理技术点云预处理是点云处理流程中的关键步骤,旨在提高后续处理步骤的效率和准确性。预处理技术包括:1.2.1噪声去除点云数据中常包含噪声点,这些点可能由传感器误差、环境干扰或数据处理过程中的异常引起。统计滤波是一种常用方法,通过计算每个点的邻域内点的平均距离,移除那些距离显著大于平均值的点。importnumpyasnp

importopen3daso3d

#加载点云

pcd=o3d.io.read_point_cloud("path/to/pointcloud.ply")

#统计滤波

cl,ind=pcd.remove_statistical_outlier(nb_neighbors=20,std_ratio=2.0)

inlier_cloud=pcd.select_by_index(ind)

outlier_cloud=pcd.select_by_index(ind,invert=True)

#可视化结果

o3d.visualization.draw_geometries([inlier_cloud.paint_uniform_color([1,0.706,0]),

outlier_cloud.paint_uniform_color([0,0,1])])1.2.2下采样点云数据往往非常密集,下采样可以减少点的数量,从而降低处理复杂度。均匀下采样是一种简单有效的方法,通过指定一个采样间隔,只保留间隔内的点。#均匀下采样

downpcd=pcd.voxel_down_sample(voxel_size=0.05)

#可视化下采样后的点云

o3d.visualization.draw_geometries([downpcd])1.2.3点云配准点云配准是将两个或多个点云对齐到同一坐标系下的过程,对于点云运动估计与跟踪至关重要。迭代最近点算法(ICP)是一种广泛使用的配准方法,通过迭代地寻找两个点云之间的最佳匹配来实现对齐。#加载第二个点云

target=o3d.io.read_point_cloud("path/to/second_pointcloud.ply")

#初始变换矩阵

current_transformation=np.identity(4)

#ICP配准

reg_p2p=o3d.pipelines.registration.registration_icp(

source=pcd,target=target,max_correspondence_distance=0.05,

init=current_transformation,

estimation_method=o3d.pipelines.registration.TransformationEstimationPointToPoint())

#应用变换

pcd.transform(reg_p2p.transformation)

#可视化配准结果

o3d.visualization.draw_geometries([pcd,target])1.3点云特征提取点云特征提取是从点云数据中提取有意义信息的过程,这些信息可以用于物体识别、分类和跟踪。常见的点云特征包括:1.3.1法线估计法线向量表示点云中每个点的表面方向,对于理解点云的几何结构至关重要。法线估计通常基于邻域点的分布,通过计算邻域点的协方差矩阵来确定法线方向。#法线估计

pcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.1,max_nn=30))

#可视化法线

o3d.visualization.draw_geometries([pcd],point_show_normal=True)1.3.2特征描述子特征描述子是点云特征的另一种表示,用于描述点云中每个点或区域的局部特征。FPFH(FastPointFeatureHistograms)是一种广泛使用的描述子,它基于点的法线信息和邻域点的分布来构建特征直方图。#FPFH特征描述子

fpfh=pute_fpfh_feature(pcd,o3d.geometry.KDTreeSearchParamHybrid(radius=0.1,max_nn=100))

#可视化FPFH特征

#FPFH特征通常用于配准和匹配,而不是直接可视化通过上述点云预处理和特征提取技术,可以为点云运动估计与跟踪等高级应用奠定基础。这些技术的选择和应用取决于具体的应用场景和数据特性。2点云运动估计2.1刚体运动模型在机器人学中,刚体运动模型是描述物体在三维空间中移动而不发生形变的基础。这种模型通常用于点云配准,即对不同时间点或不同视角下的点云数据进行对齐,以估计物体的运动。刚体运动由平移和旋转组成,可以使用齐次坐标和变换矩阵来表示。2.1.1齐次坐标齐次坐标是将三维空间中的点表示为四维向量的一种方法,形式为x,2.1.2变换矩阵刚体变换矩阵是一个4x4的矩阵,其中前3x3部分表示旋转,最后一列表示平移。例如,一个刚体变换矩阵可以表示为:T其中R是旋转矩阵,t是平移向量。2.2点云配准算法点云配准是将两个或多个点云数据集对齐的过程,目的是找到一个刚体变换,使得一个点云与另一个点云尽可能地重合。这在机器人导航、三维重建和物体识别等应用中至关重要。2.2.1ICP算法详解ICP(IterativeClosestPoint)算法是一种常用的点云配准方法,它通过迭代地寻找源点云与目标点云之间的最近点对,并基于这些点对计算刚体变换,最终使两个点云对齐。ICP算法步骤初始化:选择一个初始变换T0最近点对匹配:对于源点云中的每个点,找到目标点云中最近的点。计算变换:基于匹配的点对,计算一个刚体变换T。应用变换:使用计算出的变换T更新源点云的位置。迭代:重复步骤2至4,直到满足停止条件(如变换的改变小于某个阈值或达到最大迭代次数)。代码示例下面是一个使用Python和Open3D库实现的ICP算法示例:importnumpyasnp

importopen3daso3d

#加载点云数据

source=o3d.io.read_point_cloud("source.pcd")

target=o3d.io.read_point_cloud("target.pcd")

#初始化变换

T=np.identity(4)

#ICP配准

reg_p2p=o3d.pipelines.registration.registration_icp(

source,target,0.02,T,

o3d.pipelines.registration.TransformationEstimationPointToPoint())

#获取配准后的变换

T=reg_p2p.transformation

#应用变换

source.transform(T)

#可视化配准结果

o3d.visualization.draw_geometries([source,target])数据样例假设我们有两个点云文件,source.pcd和target.pcd,分别包含以下点:source.pcd:1target.pcd:.4解释在这个例子中,source.pcd和target.pcd之间的差异很小,仅在每个坐标上增加了0.1。ICP算法将计算一个变换,使得源点云与目标点云对齐。在实际应用中,点云之间的差异可能更大,需要更多的迭代来达到满意的配准效果。ICP算法的关键在于最近点对的匹配和变换的计算。最近点对的匹配通常使用kd树或类似的数据结构来加速搜索过程。变换的计算可以通过最小二乘法或其他优化方法来实现,以最小化点对之间的距离。2.3总结点云运动估计是机器人学感知算法中的一个重要组成部分,通过使用刚体运动模型和点云配准算法,如ICP,可以有效地估计和跟踪物体在三维空间中的运动。这些技术在自动驾驶、无人机导航和虚拟现实等领域有着广泛的应用。3点云跟踪技术点云跟踪技术在机器人学中扮演着至关重要的角色,尤其是在动态环境感知和机器人导航中。它涉及到对连续点云数据的处理,以估计和跟踪物体或机器人自身的运动。本教程将深入探讨几种点云跟踪技术,包括基于滤波的点云跟踪、基于特征的点云跟踪以及多传感器融合跟踪。3.1基于滤波的点云跟踪3.1.1原理基于滤波的点云跟踪技术利用了滤波算法,如卡尔曼滤波或粒子滤波,来估计点云的运动。这些算法能够处理噪声数据,预测点云的未来位置,并通过反馈机制不断修正预测结果,从而实现对点云运动的精确跟踪。3.1.2内容卡尔曼滤波卡尔曼滤波是一种递归滤波器,用于估计动态系统的状态,即使在存在噪声的情况下也能提供准确的估计。在点云跟踪中,卡尔曼滤波可以用来预测点云的运动状态,如位置、速度和加速度。粒子滤波粒子滤波是一种基于蒙特卡洛方法的非参数贝叶斯滤波器,适用于非线性、非高斯的动态系统。在点云跟踪中,粒子滤波可以处理更复杂的运动模型,通过粒子的权重更新来估计点云的运动状态。3.1.3示例以下是一个使用卡尔曼滤波进行点云跟踪的Python代码示例:importnumpyasnp

importscipy.linalg

#定义卡尔曼滤波器类

classKalmanFilter:

def__init__(self,A,B,H,Q,R,x0):

self.A=A#状态转移矩阵

self.B=B#控制输入矩阵

self.H=H#观测矩阵

self.Q=Q#过程噪声协方差矩阵

self.R=R#观测噪声协方差矩阵

self.x=x0#初始状态

self.P=np.eye(len(x0))#初始状态协方差矩阵

defpredict(self,u):

self.x=np.dot(self.A,self.x)+np.dot(self.B,u)

self.P=np.dot(np.dot(self.A,self.P),self.A.T)+self.Q

returnself.x

defupdate(self,z):

y=z-np.dot(self.H,self.x)

S=self.R+np.dot(self.H,np.dot(self.P,self.H.T))

K=np.dot(np.dot(self.P,self.H.T),scipy.linalg.inv(S))

self.x=self.x+np.dot(K,y)

self.P=self.P-np.dot(np.dot(K,self.H),self.P)

#创建卡尔曼滤波器实例

A=np.array([[1,1],[0,1]])#状态转移矩阵

B=np.array([[0.5],[1]])#控制输入矩阵

H=np.array([[1,0]])#观测矩阵

Q=np.array([[0.1,0],[0,0.1]])#过程噪声协方差矩阵

R=np.array([[1]])#观测噪声协方差矩阵

x0=np.array([[0],[0]])#初始状态

kf=KalmanFilter(A,B,H,Q,R,x0)

#模拟点云数据

u=np.array([[1]])#控制输入,例如机器人的速度

z=np.array([[1]])#观测值,例如从传感器获取的点云位置

#预测和更新

x_pred=kf.predict(u)

x_upd=kf.update(z)

#输出结果

print("预测状态:",x_pred)

print("更新后状态:",x_upd)3.2基于特征的点云跟踪3.2.1原理基于特征的点云跟踪技术依赖于从点云中提取特征,如边缘、角点或表面法线,然后在连续的点云帧中匹配这些特征,以估计点云的运动。这种方法通常比基于滤波的方法更鲁棒,能够处理较大的运动变化。3.2.2内容特征提取特征提取是基于特征跟踪的第一步,常见的点云特征包括FAST角点、SIFT特征和SURF特征。在点云中,通常使用法线、曲率或特定的几何形状来定义特征。特征匹配特征匹配是将当前帧中的特征与参考帧中的特征进行配对的过程。这通常涉及到计算特征之间的距离或相似度,并使用最近邻算法或更复杂的匹配算法来找到最佳匹配。运动估计一旦特征匹配完成,就可以使用RANSAC(随机抽样一致性)算法或最小二乘法来估计点云之间的运动。这通常涉及到计算一个变换矩阵,该矩阵描述了点云从一帧到另一帧的平移和旋转。3.2.3示例以下是一个使用基于特征的点云跟踪的Python代码示例,使用PCL(PointCloudLibrary)进行特征提取和匹配:importpcl

importnumpyasnp

#加载点云数据

cloud=pcl.load_XYZRGB('cloud.pcd')

#提取特征

extractor=cloud.make_NormalEstimation()

kdtree=cloud.make_kdtree()

extractor.set_SearchMethod(kdtree)

extractor.set_RadiusSearch(0.03)

normals=pute()

#创建特征匹配器

matcher=cloud.make_CorrespondenceEstimation()

matcher.setInputSource(cloud)

matcher.setInputTarget(cloud)

matcher.setSearchSurface(normals)

#进行特征匹配

correspondences=pute()

#估计运动

ransac=cloud.make_RANSACCorrespondence()

ransac.setCorrespondences(correspondences)

ransac.setInlierThreshold(0.01)

ransac.setNumberOfSamples(1000)

ransac.setProbability(0.99)

ransac.setRefineModel(True)

ransac.setRefineThreshold(0.001)

ransac.setSourceNormals(normals)

ransac.setTargetNormals(normals)

puteModel()

ransac.refineModel()3.3多传感器融合跟踪3.3.1原理多传感器融合跟踪技术结合了来自不同传感器的数据,如激光雷达、摄像头和IMU,以提高点云跟踪的准确性和鲁棒性。通过融合多种传感器的信息,可以减少单一传感器的局限性,如遮挡、噪声或测量误差。3.3.2内容传感器数据同步在融合不同传感器的数据之前,必须确保这些数据在时间上是同步的。这通常涉及到使用时间戳来对齐数据,或者使用更复杂的同步算法。数据融合数据融合是将不同传感器的数据组合成一个统一表示的过程。这可以通过加权平均、贝叶斯融合或其他统计方法来实现。在点云跟踪中,融合的数据可以用来更准确地估计点云的运动。运动估计融合后的数据可以使用与基于滤波或基于特征的跟踪类似的方法来估计运动。然而,由于数据的多样性和丰富性,多传感器融合跟踪通常能够提供更准确的运动估计。3.3.3示例以下是一个使用多传感器融合进行点云跟踪的Python代码示例,使用ROS(RobotOperatingSystem)进行传感器数据的同步和融合:importrospy

fromsensor_msgs.msgimportPointCloud2,Image

fromcv_bridgeimportCvBridge

importcv2

importpcl

#定义传感器数据同步器

classSensorDataSynchronizer:

def__init__(self):

self.bridge=CvBridge()

self.point_cloud=None

self.image=None

defsync_data(self,cloud_msg,image_msg):

#将ROS消息转换为PCL点云和OpenCV图像

self.point_cloud=pcl.PointCloud2(cloud_msg)

self.image=self.bridge.imgmsg_to_cv2(image_msg,"bgr8")

#在这里进行数据融合和运动估计

#...

#创建同步器实例

synchronizer=SensorDataSynchronizer()

#订阅点云和图像数据

defcloud_callback(cloud_msg):

synchronizer.sync_data(cloud_msg,synchronizer.image)

defimage_callback(image_msg):

synchronizer.image=image_msg

ifsynchronizer.point_cloudisnotNone:

synchronizer.sync_data(synchronizer.point_cloud,image_msg)

rospy.init_node('sensor_data_fusion')

rospy.Subscriber('/lidar/point_cloud',PointCloud2,cloud_callback)

rospy.Subscriber('/camera/image',Image,image_callback)

#开始ROS节点

rospy.spin()请注意,上述代码示例仅为框架,具体的数据融合和运动估计步骤需要根据实际应用和传感器特性进行详细实现。4实践应用与案例分析4.1机器人SLAM中的点云应用4.1.1原理与内容在机器人学中,SLAM(SimultaneousLocalizationandMapping)即同时定位与建图,是机器人自主导航的关键技术之一。点云数据,由激光雷达(LiDAR)等传感器获取,因其高精度和三维信息的特性,在SLAM中扮演着重要角色。点云运动估计与跟踪是SLAM中的一项核心任务,它涉及到点云数据的处理、匹配以及机器人位姿的估计。点云数据处理点云数据通常需要进行预处理,包括滤波、降采样和特征提取。滤波用于去除噪声点,降采样则减少数据量,提高处理速度,而特征提取则帮助识别点云中的关键信息,如平面、边缘等。点云匹配点云匹配是通过比较当前点云与历史点云或地图,确定机器人当前位姿的过程。常用的点云匹配算法有ICP(IterativeClosestPoint)和NDT(NormalDistributionsTransform)。ICP算法通过迭代寻找点云之间的最佳配准,而NDT则利用点云的统计特性进行匹配,适用于大范围的点云数据。机器人位姿估计通过点云匹配,可以得到机器人相对于上一时刻或地图的位姿变化。位姿估计通常包括位置和姿态两个方面,是机器人导航和定位的基础。4.1.2示例:ICP算法在SLAM中的应用假设我们有一组点云数据,分别代表机器人在不同时间点的观测。下面是一个使用Python和open3d库实现ICP算法的示例:importnumpyasnp

importopen3daso3d

#加载点云数据

source=o3d.io.read_point_cloud("source.pcd")

target=o3d.io.read_point_cloud("target.pcd")

#初始变换矩阵

initial_transformation=np.identity(4)

#ICP匹配

reg_p2p=o3d.pipelines.registration.registration_icp(

source,target,0.02,initial_transformation,

o3d.pipelines.registration.TransformationEstimationPointToPoint())

#输出匹配结果

print(reg_p2p.transformation)在这个示例中,我们首先加载了两个点云数据,然后定义了一个初始的4x4单位变换矩阵。registration_icp函数执行ICP匹配,其中0.02是最大对应点对点距离,用于控制匹配的精度。最后,我们输出了匹配得到的变换矩阵,它表示了源点云到目标点云的位姿变化。4.2自动驾驶中的点云跟踪4.2.1原理与内容在自动驾驶领域,点云跟踪用于实时监测车辆周围环境的变化,是环境感知和障碍物检测的重要组成部分。点云跟踪涉及到连续点云帧之间的匹配和运动估计,以确定车辆的运动状态和周围物体的动态。点云跟踪算法点云跟踪算法通常基于光流法或特征匹配法。光流法通过跟踪点云中点的运动轨迹来估计运动,而特征匹配法则利用点云中的特征点进行匹配,从而估计运动。动态障碍物检测动态障碍物检测是点云跟踪的一个重要应用,通过分析点云中物体的运动状态,识别出移动的障碍物,为自动驾驶车辆提供安全预警。4.2.2示例:基于特征匹配的点云跟踪下面是一个使用Python和PCL(PointCloudLibrary)实现基于特征匹配的点云跟踪的示例:importpcl

#加载点云数据

cloud1=pcl.load_XYZRGB('cloud1.pcd')

cloud2=pcl.load_XYZRGB('cloud2.pcd')

#特征提取

extractor=cloud1.make_NormalEstimation()

extractor.set_KSearch(20)

normals1=pute()

extractor=cloud2.make_NormalEstimation()

extractor.set_KSearch(20)

normals2=pute()

#特征匹配

matcher=cloud1.make_FPFHMatcher()

matcher.setInputTarget(normals2)

matcher.setInputSource(normals1)

correspondences=matcher.match()

#输出匹配结果

forcorrespondenceincorrespondences:

print(correspondence)在这个示例中,我们首先加载了两个点云数据,然后使用NormalEstimation类提取点云的法线特征。接着,我们使用FPFHMatcher类进行特征匹配,correspondences变量存储了匹配结果,即源点云和目标点云中特征点的对应关系。4.3点云处理在无人机导航中的作用4.3.1原理与内容无人机导航中,点云处理主要用于地形建模、障碍物检测和路径规划。通过实时获取和处理点云数据,无人机可以构建周围环境的三维模型,识别障碍物,并规划安全的飞行路径。地形建模地形建模是通过点云数据构建地面模型,帮助无人机理解其飞行高度和地形特征。障碍物检测障碍物检测是通过分析点云数据中的异常点或密集区域,识别出可能的障碍物,确保无人机飞行安全。路径规划路径规划是基于点云数据和障碍物信息,计算出无人机从起点到终点的最优路径。4.3.2示例:基于点云的障碍物检测下面是一个使用Python和PCL库实现基于点云的障碍物检测的示例:importpcl

#加载点云数据

cloud=pcl.load_XYZRGB('cloud.pcd')

#地面分割

seg=cloud.make_segmenter()

seg.set_model_type(pcl.SACMODEL_PLANE)

seg.set_method_type(pcl.SAC_RANSAC)

seg.set_distance_threshold(0.01)

inliers,coefficients=seg.segment()

#障碍物点云

obstacles=cloud.extract(inliers,negative=True)

#输出障碍物点云

obstacles.to_file('obstacles.pcd')在这个示例中,我们首先加载了点云数据,然后使用make_segmenter函数进行地面分割。通过设置模型类型为平面模型(SACMODEL_PLANE),方法类型为RANSAC(SAC_RANSAC),以及距离阈值为0.01,我们可以从点云中分割出地面点。extract函数用于从原始点云中提取非地面点,即障碍物点云,最后我们将障碍物点云保存为新的点云文件。以上示例和内容展示了点云运动估计与跟踪在机器人SLAM、自动驾驶和无人机导航中的应用,以及如何使用Python和相关库进行点云数据的处理和分析。通过这些技术,可以实现机器人和车辆的自主导航和环境感知,是现代机器人学和自动驾驶技术的重要组成部分。5高级主题与研究进展5.1点云深度学习方法5.1.1原理与内容点云深度学习方法是近年来机器人学感知算法领域的一个重要研究方向,它利用深度神经网络处理和分析点云数据,以实现更准确的物体识别、分类和运动估计。点云数据由三维空间中的点组成,每个点通常包含三维坐标信息,有时还包括颜色、强度等附加属性。处理点云数据的挑战在于其无序性和不规则性,这与传统图像数据的规则网格结构形成鲜明对比。点云卷积神经网络(PointNet)PointNet是一种直接处理点云数据的深度学习模型,它通过共享的多层感知器(MLP)对每个点进行特征提取,然后使用对称函数(如最大池化)聚合所有点的特征,以生成全局特征。PointNet能够处理任意数量的点,并保持对点云的顺序不变性。importtorch

importtorch.nnasnn

importtorch.nn.functionalasF

classPointNet(nn.Module):

def__init__(self):

super(PointNet,self).__init__()

self.conv1=nn.Conv1d(3,64,1)

self.conv2=nn.Conv1d(64,128,1)

self.conv3=nn.Conv1d(128,1024,1)

self.fc1=nn.Linear(1024,512)

self.fc2=nn.Linear(512,256)

self.fc3=nn.Linear(256,10)#假设10类物体

defforward(self,x):

x=F.relu(self.conv1(x))

x=F.relu(self.conv2(x))

x=F.relu(self.conv3(x))

x=torch.max(x,2,keepdim=True)[0]

x=x.view(-1,1024)

x=F.relu(self.fc1(x))

x=F.relu(self.fc2(x))

x=self.fc3(x)

returnF.log_softmax(x,dim=1)

#示例数据

points=torch.randn(1,3,1024)#1个点云,每个点有3个坐标,共1024个点

model=PointNet()

output=model(points)

print(output)点云注意力机制(PointNet++)PointNet++通过引入层次化的注意力机制,进一步提高了点云深度学习的性能。它通过构建多尺度的局部区域,对每个区域内的点进行特征提取,然后使用注意力机制选择重要的局部特征进行聚合,以生成更丰富的全局特征。classPointNetPlusPlus(nn.Module):

def__init__(self):

super(PointNetPlusPlus,self).__init__()

self.sa1=SA_Layer(512)

self.sa2=SA_Layer(128)

self.sa3=SA_Layer(32)

self.fc1=nn.Linear(1024,512)

self.fc2=nn.Linear(512,256)

self.fc3=nn.Linear(256,10)

defforward(self,x):

x=self.sa1(x)

x=self.sa2(x)

x=self.sa3(x)

x=F.relu(self.fc1(x))

x=F.relu(self.fc2(x))

x=self.fc3(x)

returnF.log_softmax(x,dim=1)

#注意力层(SA_Layer)的简化示例

classSA_Layer(nn.Module):

def__init__(self,npoint):

super(SA_Layer,self).__init__()

self.npoint=npoint

defforward(self,x):

#假设x是点云数据,这里简化处理

x=x[:,:,:self.npoint]

returnx

#示例数据

points=torch.randn(1,3,1024)

model=PointNetPlusPlus()

output=model(points)

print(output)5.1.2点云实时处理技术点云实时处理技术旨在提高点云数据处理的速度和效率,以满足机器人实时感知和决策的需求。这包括点云的快速配准、压缩、特征提取和运动估计等。快速点云配准(ICP改进)传统的点云配准算法如迭代最近点(ICP)算法在处理大规模点云时速度较慢。为提高实时性,可以采用基于特征的配准方法,如使用FAST特征检测和BRIEF描述子进行点云配准,或者使用GPU加速的ICP算法。importopen3daso3d

deffast_icp(source,target):

#使用FAST特征检测

source_keypoints=pute_iss_keypoints(source)

target_keypoints=pute_iss_keypoints(target)

#使用BRIEF描述子

source_desc=pute_brief(source_keypoints)

target_desc=pute_brief(target_keypoints)

#配准

result=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论