Skip to content

binocular_distanceBinocularDistanceBinocularDistancebinocular_distanceT_binocular_distanceπŸ”—

Short descriptionπŸ”—

binocular_distanceBinocularDistanceBinocularDistancebinocular_distanceT_binocular_distance β€” Compute the distance values for a rectified stereo image pair using correlation techniques.

SignatureπŸ”—

binocular_distance( image ImageRect1, image ImageRect2, out image Distance, out image Score, campar CamParamRect1, campar CamParamRect2, pose RelPoseRect, string Method, integer MaskWidth, integer MaskHeight, real TextureThresh, integer MinDisparity, integer MaxDisparity, integer NumLevels, real ScoreThresh, string Filter, string 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 )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 )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]

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 )

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)

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 )

DescriptionπŸ”—

binocular_distanceBinocularDistance computes the distance values for a rectified stereo image pair using correlation techniques. The operator first calculates the disparities between the two images ImageRect1imageRect1image_rect_1 and ImageRect2imageRect2image_rect_2 similar to binocular_disparityBinocularDisparity. The resulting disparities are transformed into distance values of the corresponding 3D world points to the rectified stereo camera system as in disparity_to_distanceDisparityToDistance. The distances are returned in the single-channel image Distancedistancedistance in which each gray value represents the distance of the respective 3D world point to the stereo camera system.

The algorithm requires a reference image ImageRect1imageRect1image_rect_1 and a search image ImageRect2imageRect2image_rect_2 which must be rectified, i.e., corresponding epipolar lines are parallel and lie on identical image rows (\(r_{1}=r_{2}\)). In case this assumption is violated the images can be rectified by using the operators calibrate_camerasCalibrateCameras, gen_binocular_rectification_mapGenBinocularRectificationMap and map_imageMapImage. Hence, given a pixel in the reference image ImageRect1imageRect1image_rect_1 the homologous pixel in ImageRect2imageRect2image_rect_2 is selected by searching along the corresponding row in ImageRect2imageRect2image_rect_2 and matching a local neighborhood within a rectangular window of size MaskWidthmaskWidthmask_width and MaskHeightmaskHeightmask_height. For each defined reference pixel the pixel correspondences are transformed into distances of the world points defined by the intersection of the lines of sight of a corresponding pixel pair to the \(z=0\) plane of the rectified stereo system.

For this transformation the rectified internal camera parameters CamParamRect1camParamRect1cam_param_rect_1 of camera 1 and CamParamRect2camParamRect2cam_param_rect_2 of camera 2, and the pose with the external parameters RelPoseRectrelPoseRectrel_pose_rect have to be defined. Latter one is of the form \(\mvPoseVar{{ccsR1}}{{ccsR2}}\) and characterizes the relative pose of both cameras to each other. More precisely, it specifies the point transformation from the rectified camera system 2 (ccsR2) into the rectified camera system 1 (ccsR1), see Transformations / Poses and β€œSolution Guide III-C - 3D Vision”. These parameters can be obtained from the operator calibrate_camerasCalibrateCameras and gen_binocular_rectification_mapGenBinocularRectificationMap. After all, a quality measure for each distance value is returned in Scorescorescore, containing the best result of the matching function \(S\) of a reference pixel. For the matching, the gray values of the original unprocessed images are used.

  • 'sad'"sad": Summed Absolute Differences

    \[\begin{eqnarray*} S(r,c,d) = \frac{1}{N}\sum\limits_{r'=r-m}^{r+m} \sum\limits_{c'=c-n}^{c+n} \mid g_{1}(r',c')-g_{2}(r',c'+d) \mid \end{eqnarray*}\]

    ,\ with \(0 \le S(r,c,d) \le 255\).

  • 'ssd'"ssd": Summed Squared Differences

    \[\begin{eqnarray*} S(r,c,d) = \frac{1}{N}\sum\limits_{r'=r-m}^{r+m} \sum\limits_{c'=c-n}^{c+n} ( g_{1}(r',c')-g_{2}(r',c'+d) )^{2} \end{eqnarray*}\]

    ,\ with \(0 \le S(r,c,d) \le 65025\).

  • 'ncc'"ncc": Normalized Cross Correlation

    \[\begin{eqnarray*} S(r,c,d) = \frac{\sum\limits_{r'=r-m}^{r+m}\sum\limits_{c'=c-n}^{c+n} (g_{1}(r',c')-\bar{g_{1}}(r,c) ) (g_{2}(r',c'+d)-\bar{g_{2}}(r,c+d)) } {\sqrt{\big(\sum\limits_{r'=r-m}^{r+m}\sum\limits_{c'=c-n}^{c+n} (g_{1}(r',c')-\bar{g_{1}}(r,c) )^{2}\big) \big(\sum\limits_{r'=r-m}^{r+m}\sum\limits_{c'=c-n}^{c+n}(g_{2}(r',c'+d) -\bar{g_{2}}(r,c+d))^{2}\big)}} \end{eqnarray*}\]

    ,\ with \(-1.0 \le S(r,c,d) \le 1.0\).

with

\(r1\), \(c1\), \(r2\), \(c2\): row and column coordinates of the corresponding pixels of the two input images,

\(g1\), \(g2\): gray values of the unprocessed input images,

\(N=(2m+1)(2n+1)\): size of correlation window

\(\bar{g}(r,c) = \frac{1}{N}\sum\limits_{r'=r-m}^{r+m}\sum\limits_{c'=c-n}^{c+n} g(r',c')\): mean value within the correlation window of width \(2m+1\) and height \(2n+1\).

Note that the methods 'sad'"sad" and 'ssd'"ssd" compare the gray values of the pixels within a mask window directly, whereas 'ncc'"ncc" compensates for the mean gray value and its variance within the mask window. Therefore, if the two images differ in brightness and contrast, this method should be preferred. For images with similar brightness and contrast 'sad'"sad" and 'ssd'"ssd" are to be preferred as they are faster because of less complex internal computations. See binocular_disparityBinocularDisparity for further details.

It should be noted that the quality of correlation for rising \(S\) is falling in methods 'sad'"sad" and 'ssd'"ssd" (the best quality value is 0) but rising in method 'ncc'"ncc" (the best quality value is 1.0).

The size of the correlation window (\(2m+1\) and \(2n+1\)) has to be odd numbered and is passed in MaskWidthmaskWidthmask_width and MaskHeightmaskHeightmask_height. The search space is confined by the minimum and maximum disparity value MinDisparityminDisparitymin_disparity and MaxDisparitymaxDisparitymax_disparity. Due to pixel values not defined beyond the image border the resulting domain of Distancedistancedistance and Scorescorescore is generally not set along the image border within a margin of height MaskHeightmaskHeightmask_height/2 at the top and bottom border and of width MaskWidthmaskWidthmask_width/2 at the left and right border. For the same reason, the maximum disparity range is reduced at the left and right image border.

Since matching turns out to be highly unreliable when dealing with poorly textured areas, the minimum variance within the correlation window can be defined in TextureThreshtextureThreshtexture_thresh. This threshold is applied on both input images ImageRect1imageRect1image_rect_1 and ImageRect2imageRect2image_rect_2. In addition, ScoreThreshscoreThreshscore_thresh guarantees the matching quality and defines the maximum ('sad'"sad",'ssd'"ssd") or, respectively, minimum ('ncc'"ncc") score value of the correlation function. Setting Filterfilterfilter to 'left_right_check'"left_right_check", moreover, increases the robustness of the returned matches, as the result relies on a concurrent direct and reverse match, whereas 'none'"none" switches it off.

The number of pyramid levels used to improve the time response of binocular_distanceBinocularDistance is determined by NumLevelsnumLevelsnum_levels. Following a coarse-to-fine scheme disparity images of higher levels are computed and segmented into rectangular subimages to reduce the disparity range on the next lower pyramid level. TextureThreshtextureThreshtexture_thresh and ScoreThreshscoreThreshscore_thresh are applied on every level and the returned domain of the Distancedistancedistance and Scorescorescore images arises from the intersection of the resulting domains of every single level. Generally, pyramid structures are the more advantageous the more the distance image can be segmented into regions of homogeneous distance values and the bigger the disparity range must be specified. As a drawback, coarse pyramid levels might loose important texture information which can result in deficient distance values.

Finally, the value 'interpolation'"interpolation" for parameter SubDistancesubDistancesub_distance increases the refinement and accuracy of the distance values. It is switched off by setting the parameter to 'none'"none".

AttentionπŸ”—

If using cameras with telecentric lenses, the Distancedistancedistance is not defined as the distance of a point to the camera but as the distance from the point to the plane, defined by the y-axes of both cameras and their baseline (see gen_binocular_rectification_mapGenBinocularRectificationMap).

For a stereo setup of mixed type (i.e., for a stereo setup in which one of the original cameras is a perspective camera and the other camera is a telecentric camera; see gen_binocular_rectification_mapGenBinocularRectificationMap), the rectifying plane of the two cameras is in a position with respect to the object that would lead to very unintuitive distances. Therefore, binocular_distanceBinocularDistance does not support a stereo setup of mixed type. For stereo setups of mixed type, please use reconstruct_surface_stereoReconstructSurfaceStereo, in which the reference coordinate system can be chosen arbitrarily. Alternatively, binocular_disparityBinocularDisparity and disparity_image_to_xyzDisparityImageToXyz might be used.

Additionally, stereo setups that contain cameras with and without hypercentric lenses at the same time are not supported.

Execution informationπŸ”—

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Automatically parallelized on internal data level.

ParametersπŸ”—

ImageRect1imageRect1image_rect_1 (input_object) singlechannelimage β†’ object (byte)HObject (byte)HImage (byte)HObject (byte)Hobject (byte)

Rectified image of camera 1.

ImageRect2imageRect2image_rect_2 (input_object) singlechannelimage β†’ object (byte)HObject (byte)HImage (byte)HObject (byte)Hobject (byte)

Rectified image of camera 2.

Distancedistancedistance (output_object) singlechannelimage β†’ object (real)HObject (real)HImage (real)HObject (real)Hobject * (real)

Distance image.

Scorescorescore (output_object) singlechannelimage β†’ object (real)HObject (real)HImage (real)HObject (real)Hobject * (real)

Evaluation of a distance value.

CamParamRect1camParamRect1cam_param_rect_1 (input_control) campar β†’ (real / integer / string)HTuple (double / Hlong / HString)HCamPar, HTuple (double / int / long / string)Sequence[Union[int, float, str]]Htuple (double / Hlong / char*)

Internal camera parameters of the rectified camera 1.

CamParamRect2camParamRect2cam_param_rect_2 (input_control) campar β†’ (real / integer / string)HTuple (double / Hlong / HString)HCamPar, HTuple (double / int / long / string)Sequence[Union[int, float, str]]Htuple (double / Hlong / char*)

Internal camera parameters of the rectified camera 2.

RelPoseRectrelPoseRectrel_pose_rect (input_control) pose β†’ (real / integer)HTuple (double / Hlong)HPose, HTuple (double / int / long)Sequence[Union[int, float]]Htuple (double / Hlong)

Point transformation from the rectified camera 2 to the rectified camera 1.

Number of elements: 7

Methodmethodmethod (input_control) string β†’ (string)HTuple (HString)HTuple (string)strHtuple (char*)

Matching function.

Default: 'ncc'"ncc"
List of values: 'ncc', 'sad', 'ssd'"ncc", "sad", "ssd"

MaskWidthmaskWidthmask_width (input_control) integer β†’ (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Width of the correlation window.

Default: 1111
Suggested values: 5, 7, 9, 11, 215, 7, 9, 11, 21
Restriction: 3 <= MaskWidth && odd(MaskWidth)

MaskHeightmaskHeightmask_height (input_control) integer β†’ (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Height of the correlation window.

Default: 1111
Suggested values: 5, 7, 9, 11, 215, 7, 9, 11, 21
Restriction: 3 <= MaskHeight && odd(MaskHeight)

TextureThreshtextureThreshtexture_thresh (input_control) real β†’ (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)

Variance threshold of textured image regions.

Default: 0.00.0
Suggested values: 0.0, 2.0, 5.0, 10.00.0, 2.0, 5.0, 10.0
Restriction: 0.0 <= TextureThresh

MinDisparityminDisparitymin_disparity (input_control) integer β†’ (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Minimum of the expected disparities.

Default: 00
Value range: -32768 ≀ MinDisparity ≀ 32767

MaxDisparitymaxDisparitymax_disparity (input_control) integer β†’ (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Maximum of the expected disparities.

Default: 3030
Value range: -32768 ≀ MaxDisparity ≀ 32767

NumLevelsnumLevelsnum_levels (input_control) integer β†’ (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Number of pyramid levels.

Default: 11
Suggested values: 1, 2, 3, 41, 2, 3, 4
Restriction: 1 <= NumLevels

ScoreThreshscoreThreshscore_thresh (input_control) real β†’ (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)

Threshold of the correlation function.

Default: 0.00.0
Suggested values: 0.0, 2.0, 5.0, 10.00.0, 2.0, 5.0, 10.0

Filterfilterfilter (input_control) string(-array) β†’ (string)HTuple (HString)HTuple (string)MaybeSequence[str]Htuple (char*)

Downstream filters.

Default: 'none'"none"
List of values: 'left_right_check', 'none'"left_right_check", "none"

SubDistancesubDistancesub_distance (input_control) string(-array) β†’ (string)HTuple (HString)HTuple (string)MaybeSequence[str]Htuple (char*)

Distance interpolation.

Default: 'none'"none"
List of values: 'interpolation', 'none'"interpolation", "none"

ExampleπŸ”—

(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
(C++)
// 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,
                                &CamPoseRect1,&CamPoseRect2,&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,RelPose,"sad",
                     11,11,20,-40,20,2,25,
                     "left_right_check","interpolation")\;
}

ResultπŸ”—

binocular_disparityBinocularDisparity returns 2 (H_MSG_TRUE) if all parameter values are correct. If necessary, an exception is raised.

Combinations with other operatorsπŸ”—

Combinations

Possible predecessors

map_imageMapImage

Possible successors

thresholdThreshold

Alternatives

binocular_distance_mgBinocularDistanceMg, binocular_distance_msBinocularDistanceMs, binocular_disparityBinocularDisparity, binocular_disparity_mgBinocularDisparityMg, binocular_disparity_msBinocularDisparityMs

See also

map_imageMapImage, gen_binocular_rectification_mapGenBinocularRectificationMap, binocular_calibrationBinocularCalibration, distance_to_disparityDistanceToDisparity, disparity_to_distanceDisparityToDistance, disparity_image_to_xyzDisparityImageToXyz

ModuleπŸ”—

3D Metrology