Maker Pro
Maker Pro

Consumer NTSC color decoding

A

Alex W. Jackson

Jan 1, 1970
0
I recently came across a discussion on Wikipedia
(http://en.wikipedia.org/wiki/Talk:NTSC) 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 = Japan axis R-Y: 95° x 0.78, G-Y: 240° x 0.3
1 = US axis R-Y: 112° x 0.83, G-Y: 252° x 0.3 (B-Y: 0° 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 = B, "pure
green" being the hue for which G > R = B, and "pure blue" being the hue
for which B > R = G).

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

R [ 1.000 0.956 0.621 ][ Y ]
G = [ 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 = tan-1[(-0.647 - 1.703)/(-1.106 + 0.272)] = 70.5 degrees
G-Y = tan-1[( 0.621 - 1.703)/(-1.106 - 0.956)] = 207.7 degrees
B-Y = tan-1[( 0.621 + 0.647)/(-0.272 - 0.956)] = -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...
 
Top