OTB.BlockMatching: Performs block-matching to estimate pixel-wise disparities between two images.

This application allows one to performs block-matching to estimate pixel-wise disparities for a pair of images in epipolar geometry.This application is part of the stereovision pipeline. It can be used after having computed epipolar grids (with StereoRectificationGridGenerator) and resampled each input image into epipolar geometry (with GridBasedImageResampling).The application searches locally for the displacement between a reference image and a secondary image. The correspondence is evaluated for each pixel, based on a pair of local neighborhood windows. The displacement evaluated can be 1D (along lines) or 2D. Parameters allow setting the minimum and maximum disparities to search (both for horizontal and vertical directions). A winner-take-all approach is used to select the best match. There are different metrics implemented to evaluate the match between two local windows: * SSD : Sum of Squared Distances * NCC : Normalized Cross-Correlation * Lp : Lp pseudo normOnce the best integer disparity is found, an optional step of sub-pixel disparity estimation can be performed, with various algorithms (triangular interpolation, parabollic interpolation, dichotimic search). As post-processing, there is an optional step of median filtering on the disparities. One can chose 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 one to speed-up computation by avoiding to investigate disparities that will not be reliable anyway. For efficiency reasons, if the image of optimal metric values 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.

Inputs

The left input image (reference).It should have the same size and same physical space as the right input. This image can be generated by GridBasedImageResampling

format
href
Please set a value for io.inleft.

The right input (secondary).It should have the same size and same physical space as the left input. This image can be generated by GridBasedImageResampling

format
href
Please set a value for io.inright.

An image containing the estimated disparities as well as the metric values if the option is used. If no metric is output and no sub-pixel interpolation is done, pixel type canbe a signed integer. In the other cases, floating point pixel is advised.

string
Please set a value for io.out.

An output mask image corresponding to all citerions (see masking parameters). Only required if variance threshold or nodata criterions are set. Output pixel type is unsigned 8bit by default.

string

If enabled, the output image will have a third component with metric optimal values

boolean
Please set a value for io.outmetric.

This parameter allows providing a custom mask for the left image. Block matching will be only perform on pixels inside the mask (non-zero values).

format
href
Please set a value for mask.inleft.

This parameter allows providing a custom mask for the right image. Block matching will be perform only on pixels inside the mask (non-zero values).

format
href
Please set a value for mask.inright.

This parameter allows discarding pixels whose value is equal to the user-defined no-data value.

number

This parameter allows discarding pixels whose local variance is too small (the size of the neighborhood is given by the radius parameter)

number

Metric to evaluate matching between two local windows.

string
Please set a value for bm.metric.

Value of the p parameter in Lp pseudo-norm (must be positive).

number
Please set a value for bm.metric.lp.p.

The radius (in pixels) of blocks in Block-Matching

integer
Please set a value for bm.radius.

Minimum horizontal disparity to explore (can be negative)

integer
Please set a value for bm.minhd.

Maximum horizontal disparity to explore (can be negative)

integer
Please set a value for bm.maxhd.

Minimum vertical disparity to explore (can be negative)

integer
Please set a value for bm.minvd.

Maximum vertical disparity to explore (can be negative)

integer
Please set a value for bm.maxvd.

Estimate disparities with sub-pixel precision

string
Please set a value for bm.subpixel.

Location step between computed disparities. Disparities will be computed every 'step' pixels in the left image (step for both rows and columns). For instance, a value of 1 corresponds to the classic dense disparity map.

integer

X start index of the subsampled grid (wrt the input image grid). See parameter bm.step

integer

Y start index of the subsampled grid (wrt the input image grid). See parameter bm.step

integer

Radius (in pixels) for median filter

integer

Incoherence threshold between original and filtered disparity

number

bm.initdisp

string
Please set a value for bm.initdisp.

Value of the uniform horizontal disparity initial estimate (in pixels)

integer
Please set a value for bm.initdisp.uniform.hdisp.

Value of the uniform vertical disparity initial estimate (in pixels)

integer
Please set a value for bm.initdisp.uniform.vdisp.

Horizontal exploration radius around the initial disparity estimate (in pixels)

integer
Please set a value for bm.initdisp.uniform.hrad.

Vertical exploration radius around the initial disparity estimate (in pixels)

integer
Please set a value for bm.initdisp.uniform.vrad.

Map of the initial horizontal disparities

format
href
Please set a value for bm.initdisp.maps.hmap.

Map of the initial vertical disparities

format
href
Please set a value for bm.initdisp.maps.vmap.

Horizontal exploration radius around the initial disparity estimate (in pixels)

integer
Please set a value for bm.initdisp.maps.hrad.

Vertical exploration radius around the initial disparity estimate (in pixels)

integer
Please set a value for bm.initdisp.maps.vrad.

Available memory for processing (in MB)

integer

Outputs

An image containing the estimated disparities as well as the metric values if the option is used. If no metric is output and no sub-pixel interpolation is done, pixel type canbe a signed integer. In the other cases, floating point pixel is advised.

format
transmission

An output mask image corresponding to all citerions (see masking parameters). Only required if variance threshold or nodata criterions are set. Output pixel type is unsigned 8bit by default.

format
transmission

Execution options

successUri
inProgressUri
failedUri

format

mode

Execute End Point

View the execution endpoint of a process.

View the alternative version in HTML.

{"id": "OTB.BlockMatching", "title": "Performs block-matching to estimate pixel-wise disparities between two images.", "description": "This application allows one to performs block-matching to estimate pixel-wise disparities for a pair of images in epipolar geometry.This application is part of the stereovision pipeline. It can be used after having computed epipolar grids (with StereoRectificationGridGenerator) and resampled each input image into epipolar geometry (with GridBasedImageResampling).The application searches locally for the displacement between a reference image and a secondary image. The correspondence is evaluated for each pixel, based on a pair of local neighborhood windows. The displacement evaluated can be 1D (along lines) or 2D. Parameters allow setting the minimum and maximum disparities to search (both for horizontal and vertical directions). A winner-take-all approach is used to select the best match. There are different metrics implemented to evaluate the match between two local windows: * SSD : Sum of Squared Distances * NCC : Normalized Cross-Correlation * Lp : Lp pseudo normOnce the best integer disparity is found, an optional step of sub-pixel disparity estimation can be performed, with various algorithms (triangular interpolation, parabollic interpolation, dichotimic search). As post-processing, there is an optional step of median filtering on the disparities. One can chose 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 one to speed-up computation by avoiding to investigate disparities that will not be reliable anyway. For efficiency reasons, if the image of optimal metric values 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.", "version": "1.0.0", "jobControlOptions": ["sync-execute", "async-execute", "dismiss"], "outputTransmission": ["value", "reference"], "links": [{"rel": "http://www.opengis.net/def/rel/ogc/1.0/execute", "type": "application/json", "title": "Execute End Point", "href": "http://tb17.geolabs.fr:8119/ogc-api/processes/OTB.BlockMatching/execution"}, {"rel": "alternate", "type": "text/html", "title": "Execute End Point", "href": "http://tb17.geolabs.fr:8119/ogc-api/processes/OTB.BlockMatching/execution.html"}], "inputs": {"io.inleft": {"title": "The left input image (reference).It should have the same size and same physical space as the right input. This image can be generated by GridBasedImageResampling", "description": "The left input image (reference).It should have the same size and same physical space as the right input. This image can be generated by GridBasedImageResampling", "extended-schema": {"oneOf": [{"allOf": [{"$ref": "http://zoo-project.org/dl/link.json"}, {"type": "object", "properties": {"type": {"enum": ["image/tiff", "image/jpeg", "image/png"]}}}]}, {"type": "object", "required": ["value"], "properties": {"value": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}}}]}, "schema": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}, "id": "io.inleft"}, "io.inright": {"title": "The right input (secondary).It should have the same size and same physical space as the left input. This image can be generated by GridBasedImageResampling", "description": "The right input (secondary).It should have the same size and same physical space as the left input. This image can be generated by GridBasedImageResampling", "extended-schema": {"oneOf": [{"allOf": [{"$ref": "http://zoo-project.org/dl/link.json"}, {"type": "object", "properties": {"type": {"enum": ["image/tiff", "image/jpeg", "image/png"]}}}]}, {"type": "object", "required": ["value"], "properties": {"value": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}}}]}, "schema": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}, "id": "io.inright"}, "io.out": {"title": "An image containing the estimated disparities as well as the metric values if the option is used. If no metric is output and no sub-pixel interpolation is done, pixel type canbe a signed integer. In the other cases, floating point pixel is advised.", "description": "An image containing the estimated disparities as well as the metric values if the option is used. If no metric is output and no sub-pixel interpolation is done, pixel type canbe a signed integer. In the other cases, floating point pixel is advised.", "schema": {"type": "string", "default": "float", "enum": ["uint8", "uint16", "int16", "int32", "int32", "float", "double"]}, "id": "io.out"}, "io.outmask": {"title": "An output mask image corresponding to all citerions (see masking parameters). Only required if variance threshold or nodata criterions are set. Output pixel type is unsigned 8bit by default.", "description": "An output mask image corresponding to all citerions (see masking parameters). Only required if variance threshold or nodata criterions are set. Output pixel type is unsigned 8bit by default.", "schema": {"type": "string", "default": "uint8", "enum": ["uint8", "uint16", "int16", "int32", "int32", "float", "double"], "nullable": true}, "id": "io.outmask"}, "io.outmetric": {"title": "If enabled, the output image will have a third component with metric optimal values", "description": "If enabled, the output image will have a third component with metric optimal values", "schema": {"type": "boolean", "default": false}, "id": "io.outmetric"}, "mask.inleft": {"title": "This parameter allows providing a custom mask for the left image. Block matching will be only perform on pixels inside the mask (non-zero values).", "description": "This parameter allows providing a custom mask for the left image. Block matching will be only perform on pixels inside the mask (non-zero values).", "extended-schema": {"oneOf": [{"allOf": [{"$ref": "http://zoo-project.org/dl/link.json"}, {"type": "object", "properties": {"type": {"enum": ["image/tiff", "image/jpeg", "image/png"]}}}]}, {"type": "object", "required": ["value"], "properties": {"value": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}}}], "nullable": true}, "schema": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}, "id": "mask.inleft"}, "mask.inright": {"title": "This parameter allows providing a custom mask for the right image. Block matching will be perform only on pixels inside the mask (non-zero values).", "description": "This parameter allows providing a custom mask for the right image. Block matching will be perform only on pixels inside the mask (non-zero values).", "extended-schema": {"oneOf": [{"allOf": [{"$ref": "http://zoo-project.org/dl/link.json"}, {"type": "object", "properties": {"type": {"enum": ["image/tiff", "image/jpeg", "image/png"]}}}]}, {"type": "object", "required": ["value"], "properties": {"value": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}}}], "nullable": true}, "schema": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}, "id": "mask.inright"}, "mask.nodata": {"title": "This parameter allows discarding pixels whose value is equal to the user-defined no-data value.", "description": "This parameter allows discarding pixels whose value is equal to the user-defined no-data value.", "schema": {"type": "number", "default": 0, "format": "double", "nullable": true}, "id": "mask.nodata"}, "mask.variancet": {"title": "This parameter allows discarding pixels whose local variance is too small (the size of the neighborhood is given by the radius parameter)", "description": "This parameter allows discarding pixels whose local variance is too small (the size of the neighborhood is given by the radius parameter)", "schema": {"type": "number", "default": 100, "format": "double", "nullable": true}, "id": "mask.variancet"}, "bm.metric": {"title": "Metric to evaluate matching between two local windows.", "description": "Metric to evaluate matching between two local windows.", "schema": {"type": "string", "default": "ssd", "enum": ["ssd", "ncc", "lp"]}, "id": "bm.metric"}, "bm.metric.lp.p": {"title": "Value of the p parameter in Lp pseudo-norm (must be positive).", "description": "Value of the p parameter in Lp pseudo-norm (must be positive).", "schema": {"type": "number", "default": 1, "format": "double"}, "id": "bm.metric.lp.p"}, "bm.radius": {"title": "The radius (in pixels) of blocks in Block-Matching", "description": "The radius (in pixels) of blocks in Block-Matching", "schema": {"type": "integer", "default": 3}, "id": "bm.radius"}, "bm.minhd": {"title": "Minimum horizontal disparity to explore (can be negative)", "description": "Minimum horizontal disparity to explore (can be negative)", "schema": {"type": "integer"}, "id": "bm.minhd"}, "bm.maxhd": {"title": "Maximum horizontal disparity to explore (can be negative)", "description": "Maximum horizontal disparity to explore (can be negative)", "schema": {"type": "integer"}, "id": "bm.maxhd"}, "bm.minvd": {"title": "Minimum vertical disparity to explore (can be negative)", "description": "Minimum vertical disparity to explore (can be negative)", "schema": {"type": "integer"}, "id": "bm.minvd"}, "bm.maxvd": {"title": "Maximum vertical disparity to explore (can be negative)", "description": "Maximum vertical disparity to explore (can be negative)", "schema": {"type": "integer"}, "id": "bm.maxvd"}, "bm.subpixel": {"title": "Estimate disparities with sub-pixel precision", "description": "Estimate disparities with sub-pixel precision", "schema": {"type": "string", "default": "none", "enum": ["none", "parabolic", "triangular", "dichotomy"]}, "id": "bm.subpixel"}, "bm.step": {"title": "Location step between computed disparities. Disparities will be computed every 'step' pixels in the left image (step for both rows and columns). For instance, a value of 1 corresponds to the classic dense disparity map.", "description": "Location step between computed disparities. Disparities will be computed every 'step' pixels in the left image (step for both rows and columns). For instance, a value of 1 corresponds to the classic dense disparity map.", "schema": {"type": "integer", "default": 1, "nullable": true}, "id": "bm.step"}, "bm.startx": {"title": "X start index of the subsampled grid (wrt the input image grid). See parameter bm.step", "description": "X start index of the subsampled grid (wrt the input image grid). See parameter bm.step", "schema": {"type": "integer", "default": 0, "nullable": true}, "id": "bm.startx"}, "bm.starty": {"title": "Y start index of the subsampled grid (wrt the input image grid). See parameter bm.step", "description": "Y start index of the subsampled grid (wrt the input image grid). See parameter bm.step", "schema": {"type": "integer", "default": 0, "nullable": true}, "id": "bm.starty"}, "bm.medianfilter.radius": {"title": "Radius (in pixels) for median filter", "description": "Radius (in pixels) for median filter", "schema": {"type": "integer", "nullable": true}, "id": "bm.medianfilter.radius"}, "bm.medianfilter.incoherence": {"title": "Incoherence threshold between original and filtered disparity", "description": "Incoherence threshold between original and filtered disparity", "schema": {"type": "number", "nullable": true}, "id": "bm.medianfilter.incoherence"}, "bm.initdisp": {"title": "bm.initdisp", "description": "bm.initdisp", "schema": {"type": "string", "default": "none", "enum": ["none", "uniform", "maps"]}, "id": "bm.initdisp"}, "bm.initdisp.uniform.hdisp": {"title": "Value of the uniform horizontal disparity initial estimate (in pixels)", "description": "Value of the uniform horizontal disparity initial estimate (in pixels)", "schema": {"type": "integer", "default": 0}, "id": "bm.initdisp.uniform.hdisp"}, "bm.initdisp.uniform.vdisp": {"title": "Value of the uniform vertical disparity initial estimate (in pixels)", "description": "Value of the uniform vertical disparity initial estimate (in pixels)", "schema": {"type": "integer", "default": 0}, "id": "bm.initdisp.uniform.vdisp"}, "bm.initdisp.uniform.hrad": {"title": "Horizontal exploration radius around the initial disparity estimate (in pixels)", "description": "Horizontal exploration radius around the initial disparity estimate (in pixels)", "schema": {"type": "integer", "default": 0}, "id": "bm.initdisp.uniform.hrad"}, "bm.initdisp.uniform.vrad": {"title": "Vertical exploration radius around the initial disparity estimate (in pixels)", "description": "Vertical exploration radius around the initial disparity estimate (in pixels)", "schema": {"type": "integer", "default": 0}, "id": "bm.initdisp.uniform.vrad"}, "bm.initdisp.maps.hmap": {"title": "Map of the initial horizontal disparities", "description": "Map of the initial horizontal disparities", "extended-schema": {"oneOf": [{"allOf": [{"$ref": "http://zoo-project.org/dl/link.json"}, {"type": "object", "properties": {"type": {"enum": ["image/tiff", "image/jpeg", "image/png"]}}}]}, {"type": "object", "required": ["value"], "properties": {"value": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}}}]}, "schema": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}, "id": "bm.initdisp.maps.hmap"}, "bm.initdisp.maps.vmap": {"title": "Map of the initial vertical disparities", "description": "Map of the initial vertical disparities", "extended-schema": {"oneOf": [{"allOf": [{"$ref": "http://zoo-project.org/dl/link.json"}, {"type": "object", "properties": {"type": {"enum": ["image/tiff", "image/jpeg", "image/png"]}}}]}, {"type": "object", "required": ["value"], "properties": {"value": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}}}]}, "schema": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}, "id": "bm.initdisp.maps.vmap"}, "bm.initdisp.maps.hrad": {"title": "Horizontal exploration radius around the initial disparity estimate (in pixels)", "description": "Horizontal exploration radius around the initial disparity estimate (in pixels)", "schema": {"type": "integer", "default": 0}, "id": "bm.initdisp.maps.hrad"}, "bm.initdisp.maps.vrad": {"title": "Vertical exploration radius around the initial disparity estimate (in pixels)", "description": "Vertical exploration radius around the initial disparity estimate (in pixels)", "schema": {"type": "integer", "default": 0}, "id": "bm.initdisp.maps.vrad"}, "ram": {"title": "Available memory for processing (in MB)", "description": "Available memory for processing (in MB)", "schema": {"type": "integer", "default": 128, "nullable": true}, "id": "ram"}}, "outputs": {"io.out": {"title": "An image containing the estimated disparities as well as the metric values if the option is used. If no metric is output and no sub-pixel interpolation is done, pixel type canbe a signed integer. In the other cases, floating point pixel is advised.", "description": "An image containing the estimated disparities as well as the metric values if the option is used. If no metric is output and no sub-pixel interpolation is done, pixel type canbe a signed integer. In the other cases, floating point pixel is advised.", "extended-schema": {"oneOf": [{"allOf": [{"$ref": "http://zoo-project.org/dl/link.json"}, {"type": "object", "properties": {"type": {"enum": ["image/tiff", "image/jpeg", "image/png"]}}}]}, {"type": "object", "required": ["value"], "properties": {"value": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}}}]}, "schema": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}, "id": "io.out"}, "io.outmask": {"title": "An output mask image corresponding to all citerions (see masking parameters). Only required if variance threshold or nodata criterions are set. Output pixel type is unsigned 8bit by default.", "description": "An output mask image corresponding to all citerions (see masking parameters). Only required if variance threshold or nodata criterions are set. Output pixel type is unsigned 8bit by default.", "extended-schema": {"oneOf": [{"allOf": [{"$ref": "http://zoo-project.org/dl/link.json"}, {"type": "object", "properties": {"type": {"enum": ["image/tiff", "image/jpeg", "image/png"]}}}]}, {"type": "object", "required": ["value"], "properties": {"value": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}}}]}, "schema": {"oneOf": [{"type": "string", "contentEncoding": "base64", "contentMediaType": "image/tiff"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/jpeg"}, {"type": "string", "contentEncoding": "base64", "contentMediaType": "image/png"}]}, "id": "io.outmask"}}}

http://tb17.geolabs.fr:8119/ogc-api/processes/OTB.BlockMatching.html
Last modified: Sat Feb 19 15:43:34 CET 2022