Name
binocular_disparity binocular_disparity BinocularDisparity BinocularDisparity — Compute the disparities of a rectified image pair using correlation
techniques.
binocular_disparity (ImageRect1 , ImageRect2 : Disparity , Score : Method , MaskWidth , MaskHeight , TextureThresh , MinDisparity , MaxDisparity , NumLevels , ScoreThresh , Filter , SubDisparity : )
Herror binocular_disparity (const Hobject ImageRect1 , const Hobject ImageRect2 , Hobject* Disparity , Hobject* Score , const char* Method , const Hlong MaskWidth , const Hlong MaskHeight , double TextureThresh , const Hlong MinDisparity , const Hlong MaxDisparity , const Hlong NumLevels , double ScoreThresh , const char* Filter , const char* SubDisparity )
Herror T_binocular_disparity (const Hobject ImageRect1 , const Hobject ImageRect2 , Hobject* Disparity , Hobject* Score , 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 SubDisparity )
void BinocularDisparity (const HObject& ImageRect1 , const HObject& ImageRect2 , HObject* Disparity , HObject* Score , 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& SubDisparity )
HImage HImage ::BinocularDisparity (const HImage& ImageRect2 , HImage* Score , const HString& Method , Hlong MaskWidth , Hlong MaskHeight , const HTuple& TextureThresh , Hlong MinDisparity , Hlong MaxDisparity , Hlong NumLevels , const HTuple& ScoreThresh , const HTuple& Filter , const HString& SubDisparity ) const
HImage HImage ::BinocularDisparity (const HImage& ImageRect2 , HImage* Score , const HString& Method , Hlong MaskWidth , Hlong MaskHeight , double TextureThresh , Hlong MinDisparity , Hlong MaxDisparity , Hlong NumLevels , double ScoreThresh , const HString& Filter , const HString& SubDisparity ) const
HImage HImage ::BinocularDisparity (const HImage& ImageRect2 , HImage* Score , const char* Method , Hlong MaskWidth , Hlong MaskHeight , double TextureThresh , Hlong MinDisparity , Hlong MaxDisparity , Hlong NumLevels , double ScoreThresh , const char* Filter , const char* SubDisparity ) const
static void HOperatorSet .BinocularDisparity (HObject imageRect1 , HObject imageRect2 , out HObject disparity , out HObject score , HTuple method , HTuple maskWidth , HTuple maskHeight , HTuple textureThresh , HTuple minDisparity , HTuple maxDisparity , HTuple numLevels , HTuple scoreThresh , HTuple filter , HTuple subDisparity )
HImage HImage .BinocularDisparity (HImage imageRect2 , out HImage score , string method , int maskWidth , int maskHeight , HTuple textureThresh , int minDisparity , int maxDisparity , int numLevels , HTuple scoreThresh , HTuple filter , string subDisparity )
HImage HImage .BinocularDisparity (HImage imageRect2 , out HImage score , string method , int maskWidth , int maskHeight , double textureThresh , int minDisparity , int maxDisparity , int numLevels , double scoreThresh , string filter , string subDisparity )
binocular_disparity binocular_disparity BinocularDisparity BinocularDisparity BinocularDisparity computes pixel-wise correspondences
between two rectified images using correlation techniques. Different
from binocular_distance binocular_distance BinocularDistance BinocularDistance BinocularDistance the results are not transformed into
distance values.
The algorithm requires a reference image ImageRect1 ImageRect1 ImageRect1 ImageRect1 imageRect1 and a
search image ImageRect2 ImageRect2 ImageRect2 ImageRect2 imageRect2 which must be rectified, i.e.,
corresponding epipolar lines are parallel and lie on identical image
rows (
). In case this assumption is
violated the images can be rectified by using the operators
calibrate_cameras calibrate_cameras CalibrateCameras CalibrateCameras CalibrateCameras , gen_binocular_rectification_map gen_binocular_rectification_map GenBinocularRectificationMap GenBinocularRectificationMap GenBinocularRectificationMap ,
and map_image map_image MapImage MapImage MapImage . Hence, given a pixel in the reference image
ImageRect1 ImageRect1 ImageRect1 ImageRect1 imageRect1 the homologous pixel in ImageRect2 ImageRect2 ImageRect2 ImageRect2 imageRect2 is
selected by searching along the corresponding row in
ImageRect2 ImageRect2 ImageRect2 ImageRect2 imageRect2 and matching a local neighborhood within a
rectangular window of size MaskWidth MaskWidth MaskWidth MaskWidth maskWidth and
MaskHeight MaskHeight MaskHeight MaskHeight maskHeight . The pixel correspondences are returned in the
single-channel Disparity Disparity Disparity Disparity disparity image
which specifies for each pixel (r1,c1) of the
reference image ImageRect1 ImageRect1 ImageRect1 ImageRect1 imageRect1 a suitable matching pixel
(r2,c2) of ImageRect2 ImageRect2 ImageRect2 ImageRect2 imageRect2 according to the equation
. A quality measure
for each disparity value is returned in Score Score Score Score score , 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.
The used matching function is defined by the parameter
Method Method Method Method method allocating three different kinds of correlation:
'sad' "sad" "sad" "sad" "sad" : Summed Absolute Differences
'ssd' "ssd" "ssd" "ssd" "ssd" : Summed Squared Differences
'ncc' "ncc" "ncc" "ncc" "ncc" : Normalized Cross Correlation
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
mean value within the correlation window of width
2m+1 and height 2n+1.
Note that the methods 'sad' "sad" "sad" "sad" "sad" and 'ssd' "ssd" "ssd" "ssd" "ssd" compare the
gray values of the pixels within a mask window directly, whereas
'ncc' "ncc" "ncc" "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" "sad" "sad" "sad" and
'ssd' "ssd" "ssd" "ssd" "ssd" are to be preferred as they are faster because of
less complex internal computations.
It should be noted, that the quality of correlation for rising
S is falling in methods 'sad' "sad" "sad" "sad" "sad" and 'ssd' "ssd" "ssd" "ssd" "ssd"
(the best quality value is 0) but rising in method 'ncc' "ncc" "ncc" "ncc" "ncc"
(the best quality value is 1.0).
The size of the correlation window, referenced by 2m+1
and 2n+1, has to be odd numbered and is passed in
MaskWidth MaskWidth MaskWidth MaskWidth maskWidth and MaskHeight MaskHeight MaskHeight MaskHeight maskHeight . The search space is
confined by the minimum and maximum disparity value
MinDisparity MinDisparity MinDisparity MinDisparity minDisparity and MaxDisparity MaxDisparity MaxDisparity MaxDisparity maxDisparity . Due to pixel values
not defined beyond the image border the resulting domain of
Disparity Disparity Disparity Disparity disparity and Score Score Score Score score is not set along the image
border within a margin of height (MaskHeight MaskHeight MaskHeight MaskHeight maskHeight -1)/2 at the
top and bottom border and of width (MaskWidth MaskWidth MaskWidth MaskWidth maskWidth -1)/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 statistical spread of gray values
within the correlation window can be defined in
TextureThresh TextureThresh TextureThresh TextureThresh textureThresh . This threshold is applied on both input
images ImageRect1 ImageRect1 ImageRect1 ImageRect1 imageRect1 and ImageRect2 ImageRect2 ImageRect2 ImageRect2 imageRect2 . In addition,
ScoreThresh ScoreThresh ScoreThresh ScoreThresh scoreThresh guarantees the matching quality and defines the
maximum ('sad' "sad" "sad" "sad" "sad" ,'ssd' "ssd" "ssd" "ssd" "ssd" ) or, respectively, minimum
('ncc' "ncc" "ncc" "ncc" "ncc" ) score value of the correlation function. Setting
Filter Filter Filter Filter filter to 'left_right_check' "left_right_check" "left_right_check" "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" "none" "none" "none"
switches it off.
The number of pyramid levels used to improve the time response of
binocular_disparity binocular_disparity BinocularDisparity BinocularDisparity BinocularDisparity is determined by
NumLevels NumLevels NumLevels NumLevels numLevels . Following a coarse-to-fine scheme disparity
images of higher levels are computed and segmented into rectangular
subimages of similar disparity to reduce the disparity range on the
next lower pyramid level. TextureThresh TextureThresh TextureThresh TextureThresh textureThresh and
ScoreThresh ScoreThresh ScoreThresh ScoreThresh scoreThresh are applied on every level and the returned
domain of the Disparity Disparity Disparity Disparity disparity and Score Score Score Score score images arises
from the intersection of the resulting domains of every single
level. Generally, pyramid structures are the more advantageous the
more the disparity image can be segmented into regions of
homogeneous disparities and the bigger the disparity range is
specified. As a drawback, coarse pyramid levels might loose
important texture information which can result in deficient
disparity values.
Finally, the value 'interpolation' "interpolation" "interpolation" "interpolation" "interpolation" for parameter
SubDisparity SubDisparity SubDisparity SubDisparity subDisparity performs subpixel refinement of
disparities. It is switched off by setting the parameter to
'none' "none" "none" "none" "none" .
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.
Rectified image of camera 1.
Rectified image of camera 2.
Evaluation of the disparity values.
Matching function.
Default value:
'ncc'
"ncc"
"ncc"
"ncc"
"ncc"
List of values: 'ncc' "ncc" "ncc" "ncc" "ncc" , 'sad' "sad" "sad" "sad" "sad" , 'ssd' "ssd" "ssd" "ssd" "ssd"
Width of the correlation window.
Default value: 11
Suggested values: 5, 7, 9, 11, 21
Restriction: 3 <= MaskWidth && odd(MaskWidth)
Height of the correlation window.
Default value: 11
Suggested values: 5, 7, 9, 11, 21
Restriction: 3 <= MaskHeight && odd(MaskHeight)
Variance threshold of textured image regions.
Default value: 0.0
Suggested values: 0.0, 10.0, 30.0
Restriction: 0.0 <= TextureThresh
Minimum of the expected disparities.
Default value: -30
Typical range of values: -32768
≤
MinDisparity
MinDisparity
MinDisparity
MinDisparity
minDisparity
≤
32767
Maximum of the expected disparities.
Default value: 30
Typical range of values: -32768
≤
MaxDisparity
MaxDisparity
MaxDisparity
MaxDisparity
maxDisparity
≤
32767
Number of pyramid levels.
Default value: 1
Suggested values: 1, 2, 3, 4
Restriction: 1 <= NumLevels
Threshold of the correlation function.
Default value: 0.5
Suggested values: -1.0, 0.0, 0.3, 0.5, 0.7
Downstream filters.
Default value:
'none'
"none"
"none"
"none"
"none"
List of values: 'left_right_check' "left_right_check" "left_right_check" "left_right_check" "left_right_check" , 'none' "none" "none" "none" "none"
Subpixel interpolation of disparities.
Default value:
'none'
"none"
"none"
"none"
"none"
List of values: 'interpolation' "interpolation" "interpolation" "interpolation" "interpolation" , 'none' "none" "none" "none" "none"
* 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, 'geometric', 'bilinear', CamParamRect1,CamParamRect2, Cam1PoseRect1, \
Cam2PoseRect2,RelPoseRect)
* Compute the disparities 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_disparity(ImageRect1, ImageRect2, Disparity, Score, 'sad', \
11, 11, 20, -40, 20, 2, 25, 'left_right_check','interpolation')
endwhile
* 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, 'geometric', 'bilinear', CamParamRect1,CamParamRect2, Cam1PoseRect1, \
Cam2PoseRect2,RelPoseRect)
* Compute the disparities 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_disparity(ImageRect1, ImageRect2, Disparity, Score, 'sad', \
11, 11, 20, -40, 20, 2, 25, 'left_right_check','interpolation')
endwhile
* 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, 'geometric', 'bilinear', CamParamRect1,CamParamRect2, Cam1PoseRect1, \
Cam2PoseRect2,RelPoseRect)
* Compute the disparities 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_disparity(ImageRect1, ImageRect2, Disparity, Score, 'sad', \
11, 11, 20, -40, 20, 2, 25, 'left_right_check','interpolation')
endwhile
* 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, 'geometric', 'bilinear', CamParamRect1,CamParamRect2, Cam1PoseRect1, \
Cam2PoseRect2,RelPoseRect)
* Compute the disparities 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_disparity(ImageRect1, ImageRect2, Disparity, Score, 'sad', \
11, 11, 20, -40, 20, 2, 25, 'left_right_check','interpolation')
endwhile
* 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, 'geometric', 'bilinear', CamParamRect1,CamParamRect2, Cam1PoseRect1, \
Cam2PoseRect2,RelPoseRect)
* Compute the disparities 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_disparity(ImageRect1, ImageRect2, Disparity, Score, 'sad', \
11, 11, 20, -40, 20, 2, 25, 'left_right_check','interpolation')
endwhile
binocular_disparity binocular_disparity BinocularDisparity BinocularDisparity BinocularDisparity returns 2 (H_MSG_TRUE) if all parameter values are
correct. If necessary, an exception is raised.
map_image map_image MapImage MapImage MapImage
threshold threshold Threshold Threshold Threshold ,
disparity_to_distance disparity_to_distance DisparityToDistance DisparityToDistance DisparityToDistance ,
disparity_image_to_xyz disparity_image_to_xyz DisparityImageToXyz DisparityImageToXyz DisparityImageToXyz
binocular_disparity_mg binocular_disparity_mg BinocularDisparityMg BinocularDisparityMg BinocularDisparityMg ,
binocular_disparity_ms binocular_disparity_ms BinocularDisparityMs BinocularDisparityMs BinocularDisparityMs ,
binocular_distance binocular_distance BinocularDistance BinocularDistance BinocularDistance ,
binocular_distance_mg binocular_distance_mg BinocularDistanceMg BinocularDistanceMg BinocularDistanceMg ,
binocular_distance_ms binocular_distance_ms BinocularDistanceMs BinocularDistanceMs BinocularDistanceMs
map_image map_image MapImage MapImage MapImage ,
gen_binocular_rectification_map gen_binocular_rectification_map GenBinocularRectificationMap GenBinocularRectificationMap GenBinocularRectificationMap ,
binocular_calibration binocular_calibration BinocularCalibration BinocularCalibration BinocularCalibration
3D Metrology