Contrast Enhancement¶
Class: ContrastEnhancementBlock
Source: inference.core.workflows.core_steps.classical_cv.contrast_enhancement.v1.ContrastEnhancementBlock
Enhance image contrast using histogram normalization (the algorithm from GIMP's Auto Levels). This block stretches the image histogram to use the full available range [0-255], improving visibility of features with low contrast.
How This Block Works¶
- Channel Analysis: For grayscale images, find min/max directly. For color images, analyze each channel independently.
- Histogram Normalization: For each channel, stretch values from [min, max] to [0, 255] using linear scaling:
output = (input - min) / (max - min) * 255 - Clipping: Values outside [0, 255] are clipped to the valid range
Common Use Cases¶
- Low-contrast medical imaging: Normalize tissue visibility across varying acquisition parameters
- Industrial inspection: Enhance subtle surface defects on dull materials
- Surveillance footage: Improve nighttime or backlit scene visibility
- Document scanning: Brighten poorly lit document photos
- Microscopy: Boost signal from weak fluorescence or phase-contrast images
Input Parameters¶
image : Input image to enhance (color or grayscale) - Can be single-channel, 3-channel (BGR), or 4-channel (BGRA) - Each channel is normalized independently for color images
clip_limit : Percentage of histogram range to skip at extremes (default: 0) - Range: 0-50 - 0: No clipping, entire histogram from min to max is used - 1-3: Skip dark and bright outliers (robust to noise) - 5-10: Very aggressive outlier removal - 20-50: Extreme outlier removal, may lose subtle details
contrast_multiplier : Multiplier for contrast scaling after normalization (default: 1.0) - Range: 0.1-5.0 - 1.0: No additional scaling, just normalization - 0.5-0.9: Reduce contrast for smoother images - 1.1-2.0: Increase contrast for more dramatic enhancement
normalize_brightness : Apply brightness normalization using midtone equalization (default: False) - False: Only histogram normalization and contrast scaling - True: After histogram normalization, apply midtone adjustment for balanced brightness
Outputs¶
image : Enhanced image with normalized contrast, same shape and type as input
Notes¶
- Sensitive to outliers: Extreme min/max values (single dark/bright pixels) stretch most of the histogram into a narrow range. Use morphological opening (Morphological Transformation v2) as preprocessing to remove spurious dark/bright specks.
- Color shift: For color images, each channel stretches independently, which can shift hue if channels have very different dynamic ranges
- Efficiency: Very fast — linear scan for min/max, then linear transformation per pixel
- Brightness normalization: When enabled, applies midtone stretch (gamma ≈ 1.3) for more balanced perceived brightness
Type identifier¶
Use the following identifier in step "type" field: roboflow_core/contrast_enhancement@v1to add the block as
as step in your workflow.
Properties¶
| Name | Type | Description | Refs |
|---|---|---|---|
name |
str |
Enter a unique identifier for this step.. | ❌ |
clip_limit |
int |
Percentage of histogram range to skip at dark and bright extremes. 0: use full range from min to max. 1-3: skip outliers (robust). 5-10: very aggressive outlier removal.. | ❌ |
contrast_multiplier |
float |
Multiplier for contrast scaling after normalization. 1.0: no additional scaling (just histogram normalization). <1.0: reduce contrast. >1.0: increase contrast for more dramatic enhancement.. | ❌ |
normalize_brightness |
bool |
Apply brightness normalization using midtone equalization. When False, only histogram normalization and contrast scaling are applied. When True, applies midtone adjustment for more balanced perceived brightness.. | ❌ |
The Refs column marks possibility to parametrise the property with dynamic values available
in workflow runtime. See Bindings for more info.
Available Connections¶
Compatible Blocks
Check what blocks you can connect to Contrast Enhancement in version v1.
- inputs:
Halo Visualization,Polygon Visualization,Mask Visualization,Image Threshold,Stability AI Inpainting,Stitch Images,Classification Label Visualization,Morphological Transformation,Crop Visualization,Icon Visualization,Stability AI Outpainting,Blur Visualization,Reference Path Visualization,Keypoint Visualization,Background Subtraction,Camera Focus,QR Code Generator,Pixelate Visualization,Model Comparison Visualization,Trace Visualization,Image Slicer,Ellipse Visualization,Image Contours,Line Counter Visualization,Dot Visualization,Perspective Correction,Image Preprocessing,Image Convert Grayscale,Label Visualization,Dynamic Crop,Text Display,Depth Estimation,Bounding Box Visualization,Image Blur,Absolute Static Crop,SIFT,Corner Visualization,Polygon Zone Visualization,Camera Calibration,Grid Visualization,Stability AI Image Generation,Triangle Visualization,Camera Focus,Contrast Equalization,Circle Visualization,Polygon Visualization,Image Slicer,Relative Static Crop,Heatmap Visualization,Contrast Enhancement,Halo Visualization,Color Visualization,Morphological Transformation,SIFT Comparison,Background Color Visualization - outputs:
Template Matching,Morphological Transformation,Classification Label Visualization,Crop Visualization,Stability AI Outpainting,Blur Visualization,Reference Path Visualization,OpenAI,YOLO-World Model,Anthropic Claude,Camera Focus,Track Class Lock,Instance Segmentation Model,Mask Edge Snap,Model Comparison Visualization,Florence-2 Model,Trace Visualization,SmolVLM2,Label Visualization,Image Convert Grayscale,Florence-2 Model,Text Display,Llama 3.2 Vision,Qwen-VL,Image Blur,Keypoint Detection Model,Absolute Static Crop,Gaze Detection,Keypoint Detection Model,LMM,OC-SORT Tracker,QR Code Detection,Qwen 3.5 API,Qwen 3.6 API,Qwen2.5-VL,Camera Focus,SORT Tracker,VLM As Detector,Qwen3-VL,Multi-Label Classification Model,Detections Stitch,Clip Comparison,Google Gemma API,Contrast Enhancement,Halo Visualization,MoonshotAI Kimi,Color Visualization,Morphological Transformation,Event Writer,Buffer,Stability AI Inpainting,Time in Zone,OpenAI,Roboflow Vision Events,Dominant Color,CogVLM,Object Detection Model,Semantic Segmentation Model,Dynamic Crop,Byte Tracker,Bounding Box Visualization,Qwen3.5-VL,Clip Comparison,SAM 3,OpenAI,Single-Label Classification Model,OCR Model,OpenRouter,SIFT Comparison,Pixelate Visualization,Google Vision OCR,SAM3 Video Tracker,Google Gemma,CLIP Embedding Model,Halo Visualization,GLM-OCR,Image Threshold,SAM 3 Interactive,Stitch Images,Twilio SMS/MMS Notification,VLM As Classifier,Icon Visualization,MoonshotAI Kimi,ByteTrack Tracker,Google Gemini,Single-Label Classification Model,Single-Label Classification Model,Instance Segmentation Model,Ellipse Visualization,Anthropic Claude,Object Detection Model,Keypoint Detection Model,BoT-SORT Tracker,Dot Visualization,Perspective Correction,Instance Segmentation Model,Seg Preview,Roboflow Dataset Upload,Detections Stabilizer,SIFT,Google Gemini,EasyOCR,SAM 3,Triangle Visualization,Contrast Equalization,Polygon Visualization,OpenAI,SAM2 Video Tracker,Heatmap Visualization,Perception Encoder Embedding Model,Google Gemini,LMM For Classification,VLM As Detector,Llama 3.2 Vision,Multi-Label Classification Model,Image Stack,Polygon Visualization,Mask Visualization,Anthropic Claude,Barcode Detection,Keypoint Visualization,Background Subtraction,Multi-Label Classification Model,Email Notification,Semantic Segmentation Model,Image Slicer,Image Contours,Line Counter Visualization,Image Preprocessing,SAM 3,VLM As Classifier,Depth Estimation,Pixel Color Count,Motion Detection,Qwen3.5,Roboflow Dataset Upload,Corner Visualization,Camera Calibration,Segment Anything 2 Model,Polygon Zone Visualization,Stability AI Image Generation,Moondream2,Circle Visualization,Image Slicer,Relative Static Crop,Instance Segmentation Model,Object Detection Model,Background Color Visualization
Input and Output Bindings¶
The available connections depend on its binding kinds. Check what binding kinds
Contrast Enhancement in version v1 has.
Bindings
Example JSON definition of step Contrast Enhancement in version v1
{
"name": "<your_step_name_here>",
"type": "roboflow_core/contrast_enhancement@v1",
"image": "$inputs.image",
"clip_limit": "<block_does_not_provide_example>",
"contrast_multiplier": "<block_does_not_provide_example>",
"normalize_brightness": "<block_does_not_provide_example>"
}