Consumer NTSC color decoding

Jun 29, 2005 0 Replies

I recently came across a discussion on Wikipedia

formatting link
concerning how consumer NTSC televisions intentionally decode color in a way that diverges from the NTSC specification, in order to "improve" the display of certain colors. The discussion refers to something called "wide angle color demodulation", which sounds to me like the I and Q axes are made non-orthogonal so that a wider range of hues end up decoding to something resembling flesh color. (This made me think of the uniforms in the original Star Trek series, which were actually green but always looked yellow onscreen... is there a connection?)



Someone in the discussion quoted this from the datasheet for a TV-controller-on-a-chip made by Sony:



AXIS (1): R-Y, G-Y axis selector switch



0 =3D Japan axis R-Y: 95=B0 x 0.78, G-Y: 240=B0 x 0.3
1 =3D US axis R-Y: 112=B0 x 0.83, G-Y: 252=B0 x 0.3 (B-Y: 0=B0 x 1)

I gather that the angles specified for R-Y, G-Y and B-Y (those are angles in degrees, in case the Internet eats the degree symbols) are the hues which decode to pure red, pure green and pure blue respectively ("pure red" meaning the hue for which R > G =3D B, "pure green" being the hue for which G > R =3D B, and "pure blue" being the hue for which B > R =3D G).



According to the matrix I have for converting YIQ to RGB:



R [ 1.000 0.956 0.621 ][ Y ] G =3D [ 1.000 -0.272 -0.647 ][ I ] B [ 1.000 -1.106 1.703 ][ Q ]



Pure red, green and blue should be at the following angles from the Q axis:



R-Y =3D tan-1[(-0.647 - 1.703)/(-1.106 + 0.272)] =3D 70.5 degrees G-Y =3D tan-1[( 0.621 - 1.703)/(-1.106 - 0.956)] =3D 207.7 degrees B-Y =3D tan-1[( 0.621 + 0.647)/(-0.272 - 0.956)] =3D -45.9 degrees



If we rotate these to put B-Y at the origin (the way the hues are indicated on the Sony datasheet), we get R-Y at 116.4 degrees and G-Y at 253.6 degrees. So it looks like the Sony chip set to "US axis" is very close to the NTSC specification, but when set to "Japan axis" its color axes are quite skewed--red and blue are pushed closer together, presumably so that Asian flesh tones will occupy a wider range of the spectrum.



Let's say I wanted to write a software image filter to display images the way they would appear after encoding to NTSC video and then decoding on a consumer TV set. How would I go about constructing a matrix to decode colors in a way corresponding to a TV with skewed color axes, like this Sony device in Japan mode?



Perhaps I should have asked on a maths or computer graphics newsgroup instead, but I suspect electronics people would be more likely to know what I'm talking about here. Many computer graphics people don't even know the difference between YIQ, YUV and YPbPr...



Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required