242 lines
8.2 KiB
Markdown
242 lines
8.2 KiB
Markdown
# IRE Shadow Analysis Guide
|
|
|
|
## Overview
|
|
|
|
This guide explains the new IRE (Institute of Radio Engineers) stops false color approach for shadow detection in sRGB/display-referred images. This method provides precise analysis of shadow characteristics including soft vs hard shadow transitions.
|
|
|
|
## What is IRE Analysis?
|
|
|
|
IRE (Institute of Radio Engineers) is a standardized scale used in video and broadcast to measure luminance levels. The scale ranges from 0 IRE (pure black) to 100 IRE (pure white), with specific ranges corresponding to different exposure zones.
|
|
|
|
### IRE Color Mapping for sRGB Images
|
|
|
|
| IRE Range | Color | Description | Use Case |
|
|
|----------|-------|-------------|----------|
|
|
| 0-10 IRE | Purple/Blue | Deep shadows | Very dark areas, crushed blacks |
|
|
| 10-20 IRE | Blue | Shadows | Main shadow areas |
|
|
| 20-30 IRE | Cyan | Mid-shadows | Shadow transitions |
|
|
| 30-50 IRE | Green | Low-midtones | Properly exposed areas |
|
|
| 50-70 IRE | Yellow | Midtones | Well-lit areas |
|
|
| 70-90 IRE | Orange | High-midtones | Bright areas |
|
|
| 90-100 IRE | Red | Highlights | Very bright areas, potential clipping |
|
|
|
|
## Key Features
|
|
|
|
### 1. False Color Visualization
|
|
- Maps IRE values to distinct colors for easy visual analysis
|
|
- Helps identify exposure zones and shadow characteristics
|
|
- Provides immediate feedback on lighting distribution
|
|
|
|
### 2. Shadow Transition Analysis
|
|
- Analyzes gradient patterns in shadow areas
|
|
- Detects soft vs hard shadow transitions
|
|
- Measures transition smoothness using gradient magnitude
|
|
|
|
### 3. Soft vs Hard Shadow Classification
|
|
- **Soft Shadows**: Gradual transitions (low gradients)
|
|
- **Hard Shadows**: Abrupt transitions (high gradients)
|
|
- Provides quantitative ratios and qualitative descriptions
|
|
|
|
## ComfyUI Nodes
|
|
|
|
### IREShadowAnalyzer Node
|
|
|
|
**Purpose**: Analyze shadow characteristics using IRE false color approach
|
|
|
|
**Inputs**:
|
|
- `image`: sRGB image to analyze
|
|
- `shadow_ire_threshold`: IRE value below which pixels are considered shadows (default: 20.0)
|
|
- `transition_sensitivity`: Sensitivity for detecting shadow transitions (default: 0.1)
|
|
- `analysis_mode`: Analysis scope (full, shadows_only, transitions_only)
|
|
|
|
**Outputs**:
|
|
- `false_color_ire`: False color visualization of IRE values
|
|
- `shadow_mask`: Binary mask of shadow areas
|
|
- `soft_shadow_mask`: Areas with soft shadow transitions
|
|
- `hard_shadow_mask`: Areas with hard shadow transitions
|
|
- `ire_legend`: Color mapping legend
|
|
- `shadow_character`: Classification (Very Soft, Soft, Medium, Hard)
|
|
- `transition_quality`: Description of transition smoothness
|
|
- `ire_range`: IRE value range in the image
|
|
- `shadow_coverage`: Percentage of shadow coverage
|
|
- `gradient_analysis`: Description of gradient characteristics
|
|
|
|
### IREShadowComparison Node
|
|
|
|
**Purpose**: Compare shadow characteristics between two images
|
|
|
|
**Inputs**:
|
|
- `image_a`, `image_b`: Images to compare
|
|
- `shadow_ire_threshold`: IRE threshold for shadow detection
|
|
- `comparison_mode`: Comparison visualization method
|
|
|
|
**Outputs**:
|
|
- `ire_comparison`: Side-by-side or difference visualization
|
|
- `shadow_difference`: Difference in shadow areas
|
|
- `transition_comparison`: Difference in transition characteristics
|
|
- Comparative statistics and classifications
|
|
|
|
### EnhancedLightEstimator Node
|
|
|
|
**Purpose**: Combined analysis using both normal maps and IRE shadow analysis
|
|
|
|
**Inputs**:
|
|
- All inputs from NormalMapLightEstimator
|
|
- `shadow_ire_threshold`: IRE threshold for shadow detection
|
|
- `transition_sensitivity`: Transition analysis sensitivity
|
|
- `ire_analysis_weight`: Weight for IRE analysis in combined results (0.0-1.0)
|
|
|
|
**Outputs**:
|
|
- All outputs from NormalMapLightEstimator
|
|
- All outputs from IREShadowAnalyzer
|
|
- `final_shadow_character`: Combined shadow classification
|
|
- `final_light_quality`: Combined light quality assessment
|
|
- `combined_confidence`: Overall analysis confidence
|
|
- `analysis_consistency`: Consistency between normal map and IRE analysis
|
|
|
|
## Usage Examples
|
|
|
|
### Basic Shadow Analysis
|
|
|
|
```python
|
|
# Initialize analyzer
|
|
analyzer = IREShadowAnalyzer(
|
|
shadow_ire_threshold=20.0,
|
|
transition_sensitivity=0.1
|
|
)
|
|
|
|
# Analyze image
|
|
results = analyzer.generate_ire_analysis_report(srgb_image)
|
|
|
|
# Extract shadow characteristics
|
|
shadow_character = results['shadow_classification']['shadow_character']
|
|
transition_quality = results['shadow_classification']['transition_quality']
|
|
soft_ratio = results['transition_analysis']['soft_shadow_ratio']
|
|
```
|
|
|
|
### Shadow Transition Analysis
|
|
|
|
```python
|
|
# Convert sRGB to IRE values
|
|
ire_values = analyzer.srgb_to_ire(srgb_image)
|
|
|
|
# Analyze transitions
|
|
transition_analysis = analyzer.analyze_shadow_transitions(ire_values)
|
|
|
|
# Classify shadow characteristics
|
|
classification = analyzer.classify_shadow_characteristics(transition_analysis)
|
|
```
|
|
|
|
### False Color Visualization
|
|
|
|
```python
|
|
# Create false color visualization
|
|
false_color = analyzer.create_false_color_visualization(ire_values)
|
|
|
|
# Create IRE legend
|
|
legend = analyzer.create_ire_legend()
|
|
```
|
|
|
|
## Shadow Classification System
|
|
|
|
### Shadow Character Classifications
|
|
|
|
| Classification | Soft Ratio | Description |
|
|
|----------------|------------|-------------|
|
|
| Very Soft | > 0.7 | Predominantly gradual transitions |
|
|
| Soft | 0.5 - 0.7 | Mostly gradual transitions |
|
|
| Medium | 0.3 - 0.5 | Mixed transition types |
|
|
| Hard | < 0.3 | Predominantly sharp transitions |
|
|
|
|
### Transition Quality Descriptions
|
|
|
|
| Quality | Mean Gradient | Description |
|
|
|---------|--------------|-------------|
|
|
| Very Gradual | < 5.0 | Very smooth transitions |
|
|
| Gradual | 5.0 - 15.0 | Smooth transitions |
|
|
| Moderate | 15.0 - 30.0 | Moderate transitions |
|
|
| Sharp | 30.0 - 50.0 | Sharp transitions |
|
|
| Very Sharp | > 50.0 | Very abrupt transitions |
|
|
|
|
## Best Practices
|
|
|
|
### 1. IRE Threshold Selection
|
|
- **Low threshold (10-15 IRE)**: Detects only very dark shadows
|
|
- **Medium threshold (15-25 IRE)**: Balanced shadow detection
|
|
- **High threshold (25-35 IRE)**: Includes mid-tone shadows
|
|
|
|
### 2. Transition Sensitivity
|
|
- **Low sensitivity (0.05-0.1)**: Detects only very obvious transitions
|
|
- **Medium sensitivity (0.1-0.2)**: Balanced transition detection
|
|
- **High sensitivity (0.2-0.5)**: Detects subtle transitions
|
|
|
|
### 3. Analysis Mode Selection
|
|
- **Full**: Complete analysis with all visualizations
|
|
- **Shadows Only**: Focus on shadow areas only
|
|
- **Transitions Only**: Focus on transition analysis
|
|
|
|
### 4. Combined Analysis
|
|
- Use `EnhancedLightEstimator` for comprehensive analysis
|
|
- Adjust `ire_analysis_weight` based on image characteristics
|
|
- Monitor `analysis_consistency` for result reliability
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
**"No shadows detected"**
|
|
- Lower the `shadow_ire_threshold`
|
|
- Check if image has sufficient contrast
|
|
- Verify image is in sRGB format
|
|
|
|
**"Incorrect shadow classification"**
|
|
- Adjust `transition_sensitivity`
|
|
- Check IRE value distribution
|
|
- Verify shadow areas are properly exposed
|
|
|
|
**"Poor transition analysis"**
|
|
- Increase image resolution
|
|
- Check for noise in shadow areas
|
|
- Adjust gradient analysis parameters
|
|
|
|
### Performance Optimization
|
|
|
|
- Use appropriate image resolution (512x512 to 1024x1024 recommended)
|
|
- Process images in batches for efficiency
|
|
- Cache IRE color mappings for repeated analysis
|
|
- Use GPU acceleration when available
|
|
|
|
## Technical Details
|
|
|
|
### IRE Conversion Formula
|
|
```python
|
|
# For sRGB display-referred images
|
|
ire_value = luma * 100.0
|
|
```
|
|
|
|
### Gradient Analysis
|
|
```python
|
|
# Sobel gradient calculation
|
|
grad_x = F.conv2d(ire_values, sobel_x_filter)
|
|
grad_y = F.conv2d(ire_values, sobel_y_filter)
|
|
gradient_magnitude = sqrt(grad_x² + grad_y²)
|
|
```
|
|
|
|
### Shadow Classification
|
|
```python
|
|
# Soft shadow detection
|
|
soft_shadow_mask = (gradient_magnitude < soft_threshold) & shadow_mask
|
|
soft_ratio = soft_shadow_mask.sum() / shadow_mask.sum()
|
|
```
|
|
|
|
## Integration with Existing System
|
|
|
|
The IRE shadow analysis integrates seamlessly with the existing light estimation system:
|
|
|
|
1. **Complementary Analysis**: IRE analysis provides luminance-based insights while normal map analysis provides geometric insights
|
|
2. **Combined Results**: Enhanced estimator combines both approaches for comprehensive analysis
|
|
3. **Consistency Checking**: System can detect when analyses agree or disagree
|
|
4. **Weighted Results**: User can control the influence of each analysis method
|
|
|
|
This approach provides a robust, professional-grade shadow analysis system suitable for cinematography, photography, and computer graphics applications.
|