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:
Icon Visualization,Line Counter Visualization,Stability AI Outpainting,Image Contours,Image Slicer,Pixelate Visualization,Image Preprocessing,Polygon Zone Visualization,Color Visualization,Reference Path Visualization,Blur Visualization,Background Subtraction,Text Display,Ellipse Visualization,Polygon Visualization,Relative Static Crop,Stability AI Image Generation,Perspective Correction,Model Comparison Visualization,Bounding Box Visualization,Trace Visualization,Depth Estimation,Camera Focus,Classification Label Visualization,Image Slicer,Absolute Static Crop,Image Blur,Stability AI Inpainting,Polygon Visualization,Image Convert Grayscale,SIFT,Label Visualization,Image Threshold,Corner Visualization,Grid Visualization,Dynamic Crop,Contrast Equalization,Heatmap Visualization,SIFT Comparison,Stitch Images,Triangle Visualization,Morphological Transformation,Keypoint Visualization,QR Code Generator,Halo Visualization,Circle Visualization,Camera Focus,Halo Visualization,Mask Visualization,Crop Visualization,Morphological Transformation,Camera Calibration,Contrast Enhancement,Background Color Visualization,Dot Visualization - outputs:
Roboflow Dataset Upload,Line Counter Visualization,Mask Edge Snap,OCR Model,Image Slicer,Gaze Detection,Qwen2.5-VL,Instance Segmentation Model,Color Visualization,Multi-Label Classification Model,Ellipse Visualization,Polygon Visualization,ByteTrack Tracker,Single-Label Classification Model,Relative Static Crop,Barcode Detection,Trace Visualization,Object Detection Model,Qwen 3.5 API,Camera Focus,OpenAI,Buffer,SAM 3,Image Threshold,Heatmap Visualization,SORT Tracker,Florence-2 Model,Halo Visualization,GLM-OCR,Dot Visualization,Semantic Segmentation Model,Seg Preview,Google Gemini,Roboflow Dataset Upload,Clip Comparison,VLM As Classifier,Pixelate Visualization,Twilio SMS/MMS Notification,Polygon Zone Visualization,Motion Detection,Blur Visualization,Background Subtraction,Text Display,Stability AI Image Generation,Perspective Correction,Anthropic Claude,Bounding Box Visualization,Depth Estimation,Stability AI Inpainting,Polygon Visualization,SmolVLM2,SIFT,Roboflow Vision Events,VLM As Detector,Google Gemini,Label Visualization,Qwen3.5-VL,Contrast Equalization,Triangle Visualization,Halo Visualization,Circle Visualization,Segment Anything 2 Model,Mask Visualization,Dominant Color,OpenAI,MoonshotAI Kimi,Llama 3.2 Vision,Email Notification,CLIP Embedding Model,Detections Stabilizer,Detections Stitch,Object Detection Model,Stability AI Outpainting,Google Gemma API,Google Vision OCR,Google Gemini,Image Preprocessing,EasyOCR,Object Detection Model,OpenAI,SAM2 Video Tracker,Byte Tracker,Anthropic Claude,Qwen3-VL,Model Comparison Visualization,YOLO-World Model,Instance Segmentation Model,Perception Encoder Embedding Model,Semantic Segmentation Model,Single-Label Classification Model,VLM As Classifier,Template Matching,Stitch Images,Qwen 3.6 API,SIFT Comparison,Morphological Transformation,Instance Segmentation Model,CogVLM,Crop Visualization,Florence-2 Model,Camera Calibration,Multi-Label Classification Model,Time in Zone,OC-SORT Tracker,SAM 3,QR Code Detection,Icon Visualization,Image Contours,Keypoint Detection Model,Reference Path Visualization,Anthropic Claude,Clip Comparison,VLM As Detector,LMM,Pixel Color Count,Multi-Label Classification Model,Image Slicer,Absolute Static Crop,Classification Label Visualization,Image Blur,Image Convert Grayscale,SAM 3,Single-Label Classification Model,OpenAI,Corner Visualization,Dynamic Crop,Keypoint Detection Model,Moondream2,Keypoint Visualization,Camera Focus,LMM For Classification,Morphological Transformation,Keypoint Detection Model,Contrast Enhancement,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>"
}