OTB.ContrastEnhancement: This application is the implementation of the histogram equalization algorithm. It can be used to enhance contrast in an image or to reduce the dynamic of the image without losing too much contrast. It offers several options as a no data value, a contrast limitation factor, a local version of the algorithm and also a mode to equalize the luminance of the image.
This application is the implementation of the histogram equalization algorithm. The idea of the algorithm is to use the whole available dynamic. In order to do so it computes a histogram over the image and then use the whole dynamic: meaning flattening the histogram. That gives us gain for each bin that transform the original histogram into the flat one. This gain is then apply on the original image.The application proposes several options to allow a finer result: - There is an option to limit contrast. We choose to limit the contrast by modifying the original histogram. To do so we clip the histogram at a given height and redistribute equally among the bins the clipped population. Then we add a local version of the algorithm. - It is possible to apply the algorithm on tiles of the image, instead of on the whole image. That gives us gain depending on the value of the pixel and its position in the image. In order to smoothen the result we interpolate the gain between tiles.
Execute End Point
View the execution endpoint of a process.
View the alternative version in HTML.
{"id": "OTB.ContrastEnhancement", "title": "This application is the implementation of the histogram equalization algorithm. It can be used to enhance contrast in an image or to reduce the dynamic of the image without losing too much contrast. It offers several options as a no data value, a contrast limitation factor, a local version of the algorithm and also a mode to equalize the luminance of the image.", "description": "This application is the implementation of the histogram equalization algorithm. The idea of the algorithm is to use the whole available dynamic. In order to do so it computes a histogram over the image and then use the whole dynamic: meaning flattening the histogram. That gives us gain for each bin that transform the original histogram into the flat one. This gain is then apply on the original image.The application proposes several options to allow a finer result: - There is an option to limit contrast. We choose to limit the contrast by modifying the original histogram. To do so we clip the histogram at a given height and redistribute equally among the bins the clipped population. Then we add a local version of the algorithm. - It is possible to apply the algorithm on tiles of the image, instead of on the whole image. That gives us gain depending on the value of the pixel and its position in the image. In order to smoothen the result we interpolate the gain between tiles.", "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.ContrastEnhancement/execution"}, {"rel": "alternate", "type": "text/html", "title": "Execute End Point", "href": "http://tb17.geolabs.fr:8119/ogc-api/processes/OTB.ContrastEnhancement/execution.html"}], "inputs": {"in": {"title": "Input image.", "description": "Input image.", "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": "in"}, "out": {"title": "Output image.", "description": "Output image.", "schema": {"type": "string", "default": "float", "enum": ["uint8", "uint16", "int16", "int32", "int32", "float", "double"]}, "id": "out"}, "bins": {"title": "Number of bins in the histogram", "description": "Number of bins in the histogram", "schema": {"type": "integer", "default": 256}, "id": "bins"}, "hfact": {"title": "This parameter will set the maximum height accepted in a bin on the input image histogram. The maximum height will be computed as hfact*eqHeight where eqHeight is the height of the theoretical flat histogram. The higher hfact, the higher the contrast.When using 'luminance mode', it is recommended to limit this factor to a small value (ex: 4)", "description": "This parameter will set the maximum height accepted in a bin on the input image histogram. The maximum height will be computed as hfact*eqHeight where eqHeight is the height of the theoretical flat histogram. The higher hfact, the higher the contrast.When using 'luminance mode', it is recommended to limit this factor to a small value (ex: 4)", "schema": {"type": "number", "nullable": true}, "id": "hfact"}, "nodata": {"title": "If there is a value in the image that has no visualization meaning, it can be ignored by the algorithm.", "description": "If there is a value in the image that has no visualization meaning, it can be ignored by the algorithm.", "schema": {"type": "number", "nullable": true}, "id": "nodata"}, "spatial": {"title": "spatial", "description": "spatial", "schema": {"type": "string", "default": "local", "enum": ["local", "global"]}, "id": "spatial"}, "spatial.local.h": {"title": "Height of the thumbnail over which the histogram will be computed. The value is in pixels.", "description": "Height of the thumbnail over which the histogram will be computed. The value is in pixels.", "schema": {"type": "integer", "default": 256}, "id": "spatial.local.h"}, "spatial.local.w": {"title": "Width of the thumbnail over which the histogram will be computed. The value is in pixels.", "description": "Width of the thumbnail over which the histogram will be computed. The value is in pixels.", "schema": {"type": "integer", "default": 256}, "id": "spatial.local.w"}, "minmax": {"title": "Minimum and maximum value that will bound the histogram and thus the dynamic of the resulting image. Values over those boundaries will be clipped.", "description": "Minimum and maximum value that will bound the histogram and thus the dynamic of the resulting image. Values over those boundaries will be clipped.", "schema": {"type": "string", "default": "auto", "enum": ["auto", "manual"]}, "id": "minmax"}, "minmax.auto.global": {"title": "Min/max computation will result in the same minimum and maximum for all the bands.", "description": "Min/max computation will result in the same minimum and maximum for all the bands.", "schema": {"type": "boolean", "default": false}, "id": "minmax.auto.global"}, "minmax.manual.min": {"title": "minmax.manual.min", "description": "minmax.manual.min", "schema": {"type": "number", "nullable": true}, "id": "minmax.manual.min"}, "minmax.manual.max": {"title": "minmax.manual.max", "description": "minmax.manual.max", "schema": {"type": "number", "nullable": true}, "id": "minmax.manual.max"}, "mode": {"title": "mode", "description": "mode", "schema": {"type": "string", "default": "each", "enum": ["each", "lum"]}, "id": "mode"}, "mode.lum.red.ch": {"title": "mode.lum.red.ch", "description": "mode.lum.red.ch", "schema": {"type": "integer", "default": 0}, "id": "mode.lum.red.ch"}, "mode.lum.red.coef": {"title": "mode.lum.red.coef", "description": "mode.lum.red.coef", "schema": {"type": "number", "default": 0.21, "format": "double"}, "id": "mode.lum.red.coef"}, "mode.lum.green.ch": {"title": "mode.lum.green.ch", "description": "mode.lum.green.ch", "schema": {"type": "integer", "default": 1}, "id": "mode.lum.green.ch"}, "mode.lum.green.coef": {"title": "mode.lum.green.coef", "description": "mode.lum.green.coef", "schema": {"type": "number", "default": 0.71, "format": "double"}, "id": "mode.lum.green.coef"}, "mode.lum.blue.ch": {"title": "mode.lum.blue.ch", "description": "mode.lum.blue.ch", "schema": {"type": "integer", "default": 2}, "id": "mode.lum.blue.ch"}, "mode.lum.blue.coef": {"title": "mode.lum.blue.coef", "description": "mode.lum.blue.coef", "schema": {"type": "number", "default": 0.08, "format": "double"}, "id": "mode.lum.blue.coef"}, "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": {"out": {"title": "Output image.", "description": "Output image.", "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": "out"}}}
Display original data as JSON
http://tb17.geolabs.fr:8119/ogc-api/processes/OTB.ContrastEnhancement.html
Last modified: Sat Feb 19 15:43:34 CET 2022