latest version v1.9 - last update 10 Apr 2010 |
Split image in its Luminance Inphase Quadrature channels. More...
#include <ltiSplitImageToYIQ.h>
Public Member Functions | |
virtual const char * | getTypename () const |
virtual functor * | clone () const |
virtual bool | apply (const image &img, channel &Y, channel &I, channel &Q) const |
virtual bool | apply (const image &img, channel8 &Y, channel8 &I, channel8 &Q) const |
virtual bool | apply (const rgbPixel &pixel, float &Y, float &I, float &Q) const |
virtual bool | apply (const rgbPixel &pixel, ubyte &Y, ubyte &I, ubyte &Q) const |
Split image in its Luminance Inphase Quadrature channels.
The following is an excerpt of this page
The YIQ system is the color primary system adopted by National Television System Committee (NTSC) for color TV broadcasting. The YIQ color solid is made by a linear transformation of the RGB cube. Its purpose is to exploit certain characteristics of the human eye to maximize the utilization of a fixed bandwidth. The human visual system is more sensitive to changes in luminance than to changes in hue or saturation, and thus a wider bandwidth should be dedicated to luminance than to color information. Y is similar to perceived luminance, I and Q carry color information and some luminance information. The Y signal usually has 4.2 MHz bandwidth in a 525 line system. Originally, the I and Q had different bandwidths (1.5 and 0.6 MHz), but now they commonly have the same bandwidth of 1 MHz.
Here is the RGB -> YIQ conversion:
[ Y ] [ 0.299 0.587 0.114 ] [ R ] [ I ] = [ 0.596 -0.275 -0.321 ] [ G ] [ Q ] [ 0.212 -0.523 0.311 ] [ B ]
Here is the YIQ -> RGB conversion:
[ R ] [ 1 0.956 0.621 ] [ Y ] [ G ] = [ 1 -0.272 -0.647 ] [ I ] [ B ] [ 1 -1.105 1.702 ] [ Q ]
This color space is not used anymore. Modern systems use the YUV, YCbCr or YPbPr spaces instead.
virtual bool lti::splitImageToYIQ::apply | ( | const rgbPixel & | pixel, | |
ubyte & | Y, | |||
ubyte & | I, | |||
ubyte & | Q | |||
) | const [virtual] |
split the pixel in YIQ.
YIQ splitting produces unnormalized values !
pixel | the pixel to be splitted | |
Y | the perceived luminance | |
I | color information and some luminance | |
Q | color information and some luminance |
Implements lti::splitImage.
virtual bool lti::splitImageToYIQ::apply | ( | const rgbPixel & | pixel, | |
float & | Y, | |||
float & | I, | |||
float & | Q | |||
) | const [virtual] |
split the pixel in YIQ.
YIQ splitting produces unnormalized values !
pixel | the pixel to be splitted | |
Y | the perceived luminance | |
I | color information and some luminance | |
Q | color information and some luminance |
Implements lti::splitImage.
virtual bool lti::splitImageToYIQ::apply | ( | const image & | img, | |
channel8 & | Y, | |||
channel8 & | I, | |||
channel8 & | Q | |||
) | const [virtual] |
split the image in YIQ.
YIQ splitting produces unnormalized channels !
img | the image to be splitted | |
Y | the perceived luminance | |
I | color information and some luminance | |
Q | color information and some luminance |
Implements lti::splitImage.
virtual bool lti::splitImageToYIQ::apply | ( | const image & | img, | |
channel & | Y, | |||
channel & | I, | |||
channel & | Q | |||
) | const [virtual] |
split the image in YIQ.
YIQ splitting produces unnormalized channels !
img | the image to be splitted | |
Y | the perceived luminance | |
I | color information and some luminance | |
Q | color information and some luminance |
Implements lti::splitImage.
virtual functor* lti::splitImageToYIQ::clone | ( | ) | const [virtual] |
returns a pointer to a clone of the functor
Implements lti::functor.
virtual const char* lti::splitImageToYIQ::getTypename | ( | ) | const [virtual] |
returns the name of this type