この一連のダークネット解析ソースコードがRGB画像に関連し、YUV、HSVフォーマットimage.cは、我々は、本明細書()関数とyuv_to_rgb()機能に関与image.c rgb_to_yuvを解決します。
- RGB形式がYUVフォーマットに変換しました
次のように対応する機能は以下のとおりです。
void rgb_to_yuv(image im)
{
assert(im.c == 3);
int i, j;
float r, g, b;
float y, u, v;
for(j = 0; j < im.h; ++j){
for(i = 0; i < im.w; ++i){
r = get_pixel(im, i , j, 0);
g = get_pixel(im, i , j, 1);
b = get_pixel(im, i , j, 2);
y = .299*r + .587*g + .114*b;
u = -.14713*r + -.28886*g + .436*b;
v = .615*r + -.51499*g + -.10001*b;
set_pixel(im, i, j, 0, y);
set_pixel(im, i, j, 1, u);
set_pixel(im, i, j, 2, v);
}
}
}
- 変換されたRGB形式のYUVフォーマット
void yuv_to_rgb(image im)
{
assert(im.c == 3);
int i, j;
float r, g, b;
float y, u, v;
for(j = 0; j < im.h; ++j){
for(i = 0; i < im.w; ++i){
y = get_pixel(im, i , j, 0);
u = get_pixel(im, i , j, 1);
v = get_pixel(im, i , j, 2);
r = y + 1.13983*v;
g = y + -.39465*u + -.58060*v;
b = y + 2.03211*u;
set_pixel(im, i, j, 0, r);
set_pixel(im, i, j, 1, g);
set_pixel(im, i, j, 2, b);
}
}
}
[参考文献]