Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Object 基于Intel Real sense的目标检测_Object_Size_Intel_Detection_Realsense - Fatal编程技术网

Object 基于Intel Real sense的目标检测

Object 基于Intel Real sense的目标检测,object,size,intel,detection,realsense,Object,Size,Intel,Detection,Realsense,是否可以使用Intel realsense D435i深度相机测量对象大小。我一直在使用此设备进行机器人用例,并希望测量对象的大小变化。基本上,我的桌面上有一个卡座,希望发现是否有卡。当然。一种方法是使用某种对象识别算法来创建对象的遮罩。根据用例的复杂性,您可能需要使用深度学习解决方案,如Mask RCNN或DeepLab,或者您可能需要使用一些简单的方法,如颜色阈值。一旦有了遮罩,就可以从深度图像中获取这些像素的深度并测量其大小 如果平板桌面上只有这一个对象,那么可以使用的另一种方法是背景/地

是否可以使用Intel realsense D435i深度相机测量对象大小。我一直在使用此设备进行机器人用例,并希望测量对象的大小变化。基本上,我的桌面上有一个卡座,希望发现是否有卡。

当然。一种方法是使用某种对象识别算法来创建对象的遮罩。根据用例的复杂性,您可能需要使用深度学习解决方案,如Mask RCNN或DeepLab,或者您可能需要使用一些简单的方法,如颜色阈值。一旦有了遮罩,就可以从深度图像中获取这些像素的深度并测量其大小

如果平板桌面上只有这一个对象,那么可以使用的另一种方法是背景/地板移除。使用类似的方法,检测并删除桌面表面。理想情况下,你只剩下你感兴趣的对象。要清除点云中剩余的任何无关点,请使用异常值过滤器。在这一点上,您可以使用一些启发式方法来测量对象的大小,比如maxxminx,maxyminy

下面是一个使用PCL的Python包装器的示例: 原始点云:

  • (可选)使用统计异常值过滤器进行清理(我在上一步中建议)
  • (可选)直通过滤器: 如果感兴趣的对象和表格的位置已知,则可以使用直通过滤器从侧面和上方/下方删除额外的点
  • 勒索赎金 通过在RANSAC算法中将桌子表面建模为平面来检测桌子表面,并提取其对应点:
  • 剩余的点将是您感兴趣的对象的点:

    图像取自Udacity的项目,如下图所示

        # Create a statistical filter object: 
        outlier_filter = cloud_filtered.make_statistical_outlier_filter()
        # Set the number of neighboring points to analyze for any given point
        outlier_filter.set_mean_k(3)
        # Set threshold scale factor
        x = 0.00001
        # Any point with a mean distance larger than global (mean distance+x*std_dev)
        # will be considered outlier
        outlier_filter.set_std_dev_mul_thresh(x)
        # Call the filter function
        cloud_filtered = outlier_filter.filter()
    
        # Create a PassThrough filter object.
        passthrough = cloud_filtered.make_passthrough_filter()
        # Assign axis and range to the passthrough filter object.
        filter_axis = 'z'
        passthrough.set_filter_field_name(filter_axis)
        axis_min = 0.6095
        axis_max = 1.1
        passthrough.set_filter_limits(axis_min, axis_max)
        # Use the filter function to obtain the resultant point cloud. 
        cloud_filtered = passthrough.filter()
    
        # Create the segmentation object
        seg = cloud_filtered.make_segmenter()
        # Set the model you wish to fit 
        seg.set_model_type(pcl.SACMODEL_PLANE)
        seg.set_method_type(pcl.SAC_RANSAC)
        # Max distance for a point to be considered fitting the model
        # Experiment with different values for max_distance 
        # for segmenting the table
        max_distance = 0.006
        seg.set_distance_threshold(max_distance)
        # Call the segment function to obtain set of inlier indices and model coefficients
        inliers, coefficients = seg.segment()
        # Extract inliers (Table)
        extracted_table   = cloud_filtered.extract(inliers, negative=False)
        # Extract outliers (Tabletop Objects)
        extracted_objects = cloud_filtered.extract(inliers, negative=True)