基于Intel RealSense D435的户外苹果园3D重建问题求助
苹果园3D重建中RealSense D435室外点云采集问题及解决方案请求
研究背景与问题
- 硕士论文聚焦苹果园3D重建,采用Intel RealSense D435相机执行重建工作
- 已知该相机支持室外作业,但实际采集树木点云时,代码输出结果与
realsense_viewer显示内容差异极大,调整depth_units参数后仍无改善 - 项目需利用ICP(Iterative Closest Point,迭代最近点)算法对相机采集的多帧点云进行配准,最终生成完整场景点云
当前使用的Python代码(室内效果优异,室外效果极差)
# First import the library import pyrealsense2 as rs from pynput import keyboard counter = 0 def on_press(key): global counter if key == keyboard.Key.space: print("Saving pcd_{}.ply".format(counter)) points.export_to_ply("/home/agilex/thesis_ws/src/reconstruction/img/point_cloud/pcd_{}.ply".format(counter), color_frame) print("Done") def on_release(key): global counter counter += 1 if key == keyboard.Key.esc: # Stop listener return False if __name__ == '__main__': pipe = rs.pipeline() config = rs.config() config.enable_stream(rs.stream.depth) config.enable_stream(rs.stream.color) align_to = rs.stream.color align = rs.align(align_to) profile = pipe.start(config) device = profile.get_device() depthsensor = device.first_depth_sensor() if depthsensor.supports(rs.option.depth_units): # This value in realsense viewer in micrometers and here is in meters depthsensor.set_option(rs.option.depth_units,0.000755) frames = pipe.wait_for_frames() aligned_frames = align.process(frames) aligned_depth_frame = aligned_frames.get_depth_frame() color_frame = aligned_frames.get_color_frame() pc = rs.pointcloud() points = rs.points() pc.map_to(color_frame) points = pc.calculate(aligned_depth_frame) # Collect events until released with keyboard.Listener(on_press=on_press,on_release=on_release) as listener: listener.join() listener = keyboard.Listener(on_press=on_press,on_release=on_release) listener.start()
效果对比
- RGB图像:室外苹果园场景的彩色画面
- 深度图像:对应场景的深度画面
realsense_viewer导出的.ply文件效果:点云完整,能清晰呈现树木及周边环境结构- 本人代码输出的.ply文件效果:点云缺失严重,室外场景重建效果极差
需求与求助
目标是获取深度与彩色流,生成并保存多帧场景点云,再通过ICP算法得到完整场景点云。恳请提供基于ROS或SDK的解决方案建议。
内容的提问来源于stack exchange,提问作者Jomana Abdelmoaty
相关产品推荐
相关产品推荐

