4.7.1 Pixel-wise Block-Matching

Performs block-matching to estimate pixel-wise disparities between two images

Detailed description

This application allows to performs block-matching to estimate pixel-wise disparities between two images. The application allows to choose the block-matching method to use. It also allows to input masks (related to the left and right input image) of pixels for which the disparity should be investigated. Additionally, two criteria can be optionally used to disable disparity investigation for some pixel: a no-data value, and a threshold on the local variance. This allows to speed-up computation by avoiding to investigate disparities that will not be reliable anyway. For efficiency reasons, if the optimal metric values image is desired, it will be concatenated to the output image (which will then have three bands : horizontal disparity, vertical disparity and metric value). One can split these images afterward.

Parameters

This section describes in details the parameters available for this application. Table 4.38, page 447 presents a summary of these parameters and the parameters keys to be used in command-line and programming languages. Application key is BlockMatching.





Parameter key

Parameter type

Parameter description




io

Group

Input and output data

io.inleft

Input image

Left input image

io.inright

Input image

Right input image

io.out

Output image

The output disparity map

io.outmask

Output image

The output mask corresponding to all criterions

io.outmetric

Boolean

Output optimal metric values as well

mask

Group

Image masking parameters

mask.inleft

Input image

Discard left pixels from mask image

mask.inright

Input image

Discard right pixels from mask image

mask.nodata

Float

Discard pixels with no-data value

mask.variancet

Float

Discard pixels with low local variance

bm

Group

Block matching parameters

bm.metric

Choices

Block-matching metric

bm.metric ssd

Choice

Sum of Squared Distances

bm.metric ncc

Choice

Normalized Cross-Correlation

bm.metric lp

Choice

Lp pseudo-norm

bm.metric.lp.p

Float

p value

bm.radius

Int

Radius of blocks

bm.minhd

Int

Minimum horizontal disparity

bm.maxhd

Int

Maximum horizontal disparity

bm.minvd

Int

Minimum vertical disparity

bm.maxvd

Int

Maximum vertical disparity

bm.subpixel

Choices

Sub-pixel interpolation

bm.subpixel none

Choice

None

bm.subpixel parabolic

Choice

Parabolic

bm.subpixel triangular

Choice

Triangular

bm.subpixel dichotomy

Choice

Dichotomy

bm.medianfilter

Group

Median filtering

bm.medianfilter.radius

Int

Radius

bm.medianfilter.incoherence

Float

Incoherence threshold

bm.initdisp

Choices

Initial disparities

bm.initdisp none

Choice

None

bm.initdisp uniform

Choice

Uniform initial disparity

bm.initdisp maps

Choice

Initial disparity maps

bm.initdisp.uniform.hdisp

Int

Horizontal initial disparity

bm.initdisp.uniform.vdisp

Int

Vertical initial disparity

bm.initdisp.uniform.hrad

Int

Horizontal exploration radius

bm.initdisp.uniform.vrad

Int

Vertical exploration radius

bm.initdisp.maps.hmap

Input image

Horizontal initial disparity map

bm.initdisp.maps.vmap

Input image

Vertical initial disparity map

bm.initdisp.maps.hrad

Int

Horizontal exploration radius

bm.initdisp.maps.vrad

Int

Vertical exploration radius

ram

Int

Available RAM (Mb)





Table 4.38: Parameters table for Pixel-wise Block-Matching.

Input and output data This group of parameters allows to set the input and output images.

Image masking parameters This group of parameters allows to determine the masking parameters to prevent disparities estimation for some pixels of the left image

Block matching parameters This group of parameters allow to tune the block-matching behaviour

Available RAM (Mb) Available memory for processing (in MB)

Example

To run this example in command-line, use the following:

otbcli_BlockMatching -io.inleft StereoFixed.png -io.inright StereoMoving.png -bm.minhd -10 -bm.maxhd 10 -mask.variancet 10 -io.out MyDisparity.tif

To run this example from Python, use the following code snippet:

#!/usr/bin/python 
 
# Import the otb applications package 
import otbApplication 
 
# The following line creates an instance of the BlockMatching application 
BlockMatching = otbApplication.Registry.CreateApplication("BlockMatching") 
 
# The following lines set all the application parameters: 
BlockMatching.SetParameterString("io.inleft", "StereoFixed.png") 
 
BlockMatching.SetParameterString("io.inright", "StereoMoving.png") 
 
BlockMatching.SetParameterInt("bm.minhd", -10) 
 
BlockMatching.SetParameterInt("bm.maxhd", 10) 
 
BlockMatching.SetParameterFloat("mask.variancet", 10) 
 
BlockMatching.SetParameterString("io.out", "MyDisparity.tif") 
 
# The following line execute the application 
BlockMatching.ExecuteAndWriteOutput()

Limitations

None

Authors

This application has been written by OTB-Team.

See also

These additional ressources can be useful for further information: