A single image almost never contains all the information you need. Different lighting conditions reveal different things, and the strongest systems combine several captures.
A typical multi-image set
- Normal exposure for the baseline.
- An overexposed image to separate near-identical materials.
- Different lighting angles to bring out topography.
- A UV image for contamination and coatings.
- An IR image for material penetration.
Each reveals different information. Fusing them gives the algorithm far more to work with than any single frame ever could.
A worked acquisition budget
Multi-image only works if it fits the cycle time, so budget it explicitly. Say the line gives you 800 ms per part for imaging:
frame exposure light switch readout total
normal, ring 2 ms 1 ms 8 ms 11 ms
overexposed, ring 8 ms 1 ms 8 ms 17 ms
low-angle east 2 ms 1 ms 8 ms 11 ms
low-angle west 2 ms 1 ms 8 ms 11 ms
UV 25 ms 2 ms 8 ms 35 ms
sum: 85 ms
Five frames in 85 ms - comfortably inside the budget, because strobed LED lighting switches in microseconds and exposure dominates only for the dim UV channel. The expensive part is rarely acquisition; it is the processing of five images instead of one, so measure that too before promising a cycle time.
Simple fusion strategies that work
- Per-channel rules: run a dedicated check on each frame (scratches on the low-angle frames, contamination on UV) and OR the results. Simple, debuggable, and you can explain every reject.
- Difference images: east-minus-west low-angle frames cancel flat texture and double the response of real topography.
- Min/max composites: a per-pixel minimum across lighting angles keeps only what is dark in every condition - very robust for true holes and voids.
Start with these before anything fancier. A fusion you cannot explain to an operator becomes a false-call dispute you cannot win.
The trade-off
More images means more acquisition time and more processing. The art is choosing the smallest set of images that fully separates the defect from everything else.
In practice I start with one frame, prove it insufficient with real samples, and add frames one at a time - each one justified by a defect class the current set misses. Sets designed this way stay small. Sets designed by enthusiasm grow until they blow the cycle time.