binocular_distanceT_binocular_distanceBinocularDistanceBinocularDistancebinocular_distance双目距离(算子)

名称

binocular_distanceT_binocular_distanceBinocularDistanceBinocularDistancebinocular_distance — 使用相关技术计算校正后的立体图像对的距离值。

签名

binocular_distance(ImageRect1, ImageRect2 : Distance, Score : CamParamRect1, CamParamRect2, RelPoseRect, Method, MaskWidth, MaskHeight, TextureThresh, MinDisparity, MaxDisparity, NumLevels, ScoreThresh, Filter, SubDistance : )

Herror T_binocular_distance(const Hobject ImageRect1, const Hobject ImageRect2, Hobject* Distance, Hobject* Score, const Htuple CamParamRect1, const Htuple CamParamRect2, const Htuple RelPoseRect, const Htuple Method, const Htuple MaskWidth, const Htuple MaskHeight, const Htuple TextureThresh, const Htuple MinDisparity, const Htuple MaxDisparity, const Htuple NumLevels, const Htuple ScoreThresh, const Htuple Filter, const Htuple SubDistance)

void BinocularDistance(const HObject& ImageRect1, const HObject& ImageRect2, HObject* Distance, HObject* Score, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HTuple& RelPoseRect, const HTuple& Method, const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& TextureThresh, const HTuple& MinDisparity, const HTuple& MaxDisparity, const HTuple& NumLevels, const HTuple& ScoreThresh, const HTuple& Filter, const HTuple& SubDistance)

HImage HImage::BinocularDistance(const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const HPose& RelPoseRect, const HString& Method, Hlong MaskWidth, Hlong MaskHeight, const HTuple& TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, const HTuple& ScoreThresh, const HTuple& Filter, const HTuple& SubDistance) const

HImage HImage::BinocularDistance(const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const HPose& RelPoseRect, const HString& Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const HString& Filter, const HString& SubDistance) const

HImage HImage::BinocularDistance(const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const HPose& RelPoseRect, const char* Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const char* Filter, const char* SubDistance) const

HImage HImage::BinocularDistance(const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const HPose& RelPoseRect, const wchar_t* Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const wchar_t* Filter, const wchar_t* SubDistance) const   ( Windows only)

HImage HCamPar::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect2, const HPose& RelPoseRect, const HString& Method, Hlong MaskWidth, Hlong MaskHeight, const HTuple& TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, const HTuple& ScoreThresh, const HTuple& Filter, const HTuple& SubDistance) const

HImage HCamPar::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect2, const HPose& RelPoseRect, const HString& Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const HString& Filter, const HString& SubDistance) const

HImage HCamPar::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect2, const HPose& RelPoseRect, const char* Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const char* Filter, const char* SubDistance) const

HImage HCamPar::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect2, const HPose& RelPoseRect, const wchar_t* Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const wchar_t* Filter, const wchar_t* SubDistance) const   ( Windows only)

HImage HPose::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const HString& Method, Hlong MaskWidth, Hlong MaskHeight, const HTuple& TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, const HTuple& ScoreThresh, const HTuple& Filter, const HTuple& SubDistance) const

HImage HPose::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const HString& Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const HString& Filter, const HString& SubDistance) const

HImage HPose::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const char* Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const char* Filter, const char* SubDistance) const

HImage HPose::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const wchar_t* Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const wchar_t* Filter, const wchar_t* SubDistance) const   ( Windows only)

static void HOperatorSet.BinocularDistance(HObject imageRect1, HObject imageRect2, out HObject distance, out HObject score, HTuple camParamRect1, HTuple camParamRect2, HTuple relPoseRect, HTuple method, HTuple maskWidth, HTuple maskHeight, HTuple textureThresh, HTuple minDisparity, HTuple maxDisparity, HTuple numLevels, HTuple scoreThresh, HTuple filter, HTuple subDistance)

HImage HImage.BinocularDistance(HImage imageRect2, out HImage score, HCamPar camParamRect1, HCamPar camParamRect2, HPose relPoseRect, string method, int maskWidth, int maskHeight, HTuple textureThresh, int minDisparity, int maxDisparity, int numLevels, HTuple scoreThresh, HTuple filter, HTuple subDistance)

HImage HImage.BinocularDistance(HImage imageRect2, out HImage score, HCamPar camParamRect1, HCamPar camParamRect2, HPose relPoseRect, string method, int maskWidth, int maskHeight, double textureThresh, int minDisparity, int maxDisparity, int numLevels, double scoreThresh, string filter, string subDistance)

HImage HCamPar.BinocularDistance(HImage imageRect1, HImage imageRect2, out HImage score, HCamPar camParamRect2, HPose relPoseRect, string method, int maskWidth, int maskHeight, HTuple textureThresh, int minDisparity, int maxDisparity, int numLevels, HTuple scoreThresh, HTuple filter, HTuple subDistance)

HImage HCamPar.BinocularDistance(HImage imageRect1, HImage imageRect2, out HImage score, HCamPar camParamRect2, HPose relPoseRect, string method, int maskWidth, int maskHeight, double textureThresh, int minDisparity, int maxDisparity, int numLevels, double scoreThresh, string filter, string subDistance)

HImage HPose.BinocularDistance(HImage imageRect1, HImage imageRect2, out HImage score, HCamPar camParamRect1, HCamPar camParamRect2, string method, int maskWidth, int maskHeight, HTuple textureThresh, int minDisparity, int maxDisparity, int numLevels, HTuple scoreThresh, HTuple filter, HTuple subDistance)

HImage HPose.BinocularDistance(HImage imageRect1, HImage imageRect2, out HImage score, HCamPar camParamRect1, HCamPar camParamRect2, string method, int maskWidth, int maskHeight, double textureThresh, int minDisparity, int maxDisparity, int numLevels, double scoreThresh, string filter, string subDistance)

def binocular_distance(image_rect_1: HObject, image_rect_2: HObject, cam_param_rect_1: Sequence[Union[int, float, str]], cam_param_rect_2: Sequence[Union[int, float, str]], rel_pose_rect: Sequence[Union[int, float]], method: str, mask_width: int, mask_height: int, texture_thresh: Union[float, int], min_disparity: int, max_disparity: int, num_levels: int, score_thresh: Union[float, int], filter: MaybeSequence[str], sub_distance: MaybeSequence[str]) -> Tuple[HObject, HObject]

描述

binocular_distancebinocular_distanceBinocularDistanceBinocularDistanceBinocularDistancebinocular_distance 通过相关性技术计算校正立体图像对的距离值。该算子首先参照 binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparitybinocular_disparity 的原理,计算图像 ImageRect1ImageRect1ImageRect1ImageRect1imageRect1image_rect_1ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2 之间的视差值。随后通过 disparity_to_distancedisparity_to_distanceDisparityToDistanceDisparityToDistanceDisparityToDistancedisparity_to_distance。The distances are returned in the single-channel image DistanceDistanceDistanceDistancedistancedistance 的变换机制,将所得视差值映射为对应三维世界坐标点到校正立体相机系统的距离值。最终以单通道图像形式返回距离结果,其中每个灰度值代表对应三维世界坐标点到立体相机系统的距离。

该算法需要一张参考图像 ImageRect1ImageRect1ImageRect1ImageRect1imageRect1image_rect_1 和一张待校正的搜索图像 ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2,即两者对应的极线必须平行且位于相同的图像行上( )。若该假设不成立,可通过 calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_camerasgen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMapgen_binocular_rectification_mapmap_imagemap_imageMapImageMapImageMapImagemap_image 算子对图像进行校正。因此,针对参考图像 ImageRect1ImageRect1ImageRect1ImageRect1imageRect1image_rect_1 中的某个像素,通过在 ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2 的对应行中搜索,并匹配尺寸为 MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_width × MaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height 的矩形窗口内的局部邻域,即可选取 ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2 中的同名像素。对于每个定义的参考像素,其像素对应关系将转换为世界坐标系中的距离——该距离由对应像素对的视线在校正立体系统 平面上的交点定义。

对于此变换,需定义相机 1 的校正内部参数 CamParamRect1CamParamRect1CamParamRect1CamParamRect1camParamRect1cam_param_rect_1、相机 2 的校正内部参数 CamParamRect2CamParamRect2CamParamRect2CamParamRect2camParamRect2cam_param_rect_2,以及包含外部参数的姿态 RelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRectrel_pose_rect。后者采用 形式,描述两相机间的相对姿态。更精确地说,它规定了从校正后的相机系统 2(ccsR2)到校正后的相机系统 1ccsR1)的点变换,详见 变换 / 姿态“解决方案指南III-C - 三维视觉”。这些参数可通过 calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_camerasgen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMapgen_binocular_rectification_map 算子获取。最终,每个距离值的质量度量将通过 ScoreScoreScoreScorescorescore 返回,其中包含参考像素匹配函数 的最佳匹配结果。匹配过程采用原始未处理图像的灰度值进行计算。

with

:两幅输入图像中对应像素的行和列坐标,

, :未处理输入图像的灰度值,

:相关窗口大小

:在宽度为 、高度为 的相关窗口内的均值。

请注意,'sad'"sad""sad""sad""sad""sad"'ssd'"ssd""ssd""ssd""ssd""ssd" 方法直接比较掩模窗口内像素的灰度值,而 'ncc'"ncc""ncc""ncc""ncc""ncc" 方法则会补偿掩模窗口内的平均灰度值及其方差。因此,若两幅图像存在亮度与对比度差异,应优先选用此方法。对于亮度和对比度相似的图像,则推荐使用 'sad'"sad""sad""sad""sad""sad"'ssd'"ssd""ssd""ssd""ssd""ssd" 方法,因其内部计算复杂度较低而运行更快。更多细节请参阅 binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparitybinocular_disparity 文档。

需要注意的是,对于上升的 S ,相关性质量在 'sad'"sad""sad""sad""sad""sad"'ssd'"ssd""ssd""ssd""ssd""ssd" 方法中呈下降趋势(最佳质量值为 0),而在 'ncc'"ncc""ncc""ncc""ncc""ncc" 方法中则呈上升趋势(最佳质量值为 1.0)。

相关窗口的尺大小必须为奇数,并通过 MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_widthMaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height 参数传递。搜索空间受最小视差值 MinDisparityMinDisparityMinDisparityMinDisparityminDisparitymin_disparity 与最大视差值 MaxDisparityMaxDisparityMaxDisparityMaxDisparitymaxDisparitymax_disparity 的限制。由于图像边界外的像素值未定义, DistanceDistanceDistanceDistancedistancedistanceScoreScoreScoreScorescorescore 结果域通常不会设置在图像边界内:上下边界各保留高度 MaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height/2 的边距,左右边界各保留宽度 MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_width/2 的边距。基于相同原因,左右图像边界的最大视差范围也会相应缩减。

由于匹配在处理纹理较差的区域时可靠性极低,可在 TextureThreshTextureThreshTextureThreshTextureThreshtextureThreshtexture_thresh 中定义相关窗口内的最小方差阈值。该阈值同时应用于输入图像 ImageRect1ImageRect1ImageRect1ImageRect1imageRect1image_rect_1ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2。此外,ScoreThreshScoreThreshScoreThreshScoreThreshscoreThreshscore_thresh 通过设定相关函数的最大值('sad'"sad""sad""sad""sad""sad",'ssd'"ssd""ssd""ssd""ssd""ssd")或最小值('ncc'"ncc""ncc""ncc""ncc""ncc")来保证匹配质量。将 FilterFilterFilterFilterfilterfilter 设为 'left_right_check'"left_right_check""left_right_check""left_right_check""left_right_check""left_right_check" 可增强匹配结果的稳健性,因其同时依赖正向与反向匹配;而选择 'none'"none""none""none""none""none" 则关闭该功能。

用于提升 binocular_distancebinocular_distanceBinocularDistanceBinocularDistanceBinocularDistancebinocular_distance 时间响应的金字塔层数由 NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels 参数决定。遵循粗到细的方案,先计算高阶视差图像并将其分割为矩形子图像,以降低下一层金字塔的视差范围。每个层级均应用 TextureThreshTextureThreshTextureThreshTextureThreshtextureThreshtexture_threshScoreThreshScoreThreshScoreThreshScoreThreshscoreThreshscore_thresh 阈值,最终返回的 DistanceDistanceDistanceDistancedistancedistanceScoreScoreScoreScorescorescore 图像域由各层结果域的交集构成。通常而言,当距离图像能被分割为更多均匀距离值区域且需指定更大视差范围时,金字塔结构的优势更为显著。其缺点在于粗层级可能丢失重要纹理信息,导致距离值计算不足。

最后,参数 SubDistanceSubDistanceSubDistanceSubDistancesubDistancesub_distance 的取值 'interpolation'"interpolation""interpolation""interpolation""interpolation""interpolation" 可提高距离值的精确度与准确性。将该参数设为 'none'"none""none""none""none""none" 即可关闭此功能。

注意

若使用配备远心变焦镜头的相机, DistanceDistanceDistanceDistancedistancedistance 并非定义为某一点到相机的距离,而是定义为该点到由两台相机的 y 轴及其基线构成的平面的距离(参见 gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMapgen_binocular_rectification_map)。

对于混合类型的立体设置(即原始相机中一台为透视相机而另一台为远心相机的立体设置;参见 gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMapgen_binocular_rectification_map),两台相机的校正平面相对于物体的位置会导致非常反直觉的距离值。因此, binocular_distancebinocular_distanceBinocularDistanceBinocularDistanceBinocularDistancebinocular_distance 不支持混合类型的立体设置。对于混合类型的立体设置,请使用 reconstruct_surface_stereoreconstruct_surface_stereoReconstructSurfaceStereoReconstructSurfaceStereoReconstructSurfaceStereoreconstruct_surface_stereo,其中参考坐标系可任意选择。或者,也可以使用 binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparitybinocular_disparitydisparity_image_to_xyzdisparity_image_to_xyzDisparityImageToXyzDisparityImageToXyzDisparityImageToXyzdisparity_image_to_xyz

此外,同时包含配备和未配备超中心镜头的相机的立体设置不受支持。

执行信息

参数

ImageRect1ImageRect1ImageRect1ImageRect1imageRect1image_rect_1 (输入对象)  singlechannelimage objectHImageHObjectHImageHobject (byte)

相机 1 的校正图像。

ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2 (输入对象)  singlechannelimage objectHImageHObjectHImageHobject (byte)

相机 2 的校正图像。

DistanceDistanceDistanceDistancedistancedistance (输出对象)  singlechannelimage objectHImageHObjectHImageHobject * (real)

距离图像。

ScoreScoreScoreScorescorescore (输出对象)  singlechannelimage objectHImageHObjectHImageHobject * (real)

距离值的评估。

CamParamRect1CamParamRect1CamParamRect1CamParamRect1camParamRect1cam_param_rect_1 (输入控制)  campar HCamPar, HTupleSequence[Union[int, float, str]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

校正相机 1 的内部相机参数。

CamParamRect2CamParamRect2CamParamRect2CamParamRect2camParamRect2cam_param_rect_2 (输入控制)  campar HCamPar, HTupleSequence[Union[int, float, str]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

校正相机 2 的内部相机参数。

RelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRectrel_pose_rect (输入控制)  pose HPose, HTupleSequence[Union[int, float]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

从校正后的相机 2 到校正后的相机 1 的点变换。

元素数量: 7

MethodMethodMethodMethodmethodmethod (输入控制)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

匹配函数。

默认值: 'ncc' "ncc" "ncc" "ncc" "ncc" "ncc"

值列表: 'ncc'"ncc""ncc""ncc""ncc""ncc", 'sad'"sad""sad""sad""sad""sad", 'ssd'"ssd""ssd""ssd""ssd""ssd"

MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_width (输入控制)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

相关窗口宽度。

默认值: 11

建议值: 5, 7, 9, 11, 21

限制: 3 <= MaskWidth && odd(MaskWidth)

MaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height (输入控制)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

相关性窗口的高度。

默认值: 11

建议值: 5, 7, 9, 11, 21

限制: 3 <= MaskHeight && odd(MaskHeight)

TextureThreshTextureThreshTextureThreshTextureThreshtextureThreshtexture_thresh (输入控制)  real HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

纹理图像区域的方差阈值。

默认值: 0.0

建议值: 0.0, 2.0, 5.0, 10.0

限制: 0.0 <= TextureThresh

MinDisparityMinDisparityMinDisparityMinDisparityminDisparitymin_disparity (输入控制)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

预期视差的最小值。

默认值: 0

值范围: -32768 ≤ MinDisparity MinDisparity MinDisparity MinDisparity minDisparity min_disparity ≤ 32767

MaxDisparityMaxDisparityMaxDisparityMaxDisparitymaxDisparitymax_disparity (输入控制)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

预期视差的最大值。

默认值: 30

值范围: -32768 ≤ MaxDisparity MaxDisparity MaxDisparity MaxDisparity maxDisparity max_disparity ≤ 32767

NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels (输入控制)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

金字塔层数。

默认值: 1

建议值: 1, 2, 3, 4

限制: 1 <= NumLevels

ScoreThreshScoreThreshScoreThreshScoreThreshscoreThreshscore_thresh (输入控制)  real HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

相关函数的阈值。

默认值: 0.0

建议值: 0.0, 2.0, 5.0, 10.0

FilterFilterFilterFilterfilterfilter (输入控制)  string(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

下游滤波器。

默认值: 'none' "none" "none" "none" "none" "none"

值列表: 'left_right_check'"left_right_check""left_right_check""left_right_check""left_right_check""left_right_check", 'none'"none""none""none""none""none"

SubDistanceSubDistanceSubDistanceSubDistancesubDistancesub_distance (输入控制)  string(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

距离插值。

默认值: 'none' "none" "none" "none" "none" "none"

值列表: 'interpolation'"interpolation""interpolation""interpolation""interpolation""interpolation", 'none'"none""none""none""none""none"

示例(HDevelop)

* Set internal and external stereo parameters.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -665, 5.2e-006, 5.2e-006, \
                                622, 517, 1280, 1024, CamParam1)
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
                                654, 519, 1280, 1024, CamParam2)
create_pose (0.1535,-0.0037,0.0447,0.17,319.84,359.89, \
             'Rp+T', 'gba', 'point', RelPose)
* Compute the mapping for rectified images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', \
                                 'bilinear', CamParamRect1, CamParamRect2, \
                                 Cam1PoseRect1, Cam2PoseRect2, RelPoseRect)
* Compute the distance values in online images.
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageRect1)

  grab_image_async (Image2, AcqHandle2, -1)
  map_image (Image2, Map2, ImageRect2)

  binocular_distance (ImageRect1, ImageRect2, Distance, Score, \
                      CamParamRect1, CamParamRect2, RelPoseRect, 'sad', \
                      11, 11, 20, -40, 20, 2, 25, \
                      'left_right_check', 'interpolation')
endwhile

示例(HDevelop)

* Set internal and external stereo parameters.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -665, 5.2e-006, 5.2e-006, \
                                622, 517, 1280, 1024, CamParam1)
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
                                654, 519, 1280, 1024, CamParam2)
create_pose (0.1535,-0.0037,0.0447,0.17,319.84,359.89, \
             'Rp+T', 'gba', 'point', RelPose)
* Compute the mapping for rectified images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', \
                                 'bilinear', CamParamRect1, CamParamRect2, \
                                 Cam1PoseRect1, Cam2PoseRect2, RelPoseRect)
* Compute the distance values in online images.
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageRect1)

  grab_image_async (Image2, AcqHandle2, -1)
  map_image (Image2, Map2, ImageRect2)

  binocular_distance (ImageRect1, ImageRect2, Distance, Score, \
                      CamParamRect1, CamParamRect2, RelPoseRect, 'sad', \
                      11, 11, 20, -40, 20, 2, 25, \
                      'left_right_check', 'interpolation')
endwhile

示例(HDevelop)

* Set internal and external stereo parameters.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -665, 5.2e-006, 5.2e-006, \
                                622, 517, 1280, 1024, CamParam1)
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
                                654, 519, 1280, 1024, CamParam2)
create_pose (0.1535,-0.0037,0.0447,0.17,319.84,359.89, \
             'Rp+T', 'gba', 'point', RelPose)
* Compute the mapping for rectified images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', \
                                 'bilinear', CamParamRect1, CamParamRect2, \
                                 Cam1PoseRect1, Cam2PoseRect2, RelPoseRect)
* Compute the distance values in online images.
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageRect1)

  grab_image_async (Image2, AcqHandle2, -1)
  map_image (Image2, Map2, ImageRect2)

  binocular_distance (ImageRect1, ImageRect2, Distance, Score, \
                      CamParamRect1, CamParamRect2, RelPoseRect, 'sad', \
                      11, 11, 20, -40, 20, 2, 25, \
                      'left_right_check', 'interpolation')
endwhile

示例(HDevelop)

* Set internal and external stereo parameters.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -665, 5.2e-006, 5.2e-006, \
                                622, 517, 1280, 1024, CamParam1)
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
                                654, 519, 1280, 1024, CamParam2)
create_pose (0.1535,-0.0037,0.0447,0.17,319.84,359.89, \
             'Rp+T', 'gba', 'point', RelPose)
* Compute the mapping for rectified images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', \
                                 'bilinear', CamParamRect1, CamParamRect2, \
                                 Cam1PoseRect1, Cam2PoseRect2, RelPoseRect)
* Compute the distance values in online images.
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageRect1)

  grab_image_async (Image2, AcqHandle2, -1)
  map_image (Image2, Map2, ImageRect2)

  binocular_distance (ImageRect1, ImageRect2, Distance, Score, \
                      CamParamRect1, CamParamRect2, RelPoseRect, 'sad', \
                      11, 11, 20, -40, 20, 2, 25, \
                      'left_right_check', 'interpolation')
endwhile

示例(HDevelop)

* Set internal and external stereo parameters.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -665, 5.2e-006, 5.2e-006, \
                                622, 517, 1280, 1024, CamParam1)
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
                                654, 519, 1280, 1024, CamParam2)
create_pose (0.1535,-0.0037,0.0447,0.17,319.84,359.89, \
             'Rp+T', 'gba', 'point', RelPose)
* Compute the mapping for rectified images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', \
                                 'bilinear', CamParamRect1, CamParamRect2, \
                                 Cam1PoseRect1, Cam2PoseRect2, RelPoseRect)
* Compute the distance values in online images.
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageRect1)

  grab_image_async (Image2, AcqHandle2, -1)
  map_image (Image2, Map2, ImageRect2)

  binocular_distance (ImageRect1, ImageRect2, Distance, Score, \
                      CamParamRect1, CamParamRect2, RelPoseRect, 'sad', \
                      11, 11, 20, -40, 20, 2, 25, \
                      'left_right_check', 'interpolation')
endwhile

结果

binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparitybinocular_disparity 在所有参数值正确时返回 2 ( H_MSG_TRUE )。如有必要,则抛出异常。

可能的前趋

map_imagemap_imageMapImageMapImageMapImagemap_image

可能的后继

thresholdthresholdThresholdThresholdThresholdthreshold

替代

binocular_distance_mgbinocular_distance_mgBinocularDistanceMgBinocularDistanceMgBinocularDistanceMgbinocular_distance_mg, binocular_distance_msbinocular_distance_msBinocularDistanceMsBinocularDistanceMsBinocularDistanceMsbinocular_distance_ms, binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparitybinocular_disparity, binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMgBinocularDisparityMgbinocular_disparity_mg, binocular_disparity_msbinocular_disparity_msBinocularDisparityMsBinocularDisparityMsBinocularDisparityMsbinocular_disparity_ms

另见

map_imagemap_imageMapImageMapImageMapImagemap_image, gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMapgen_binocular_rectification_map, binocular_calibrationbinocular_calibrationBinocularCalibrationBinocularCalibrationBinocularCalibrationbinocular_calibration, distance_to_disparitydistance_to_disparityDistanceToDisparityDistanceToDisparityDistanceToDisparitydistance_to_disparity, disparity_to_distancedisparity_to_distanceDisparityToDistanceDisparityToDistanceDisparityToDistancedisparity_to_distance, disparity_image_to_xyzdisparity_image_to_xyzDisparityImageToXyzDisparityImageToXyzDisparityImageToXyzdisparity_image_to_xyz

模块

三维计量