You change a color control in the camera's own configuration tool — gain, hue, sharpness — and the read-back returns the new value while the live image does not move. The causes rank in a stable order, and you can test them in ten minutes: an automatic mode still owns the sensor; the change is real but smaller than the display shows; or the control was never implemented on your model. This page walks a color area scan camera or smart camera application through each cause, a worked gain-versus-auto-exposure example, the write-read-back-capture tests that settle it, and the fix that keeps the settings fixed.
The symptom: the value moves, the picture does not
A write that reads back correctly proves the transport: your command reached the camera and the parameter holds the new number. It proves nothing about the image pipeline, which is why the symptom feels contradictory.
Split it with the histogram. If the histogram's mean stays pinned no matter what you write, an automatic loop is cancelling you — go to the first cause. If the histogram moves a little but your eyes see nothing, the control works and the display is hiding a change of a few grey levels. If the histogram does not move by even one DN and no auto mode is on, suspect a control that is stored but never applied to the stream you are watching.
Most likely cause: an auto mode still owns the sensor
Auto exposure is a closed loop. It reads each frame's mean, compares it with a target near mid-grey, and rewrites exposure time and its own gain until the mean lands on target. A manual gain change is exactly the disturbance this loop exists to remove: raise the gain and the loop lowers the exposure, and within a few frames the image is back where it started. Per-channel color gain fares worse — it is the same actuator auto white balance uses, so an active white-balance loop re-solves your color gains every frame or two.
In GenICam terms the gate is ExposureAuto, GainAuto and BalanceWhiteAuto. While any of these reads Continuous, the manual features Gain, ExposureTime and BalanceRatio have no lasting effect on the image. Set them Off before judging any manual value. SDKs that enumerate options under names such as COLOR_GAIN, COLOR_HUE, COLOR_SHARPNESS and COLOR_AUTO_EXPOSURE behave the same way: while the color auto-exposure flag is 1, the color gain does nothing you can see.
The same gate is the subject of camera gain settings not applied: turn off auto gain first, and the exposure side is worked through in manual exposure darker than auto exposure: why AE beats your gain. Where a motorized iris sits in the path, it can fight your exposure settings too — see automatic iris, exposure and gain control in machine vision.
Second cause: the change is real but smaller than the display shows
Hue and sharpness are gentle controls. Hue rotates the chroma axes, so near-neutral pixels barely move; sharpness touches only pixels close to edges. In 8-bit output the shift is often a few DN per pixel: a ±3 DN move on a 128 DN mid-tone is a 2.3% change (3 / 128 ≈ 0.023). Fit a 4000-pixel-wide frame into a 1900-pixel-wide window and the viewer discards roughly half the pixels — a 2-3 DN shift disappears entirely.
Zoom to 100% before judging. Park on a fixed flat patch, step the control end to end, and watch the value under the cursor: a 2-3 DN wobble means the control works and display scaling was the whole problem. The instrument that settles it is a difference image — capture before and after as files and subtract, which shows every moved pixel and by how much.
Third cause: the control was never implemented
Some SDKs register the full documented option set for every model and implement only part of it. The tells are consistent: the option's range reads 0–0; the feature is absent from the camera's capability list; or the value accepts a write and returns it with no code path to the sensor or ISP. Mono pipelines are the legitimate version of this: hue and saturation do nothing on a mono camera, by design, because there is no chroma to rotate.
Check the model's feature list in the SDK and compare it with the options the utility shows. The discovery step is covered in camera demo has no exposure or gain controls: what to do, and the case where an option exists but the model refuses it in camera control query error: diagnose option compatibility. If the feature list marks the color controls as placeholders, no amount of configuration makes them work — the decision is a model that implements them.
Worked example: +6 dB of gain against a 128 DN auto-exposure target
This is the reported failure in numbers. Inputs, all typical 8-bit values for a color preview path: output depth 8 bits per channel (0–255 DN); auto-exposure target mean 128 DN, the usual near-mid-grey default; current exposure 10 ms; current gain 0 dB, which is ×1.0 linear; your change: color gain +6 dB.
The rule in words: pixel values scale linearly with linear gain and with exposure time, and an auto-exposure loop answers any gain change with an inverse exposure change so the mean returns to target.
Arithmetic. First the gain: 10^(6/20) = 10^0.3 ≈ 2.0, so +6 dB doubles it. Frame mean with the new gain alone: 128 DN × 2.0 = 256 DN, clipped toward 255. The loop answers: t_AE = 10 ms × (1.0 / 2.0) = 5 ms. Mean with gain and exposure together: 128 × 2.0 × (5 ms / 10 ms) = 128 DN. A mid-tone pixel at 120 DN runs 120 → 240 → 120 DN. Net change after convergence: 0 DN.
Decision. While the color auto-exposure flag is on, a manual gain change survives only until the loop converges — a handful of frames — and then vanishes. The threshold to watch is the histogram: if the mean returns to within about ±1 DN of 128 after every change you make, the auto loop owns the image. Turn the auto mode Off and the same +6 dB moves the mean to 256 DN, or clips, and holds there.
Test each cause in order
- Read the auto modes. Query ExposureAuto, GainAuto and BalanceWhiteAuto, or the SDK's color auto-exposure flag. Anything on Continuous or 1 goes to Off, then re-apply your manual value. This step alone fixes most cases.
- Capture two frames and subtract. Locked scene, control at value A, save the frame; control at value B, save again; difference the files. Any pixel moved by 1 DN or more proves the control reaches the pipeline, and the maximum delta tells you how large the effect really is.
- Watch the histogram mean. With the autos on, the mean pins to the target whatever you write; the loop's favourite statistics are explained in histogram exposure metrics for auto exposure and contrast control.
- Drive the control end to end. Minimum to maximum with the autos Off. If full-range hue or sharpness moves nothing at pixel zoom, treat the control as a placeholder.
- Check which stream you are viewing. Some stacks apply ISP controls only from the next stream start, and a preview tap can sit after the point your control acts on. Restart the stream and compare saved captures, not the scaled on-screen preview.
Fix: take manual ownership, then verify per pixel
Turn every auto mode Off. Set exposure for brightness, gain for what remains, and per-channel white balance for color; hue and saturation, where implemented, are the final trim. Prove each setting the same way: write, read back, capture, differ.
If you drive parameters from code, apply them after the stream is configured and check by read-back on every run — the write-and-confirm pattern for exposure and white balance is in runtime camera parameter control: exposure and white balance live. Save the verified set to the camera's user-set memory or your own config file so nothing reverts at power-up.
Machine-vision color cameras implement these manual features in the sensor and ISP, print real ranges in the feature list, and hold their values. A 20 MP color GigE model like the MV-CS200-10GC covers high-resolution color work at C-mount with the standard gain, exposure and white-balance controls.
- Sensor format
- 1"
- Lens mount
- C-mount
- Interface
- GigE
- Resolution
- 16-25 MP
For the fastest verification loop, a 2.5 MP color global-shutter GigE camera such as the MV-CU020-90GC keeps frames short and feedback tight between write and capture.
- Sensor format
- 1/1.7"
- Lens mount
- C-mount
- Interface
- GigE
- Resolution
- Up to 3 MP
And where the inspection runs on the device itself, a smart camera exposes the same exposure, gain and white-balance model without a PC: the 5 MP color MV-SC3050XC-16M-ATN-H is a vision sensor with a 1/1.45" global-shutter sensor and an M12 lens mount on Fast Ethernet.
- Interface
- Fast Ethernet
- Resolution
- 5 MP
- Sensor format
- 1/1.45"
- Shutter
- Global
Prevention: lock the autos in production
Controlled lighting with locked exposure and gain gives repeatable grey levels and stable thresholds. Automatic modes buy tolerance to changing ambient at the cost of exactly the silent drift that makes this debugging confusing. In an enclosed cell, run ExposureAuto, GainAuto and BalanceWhiteAuto Off and treat any brightness shift as a fault to investigate. Reserve the auto modes for stations that see daylight or dock-door light, and if ambient genuinely varies, plan for the loop's corrections as described in ambient light variation in pick and place vision: control it.
Push the settings from code at every stream start rather than trusting the last session, and keep the whole image-quality chain — black level, gamma, saturation, gain — deliberate; industrial camera image quality settings: exposure, gain, balance maps what each control does. More camera-side guides sit on the cameras topic page.
Checklist before you blame the camera
- Every auto mode reads Off — written and read back, not assumed.
- The manual value reads back exactly as written.
- Two saved frames differenced: note the maximum delta in DN, don't judge by the live window.
- Histogram mean within ±1 DN of the target only where you want it there.
- The control's range is real, not 0–0, and it appears in the model's feature list.
- The stream was restarted after ISP-related changes, and you compared saved captures, not the scaled preview.
- The verified settings persist in user-set memory or are applied by code at every stream start.
If every line passes and the image still ignores the control, the remaining suspect is the camera's implementation. The camera finder filters color models by interface, resolution and shutter, the camera configurator walks lens, light and controller around the camera you pick, and contact us with the model, the feature read-back and your two frames when you want a second opinion.
Questions
Why does my gain read back correctly but the histogram never moves?
Because read-back proves the parameter was stored, not that it affects pixels. With auto exposure running, the loop re-solves exposure and its own gain to hold its brightness target, so your manual gain is cancelled within a few frames and the mean returns to target. Set the auto mode Off, re-apply the value, and compare histograms of two saved frames — the mean should then move at once.
Does auto white balance also cancel manual color gain?
Yes. White balance in a color camera is implemented as per-channel gains, so an active white-balance loop re-solves the same numbers you are setting by hand. Turn BalanceWhiteAuto, or the SDK's equivalent flag, Off before adjusting per-channel gain; otherwise R, G and B drift back toward the loop's neutral target each frame and your color cast disappears.
How do I see a hue or sharpness change my eye misses?
Freeze the scene, capture one frame with the control at its minimum and one at its maximum, and subtract the two files. Zoom the difference to 100% and read the pixel values: any delta of 1 DN or more proves the control reaches the image. Live viewers downscale and auto-stretch, which hides shifts of 2-3 DN that the difference image shows plainly.
An option shows a range of 0 to 0 — can I still use it?
Treat a 0–0 range as a placeholder: the SDK registered the option for uniformity, but this model or firmware implements no range, so nothing you write can reach the pipeline. Check the camera's feature list for the implemented set. If the control matters to your task, pick a model whose feature list prints a real range for it.
Should auto exposure stay on in production?
Only where ambient light is genuinely uncontrolled, such as a station beside a dock door. In enclosed cells with regulated lighting, locked exposure and gain give repeatable grey levels and stable thresholds, and any brightness drift becomes a visible fault instead of a silent correction. If ambient does vary, schedule the auto modes deliberately and expect thresholds to move with the loop.


