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