Luminance/chrominance bandwidth mismatch
How unequal baseband bandwidth changes the relative sharpness of brightness and colour detail before composite television encoding.
Visible effect
Colour and brightness stop sharing the same edge sharpness
At a sharp coloured boundary, luminance and chrominance no longer describe the same spatial transition. When the chrominance path is narrower, brightness remains crisp while colour spreads sideways, small coloured details lose saturation, and thin alternating colours can merge. When the luminance path is narrower, colour can remain comparatively abrupt around a soft brightness edge.
The effect follows horizontal picture detail because analogue television bandwidth is specified along each scanned line. It is easiest to recognize on colour bars, fine colour gratings, and high-contrast coloured lettering—not on a flat patch, where a low-pass filter has no transition to alter.
Physics
Separate baseband paths impose separate low-pass responses
A television transmitter does not send three finished RGB channels directly. A colour encoder separates the picture into a brightness-like drawing, luma Y′A luminance-related signal Y′ computed from transfer-encoded R′G′B′ components. Unlike physical luminance, it is not proportional to light., and two signals describing how the colour differs from that brightness. Colour models and spaces explains how these encoded signal coordinates differ from physical light and from ordinary RGB descriptions.
These components travel through separate electrical paths before they are combined into composite baseband videoThe original information-bearing signal before it is shifted onto a radio-frequency carrier; composite video is a baseband voltage waveform.. The complete journey is shown in How analogue television carries an image. If the two paths retain different amounts of fine detail, the reconstructed brightness and colour no longer change across an edge in the same way.
Each path behaves as a bandwidthThe span of frequencies needed to carry a signal or admitted by a system; greater picture detail generally requires more video bandwidth.-limited channel. A narrower chrominance response suppresses rapid changes in colour difference while leaving Y′ detail comparatively intact. The receiver therefore reconstructs a sharp brightness boundary with a wider colour transition. Reversing the mismatch makes the luma transition wider instead.
The cause can be followed one step at a time. A sharp picture edge makes the electrical signal change quickly. A quick change needs high-frequency components. A low-pass path weakens those components, so its output takes longer to move from one level to the next. During that time the television scan continues horizontally across the line. The longer electrical transition therefore occupies more horizontal picture positions and looks like blur.
The blur does not arise merely because a filter's cutoff has a gradual shape. The filter's complete amplitude and phase response determines whether the widened edge is smooth, asymmetric, or accompanied by ringing.
This page models the baseband formation fault at the transmitter. Similar-looking colour softness can also be introduced by a receiver decoder, recording format, or deliberately bandwidth-limited standard; ownership depends on where the unintended response departs from specification.
Mathematics
Two impulse responses act on the same scanned line
Along horizontal coordinate x, Y′ and the colour-difference vector C are convolved with impulse responses hY and hC. The star in the formula means convolution: every output position is a weighted combination of neighbouring input positions. The frequency responses HY(f) and HC(f) describe which rates of change each path retains. The mismatch exists when their effective bandwidths BY and BC have the wrong relationship.
A picture edge is approximately a step input. The filter's visible edge is therefore its step response: the accumulated impulse response rather than the frequency-response curve itself. A narrower passband spreads the impulse response over more time and makes the step take longer to settle. Scan timing maps that longer transition onto more horizontal pixels.
The shader uses normalized symmetric Gaussian kernels as bounded visual proxies. Their frequency response and step response are both smooth, which avoids distracting overshoot. Reducing a control increases that component's standard deviation σ; normalization keeps the weights summing to one, so a uniform patch remains unchanged while an edge spreads across neighbouring samples.
Shader
Two normalized gathers preserve DC while changing edge width
One fullscreen pass samples a 25-pixel horizontal neighbourhood. Every sample is converted to Y′UV-like signal coordinates. The wider component path becomes the reference; only the relatively narrower path receives additional spread. Separate luma and chrominance sums are normalized and converted back to RGB. Equal controls therefore reproduce the source, and there is no offset term that could silently turn bandwidth mismatch into delay mismatch.
// WHAT: Show unequal horizontal detail in luminance and chrominance.
// HOW: Convert samples to Y′ and colour differences, apply two independent
// normalized horizontal low-pass gathers, then reconstruct RGB.
// WHY: Bandwidth mismatch changes component edge widths without moving their
// centres; filtering RGB together would conceal that relative response.
const int BANDWIDTH_RADIUS = 12;
vec3 rgbToVideo(vec3 rgb) {
float y = dot(rgb, vec3(0.299, 0.587, 0.114));
return vec3(y, 0.492 * (rgb.b - y), 0.877 * (rgb.r - y));
}
vec3 videoToRgb(vec3 video) {
float r = video.x + video.z / 0.877;
float b = video.x + video.y / 0.492;
float g = (video.x - 0.299 * r - 0.114 * b) / 0.587;
return vec3(r, g, b);
}
float bandwidthToSigma(float bandwidth) {
float bounded = clamp(bandwidth, 0.2, 1.0);
return min(12.0, 3.0 * (1.0 / bounded - 1.0));
}
float bandwidthWeight(float offset, float sigma) {
if (sigma < 0.001) return offset == 0.0 ? 1.0 : 0.0;
return exp(-(offset * offset) / (2.0 * sigma * sigma));
}
vec3 applyLumaChromaBandwidthMismatch(
vec2 sourceUv,
float lumaBandwidth,
float chromaBandwidth
) {
// Mismatch is relative: a common bandwidth limit belongs to the surrounding
// video system, while this effect is only the unequal response between the
// two component paths. Using the wider path as the reference makes equal
// settings the identity state at every control value.
float referenceBandwidth = max(lumaBandwidth, chromaBandwidth);
float lumaSigma = bandwidthToSigma(lumaBandwidth / referenceBandwidth);
float chromaSigma = bandwidthToSigma(chromaBandwidth / referenceBandwidth);
float lumaSum = 0.0;
vec2 chromaSum = vec2(0.0);
float lumaWeightSum = 0.0;
float chromaWeightSum = 0.0;
for (int offset = -BANDWIDTH_RADIUS; offset <= BANDWIDTH_RADIUS; offset += 1) {
float sampleOffset = float(offset);
vec2 sampleUv = sourceUv + vec2(sampleOffset / u_sourceSize.x, 0.0);
vec3 video = rgbToVideo(texture(u_source, sampleUv).rgb);
float lumaWeight = bandwidthWeight(sampleOffset, lumaSigma);
float chromaWeight = bandwidthWeight(sampleOffset, chromaSigma);
lumaSum += video.x * lumaWeight;
chromaSum += video.yz * chromaWeight;
lumaWeightSum += lumaWeight;
chromaWeightSum += chromaWeight;
}
vec3 filtered = vec3(
lumaSum / max(lumaWeightSum, 0.0001),
chromaSum / max(chromaWeightSum, 0.0001)
);
return videoToRgb(filtered);
}- Source textureGamma-coded video
- Independent component low-pass gatherOne fullscreen render pass
- Convert RGB to luminance and colour difference
- Horizontal component filters · parallelGather and normalize luminanceGather and normalize chrominance
- Reconstruct RGB
- Mix the effect
- Display output
Why these steps are here
- Convert gamma-coded RGB into luminance and two colour-difference components.
- Treat the wider component path as the reference, so equal settings produce no mismatch.
- Map only the relative loss of detail to an additional horizontal spread.
- Accumulate luminance and chrominance with independent Gaussian weights.
- Normalize both filters so flat fields and component DC values are preserved.
- Reconstruct RGB and mix the affected result with the original source.
Notes
- The sliders express relative retained detail, not a particular system in MHz. The wider of the two paths is the reference; only their ratio controls the additional blur.
- The Gaussian kernel is an educational approximation, not a claim that a transmitter uses a Gaussian filter. It produces a clean monotonic transition so the relationship between bandwidth and edge width is easy to see.
- An ideal brick-wall frequency response would not preserve a perfectly sharp edge: its sinc impulse response would produce overshoot and ringing beside the transition. Real filters combine finite roll-off, phase response, and possible ringing; their exact edge shapes depend on the circuit.
- The model uses symmetric zero-phase filters. Physical filters may add group delay; that mechanism is intentionally excluded so this page isolates unequal bandwidth.
- Filtering is horizontal because one-dimensional temporal bandwidth maps to detail along the television scanning line. Vertical colour resolution is governed by other parts of the encoding and line structure.
- Any equal pair of detail settings is the identity state because the page models only the difference between the paths. A shared bandwidth limit would soften the whole signal, but it would be a different effect.
- PAL, NTSC, and SECAM form and carry chrominance differently, but all require finite luminance and chrominance paths. This model stops before standard-specific composite modulation so the shared bandwidth mechanism remains visible.
References
ITU-R BT.1700 — composite analogue television signals — authoritative definitions and signal characteristics for conventional NTSC, PAL, and SECAM composite television systems.
ITU-R BT.500 — methodology for subjective television assessment — authoritative methodology for evaluating visible television-picture impairments under controlled viewing conditions.