色彩空間轉換

2021-06-23 06:45:09 字數 2830 閱讀 1867

// rgb轉換為yuv

void rgb2yuv(double r, double g, double b, double &y, double &u, double &v)

// yuv轉換為rgb

void yuv2rgb(double y,double u,double v, double &r, double &g, double &b)

// rgb轉換為xyz

void rgb2xyz(double r, double g, double b double &x, double &y, double &z)

else

if (var_g > 0.04045)

else

if (var_b > 0.04045)

else

var_r = var_r * 100.0f;

var_g = var_g * 100.0f;

var_b = var_b * 100.0f;

//observer. = 2°, illuminant = d65

x = var_r * 0.4124 + var_g * 0.3576 + var_b * 0.1805;

y = var_r * 0.2126 + var_g * 0.7152 + var_b * 0.0722;

z = var_r * 0.0193 + var_g * 0.1192 + var_b * 0.9505;

}// xyz轉換為lab

void xyz2lab(double x, double y, double z, double &l, double &a ,double &b)

else

if (var_y > 0.008856)

else

if ( var_z > 0.008856 )

else

l = ( 116 * var_y ) - 16;

a = 500 * ( var_x - var_y );

b = 200 * ( var_y - var_z );

}// rgb轉換為lab

void rgb2lab(double r, double g,double b, double &l, double &a, double &b)

// lab轉換為rgb

void lab2rgb(double l, double a, double b, double &r, double &g, double &b)

// lab轉換為xyz

void lab2xyz(double lab_l, double lab_a, double lab_b, double &x, double &y, double &z)

// xyz轉換為rgb

void xyz2rgb(double x, double y, double z, double &r, double &g, double &b)

// rgb轉換為hsv

void rgb2hsv(double r, double g, double b, double &h, double &s, double v)

else //chromatic data

}// hsv轉換為rgb

void hsv2rgb(double h, double s, double v, double &r, double &g, double &b)

else

else if ( var_i == 1 )

else if ( var_i == 2 )

else if ( var_i == 3 )

else if ( var_i == 4 )

else

r = var_r * 255.0f; //rgb results from 0 to 255

g = var_g * 255.0f;

b = var_b * 255.0f;

}}// yuv轉換為xyz

void yuv2xyz(double l, double u, double v, double &x, double &y, double &z)

// lab轉換為hsv

void lab2hsv(double l, double a, double b, double &h, double &s, double &v)

// xyz轉換為hsv

void xyz2hsv(double x, double y, double z,double &h, double &s, double &v)

// rgb轉換為cmy

void rgb2cmy(double r, double g, double b, double &c, double &m, double y)

//cmy轉換為rgb

void cmy2rgb(double c, double m, double y, double &r, double &g, double &b)

//rgb轉換為cmyk

void rgb2cmyk(double r, double g, double b, double &c, double &m, double y, double &k)

else

k = var_k;

}//cmyk轉換為cmy

void cmyk2cmy(double c1, double m1, double y1, double k1, double &c2, double &m2, double y2)

色彩空間轉換

rgb轉換為yuv void rgb2yuv double r,double g,double b,double y,double u,double v yuv轉換為rgb void yuv2rgb double y,double u,double v,double r,double g,doubl...

色彩空間轉換

rgb轉換為yuv void rgb2yuv double r,double g,double b,double y,double u,double v yuv轉換為rgb void yuv2rgb double y,double u,double v,double r,double g,doubl...

色彩空間的轉換

彩圖與灰度圖的相互轉換 rgb gray rgb a gray y 0.212671 r 0.715160 g 0.072169 b gray rgb a r y g y b y a 0 rgb xyz x 0.412411 0.357585 0.180454 r y 0.212649 0.7151...