rgb2ycbcr

Syntax

int rgb2ycbcr(int r, int g, int b, int z)

Arguments

r
Red value
g
Green value
b
Blue value
z
Determines which value is returned. z=0 for Y, z=1 for Cb, z=2 for Cr

Return

Returns the Y, Cb or Cr value from 0 to 255 depending on the value of z

Description

Lets you convert RGB values to YCbCr values.

Example

%ffp

ctl(0):"Y (Luminancy)",Range=(-255,255),val=0
ctl(1):"Cb (Chroma Blue)",Range=(-255,255),val=0
ctl(2):"Cr (Chroma Red)",Range=(-255,255),val=0


ForEveryTile:{
	int r,g,b,i,cb,cr;


		for (y= y_start; y < y_end; y++){
			if(updateProgress(y,y_end)) abort();
		for (x = x_start; x < x_end; x++){
				
			r = src(x,y,0);
			g = src(x,y,1);
			b = src(x,y,2);

			i = rgb2ycbcr (r,g,b,0);
			cb = rgb2ycbcr (r,g,b,1); 
			cr =rgb2ycbcr (r,g,b,2); 
			
			
			//Do the adjustment
			i = i + ctl(0);
			cb = cb + ctl(1);
			cr = cr + ctl(2);

			pset( x, y, 0, ycbcr2rgb (i,cb,cr,0) );
			pset( x, y, 1, ycbcr2rgb (i,cb,cr,1) );
			pset( x, y, 2, ycbcr2rgb (i,cb,cr,2) );
			

		}}

	return true;

}

Also see

ycbcr2rgb

Comments

Everyone can add his comments about his experiences with this function here. Tips for using it are welcome, too.