← All Use Cases
📷
Central Composite Design

Studio Portrait Lighting

Central composite design to maximize skin tone accuracy and minimize harsh shadows by tuning key light power, fill ratio, and modifier size

Summary

This experiment investigates studio portrait lighting. Central composite design to maximize skin tone accuracy and minimize harsh shadows by tuning key light power, fill ratio, and modifier size.

The design varies 3 factors: key power ws (Ws), ranging from 100 to 500, fill ratio (ratio), ranging from 2 to 8, and modifier cm (cm), ranging from 60 to 150. The goal is to optimize 2 responses: skin accuracy (pts) (maximize) and shadow harshness (pts) (minimize). Fixed conditions held constant across all runs include background = grey, distance m = 2.

A Central Composite Design (CCD) was selected to fit a full quadratic response surface model, including curvature and interaction effects. With 3 factors this produces 22 runs including center points and axial (star) points that extend beyond the factorial range.

Quadratic response surface models were fitted to capture potential curvature and factor interactions. The RSM contour plots below visualize how pairs of factors jointly affect each response.

Key Findings

For skin accuracy, the most influential factors were fill ratio (41.0%), key power ws (37.1%), modifier cm (22.0%). The best observed value was 8.2 (at key power ws = 100, fill ratio = 8, modifier cm = 60).

For shadow harshness, the most influential factors were fill ratio (66.9%), key power ws (20.8%), modifier cm (12.3%). The best observed value was 2.4 (at key power ws = 300, fill ratio = 5, modifier cm = 105).

Recommended Next Steps

Experimental Setup

Factors

FactorLowHighUnit
key_power_ws100500Ws
fill_ratio28ratio
modifier_cm60150cm

Fixed: background = grey, distance_m = 2

Responses

ResponseDirectionUnit
skin_accuracy↑ maximizepts
shadow_harshness↓ minimizepts

Configuration

use_cases/148_studio_lighting/config.json
{ "metadata": { "name": "Studio Portrait Lighting", "description": "Central composite design to maximize skin tone accuracy and minimize harsh shadows by tuning key light power, fill ratio, and modifier size" }, "factors": [ { "name": "key_power_ws", "levels": [ "100", "500" ], "type": "continuous", "unit": "Ws" }, { "name": "fill_ratio", "levels": [ "2", "8" ], "type": "continuous", "unit": "ratio" }, { "name": "modifier_cm", "levels": [ "60", "150" ], "type": "continuous", "unit": "cm" } ], "fixed_factors": { "background": "grey", "distance_m": "2" }, "responses": [ { "name": "skin_accuracy", "optimize": "maximize", "unit": "pts" }, { "name": "shadow_harshness", "optimize": "minimize", "unit": "pts" } ], "settings": { "operation": "central_composite", "test_script": "use_cases/148_studio_lighting/sim.sh" } }

Experimental Matrix

The Central Composite Design produces 22 runs. Each row is one experiment with specific factor settings.

Runkey_power_wsfill_ratiomodifier_cm
13005105
25002150
3100860
430010.4772105
53005105
6-65.14845105
7300522.8416
83005105
9500860
10665.1485105
113005105
12300-0.477226105
133005105
141002150
153005105
16500260
173005187.158
185008150
193005105
20100260
211008150
223005105

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/148_studio_lighting/config.json
2

Generate the runner script

Terminal
$ doe generate --config use_cases/148_studio_lighting/config.json \ --output use_cases/148_studio_lighting/results/run.sh --seed 42
3

Execute the experiments

Terminal
$ bash use_cases/148_studio_lighting/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/148_studio_lighting/config.json
5

Get optimization recommendations

Terminal
$ doe optimize --config use_cases/148_studio_lighting/config.json
6

Multi-objective optimization

With 2 competing responses, use --multi to find the best compromise via Derringer–Suich desirability.

Terminal
$ doe optimize --config use_cases/148_studio_lighting/config.json --multi
7

Generate the HTML report

Terminal
$ doe report --config use_cases/148_studio_lighting/config.json \ --output use_cases/148_studio_lighting/results/report.html

Features Exercised

FeatureValue
Design typecentral_composite
Factor typescontinuous (all 3)
Arg styledouble-dash
Responses2 (skin_accuracy ↑, shadow_harshness ↓)
Total runs22

Analysis Results

Generated from actual experiment runs using the DOE Helper Tool.

Response: skin_accuracy

Top factors: fill_ratio (41.0%), key_power_ws (37.1%), modifier_cm (22.0%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
key_power_ws43.20270.80070.4180.7918
fill_ratio46.08861.52210.7950.5572
modifier_cm44.17521.04380.5450.7072
LackofFit20.22750.1137
PureError713.3987
Error913.62621.9141
Total2127.09271.2901

Pareto Chart

Pareto chart for skin_accuracy

Main Effects Plot

Main effects plot for skin_accuracy

Normal Probability Plot of Effects

Normal probability plot for skin_accuracy

Half-Normal Plot of Effects

Half-normal plot for skin_accuracy

Model Diagnostics

Model diagnostics for skin_accuracy

Response: shadow_harshness

Top factors: fill_ratio (66.9%), key_power_ws (20.8%), modifier_cm (12.3%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
key_power_ws46.01451.50360.4230.7885
fill_ratio417.84044.46011.2550.3552
modifier_cm42.78790.69700.1960.9342
LackofFit212.75676.3784
PureError724.8750
Error937.63173.5536
Total2164.27453.0607

Pareto Chart

Pareto chart for shadow_harshness

Main Effects Plot

Main effects plot for shadow_harshness

Normal Probability Plot of Effects

Normal probability plot for shadow_harshness

Half-Normal Plot of Effects

Half-normal plot for shadow_harshness

Model Diagnostics

Model diagnostics for shadow_harshness

Response Surface Plots

3D surfaces fitted with quadratic RSM. Red dots are observed data points.

shadow harshness fill ratio vs modifier cm

RSM surface: shadow harshness fill ratio vs modifier cm

shadow harshness key power ws vs fill ratio

RSM surface: shadow harshness key power ws vs fill ratio

shadow harshness key power ws vs modifier cm

RSM surface: shadow harshness key power ws vs modifier cm

skin accuracy fill ratio vs modifier cm

RSM surface: skin accuracy fill ratio vs modifier cm

skin accuracy key power ws vs fill ratio

RSM surface: skin accuracy key power ws vs fill ratio

skin accuracy key power ws vs modifier cm

RSM surface: skin accuracy key power ws vs modifier cm

Multi-Objective Optimization

When responses compete, Derringer–Suich desirability finds the best compromise. Each response is scaled to a 0–1 desirability, then combined via a weighted geometric mean.

Overall Desirability
D = 0.9408

Per-Response Desirability

ResponseWeightDesirabilityPredictedDir
skin_accuracy 1.5
0.9318
8.10 0.9318 8.10 pts
shadow_harshness 1.0
0.9545
2.40 0.9545 2.40 pts

Recommended Settings

FactorValue
key_power_ws300 Ws
fill_ratio5 ratio
modifier_cm105 cm

Source: from observed run #17

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
shadow_harshness2.402.40+0.00

Top 3 Runs by Desirability

RunDFactor Settings
#20.9268key_power_ws=500, fill_ratio=8, modifier_cm=60
#140.7864key_power_ws=300, fill_ratio=10.4772, modifier_cm=105

Model Quality

ResponseType
shadow_harshness0.1504linear

Full Multi-Objective Output

doe optimize --multi
============================================================ MULTI-OBJECTIVE OPTIMIZATION Method: Derringer-Suich Desirability Function ============================================================ Overall desirability: D = 0.9408 Response Weight Desirability Predicted Direction --------------------------------------------------------------------- skin_accuracy 1.5 0.9318 8.10 pts ↑ shadow_harshness 1.0 0.9545 2.40 pts ↓ Recommended settings: key_power_ws = 300 Ws fill_ratio = 5 ratio modifier_cm = 105 cm (from observed run #17) Trade-off summary: skin_accuracy: 8.10 (best observed: 8.20, sacrifice: +0.10) shadow_harshness: 2.40 (best observed: 2.40, sacrifice: +0.00) Model quality: skin_accuracy: R² = 0.2833 (linear) shadow_harshness: R² = 0.1504 (linear) Top 3 observed runs by overall desirability: 1. Run #17 (D=0.9408): key_power_ws=300, fill_ratio=5, modifier_cm=105 2. Run #2 (D=0.9268): key_power_ws=500, fill_ratio=8, modifier_cm=60 3. Run #14 (D=0.7864): key_power_ws=300, fill_ratio=10.4772, modifier_cm=105

Full Analysis Output

doe analyze
=== Main Effects: skin_accuracy === Factor Effect Std Error % Contribution -------------------------------------------------------------- fill_ratio 2.1000 0.2422 41.0% key_power_ws 1.9000 0.2422 37.1% modifier_cm 1.1250 0.2422 22.0% === ANOVA Table: skin_accuracy === Source DF SS MS F p-value ----------------------------------------------------------------------------- key_power_ws 4 3.2027 0.8007 0.418 0.7918 fill_ratio 4 6.0886 1.5221 0.795 0.5572 modifier_cm 4 4.1752 1.0438 0.545 0.7072 Lack of Fit 2 0.2275 0.1137 0.059 0.9428 Pure Error 7 13.3987 1.9141 Error 9 13.6262 1.9141 Total 21 27.0927 1.2901 === Summary Statistics: skin_accuracy === key_power_ws: Level N Mean Std Min Max ------------------------------------------------------------ -65.1484 1 5.0000 0.0000 5.0000 5.0000 100 4 6.9000 0.6055 6.0000 7.3000 300 12 6.3250 1.2800 4.2000 8.2000 500 4 6.4750 1.2606 4.6000 7.3000 665.148 1 6.8000 0.0000 6.8000 6.8000 fill_ratio: Level N Mean Std Min Max ------------------------------------------------------------ -0.477226 1 6.0000 0.0000 6.0000 6.0000 10.4772 1 8.1000 0.0000 8.1000 8.1000 2 4 7.1250 0.1708 6.9000 7.3000 5 12 6.1333 1.2175 4.2000 8.2000 8 4 6.2500 1.2396 4.6000 7.3000 modifier_cm: Level N Mean Std Min Max ------------------------------------------------------------ 105 12 6.2000 1.3143 4.2000 8.2000 150 4 6.1500 1.1387 4.6000 7.1000 187.158 1 7.2000 0.0000 7.2000 7.2000 22.8416 1 6.1000 0.0000 6.1000 6.1000 60 4 7.2250 0.0957 7.1000 7.3000 === Main Effects: shadow_harshness === Factor Effect Std Error % Contribution -------------------------------------------------------------- fill_ratio 5.3000 0.3730 66.9% key_power_ws 1.6500 0.3730 20.8% modifier_cm 0.9750 0.3730 12.3% === ANOVA Table: shadow_harshness === Source DF SS MS F p-value ----------------------------------------------------------------------------- key_power_ws 4 6.0145 1.5036 0.423 0.7885 fill_ratio 4 17.8404 4.4601 1.255 0.3552 modifier_cm 4 2.7879 0.6970 0.196 0.9342 Lack of Fit 2 12.7567 6.3784 1.795 0.2348 Pure Error 7 24.8750 3.5536 Error 9 37.6317 3.5536 Total 21 64.2745 3.0607 === Summary Statistics: shadow_harshness === key_power_ws: Level N Mean Std Min Max ------------------------------------------------------------ -65.1484 1 4.2000 0.0000 4.2000 4.2000 100 4 4.4750 1.8998 2.6000 6.8000 300 12 5.5750 1.9212 2.4000 9.1000 500 4 5.8500 1.5089 4.9000 8.1000 665.148 1 5.2000 0.0000 5.2000 5.2000 fill_ratio: Level N Mean Std Min Max ------------------------------------------------------------ -0.477226 1 7.7000 0.0000 7.7000 7.7000 10.4772 1 2.4000 0.0000 2.4000 2.4000 2 4 4.5500 1.3026 2.6000 5.3000 5 12 5.5167 1.5954 2.9000 9.1000 8 4 5.7750 2.1093 3.3000 8.1000 modifier_cm: Level N Mean Std Min Max ------------------------------------------------------------ 105 12 5.5083 1.9528 2.4000 9.1000 150 4 5.6500 2.3756 2.6000 8.1000 187.158 1 4.8000 0.0000 4.8000 4.8000 22.8416 1 5.4000 0.0000 5.4000 5.4000 60 4 4.6750 0.9323 3.3000 5.3000

Optimization Recommendations

doe optimize
=== Optimization: skin_accuracy === Direction: maximize Best observed run: #2 key_power_ws = 100 fill_ratio = 8 modifier_cm = 60 Value: 8.2 RSM Model (linear, R² = 0.0147, Adj R² = -0.1495): Coefficients: intercept +6.4182 key_power_ws -0.1248 fill_ratio +0.0910 modifier_cm -0.0572 RSM Model (quadratic, R² = 0.4790, Adj R² = 0.0882): Coefficients: intercept +5.9590 key_power_ws -0.1248 fill_ratio +0.0910 modifier_cm -0.0572 key_power_ws*fill_ratio -0.7875 key_power_ws*modifier_cm -0.4375 fill_ratio*modifier_cm -0.5875 key_power_ws^2 +0.2096 fill_ratio^2 +0.3596 modifier_cm^2 +0.1196 Curvature analysis: fill_ratio coef=+0.3596 convex (has a minimum) key_power_ws coef=+0.2096 convex (has a minimum) modifier_cm coef=+0.1196 convex (has a minimum) Notable interactions: key_power_ws*fill_ratio coef=-0.7875 (antagonistic) fill_ratio*modifier_cm coef=-0.5875 (antagonistic) key_power_ws*modifier_cm coef=-0.4375 (antagonistic) Predicted optimum (from quadratic model, at observed points): key_power_ws = 100 fill_ratio = 8 modifier_cm = 60 Predicted value: 7.8583 Surface optimum (via L-BFGS-B, quadratic model): key_power_ws = 100 fill_ratio = 8 modifier_cm = 60 Predicted value: 7.8583 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. fill_ratio (effect: 1.1, contribution: 42.3%) 2. modifier_cm (effect: 0.9, contribution: 33.3%) 3. key_power_ws (effect: 0.7, contribution: 24.4%) === Optimization: shadow_harshness === Direction: minimize Best observed run: #17 key_power_ws = 300 fill_ratio = 5 modifier_cm = 105 Value: 2.4 RSM Model (linear, R² = 0.0862, Adj R² = -0.0661): Coefficients: intercept +5.3455 key_power_ws +0.6062 fill_ratio -0.0975 modifier_cm -0.0281 RSM Model (quadratic, R² = 0.2111, Adj R² = -0.3805): Coefficients: intercept +5.5757 key_power_ws +0.6062 fill_ratio -0.0975 modifier_cm -0.0281 key_power_ws*fill_ratio +0.8375 key_power_ws*modifier_cm +0.1125 fill_ratio*modifier_cm +0.1375 key_power_ws^2 -0.1551 fill_ratio^2 -0.2751 modifier_cm^2 +0.0849 Curvature analysis: fill_ratio coef=-0.2751 concave (has a maximum) key_power_ws coef=-0.1551 concave (has a maximum) modifier_cm coef=+0.0849 negligible curvature Notable interactions: key_power_ws*fill_ratio coef=+0.8375 (synergistic) Predicted optimum (from linear model, at observed points): key_power_ws = 665.148 fill_ratio = 5 modifier_cm = 105 Predicted value: 6.4522 Surface optimum (via L-BFGS-B, linear model): key_power_ws = 100 fill_ratio = 8 modifier_cm = 150 Predicted value: 4.6136 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. modifier_cm (effect: 3.4, contribution: 53.2%) 2. key_power_ws (effect: 2.1, contribution: 32.3%) 3. fill_ratio (effect: 0.9, contribution: 14.5%)
← Previous: Landscape Photo Exposure Next: Lens Sharpness Testing →