It Doesn't Finish in Order
Stepping Back from the Blocks We've come through four blocks: the seat that decides the amount of light, the seat that flattens light that doesn't land evenly, the seat that decides what color to call that light, and the seat that moves the color beyond white. Each time I applied the same frame. One side holds an algorithm as its asset and protects consistent behavior across many inputs. The other holds a specific module as its asset and protects the same result repeating from unit to unit. This final installment steps back from the blocks. Taken one at a time, tuning looks like work that flows through a fixed order once and is done. It isn't. Put the blocks back together and a decision made in one shakes what was settled in another. It Doesn't Only Flow Forward The pipeline has an order. The amount of light is set, the frame is flattened, white is decided, the remaining color is moved. Data flows in that direction. But tuning does not flow only in that direction. That the output of an earlier block becomes the input of a later one means that touching something earlier shakes what you had settled later. Retake AE's values so that the split between exposure and gain changes, and the seat estimating white and the seat moving color are no longer receiving the same signal. A change upstream almost always propagates downstream. So you look at the downstream again. And what you find there can prompt a change upstream in turn. Only after this back-and-forth has gone around a few times do the values find a place where they can stand together. Nor is the direction of propagation always front to back. Lens shading and AWB have hold of each other. Here's one direction. When the frame hasn't been flattened, the edges carry a color cast. AWB looks at the frame's color statistics to estimate the color of the light, and if the edge cast bleeds into those statistics, it lands on the wrong white. Shading has to be properly flattened for AWB to see statistics it can trust. Here's the