#質問内容
画像処理で,RGBからグレイスケールに変換する場合,以下の式に従えば良いのですが,HSVからグレイスケールに変換する方法(式など)はないでしょうか?
お手数をおかけしますが,教えて頂けると幸いです.
#ソースコード(RGBからHSVに変換するコード)
C
1void hsv(unsigned char r, unsigned char g, unsigned char b, 2 double *H, double *S, double *V) 3{ 4 double max; 5 double min; 6 double R, G, B; 7 8 R = (double)r / 255; 9 G = (double)g / 255; 10 B = (double)b / 255; 11 12 if (R >= G && R >= B) { 13 max = R; 14 min = (G < B) ? G : B; 15 } else if (G >= R && G >= B) { 16 max = G; 17 min = (R < B) ? R : B; 18 } else { 19 max = B; 20 min = (R < G) ? R : G; 21 } 22 23 // Hue(色相) 24 if (max == R) { 25 *H = 60 * (G - B) / (max - min); 26 } else if (max == G){ 27 *H = 60 * (B - R) / (max - min) + 120; 28 } else { 29 *H = 60 * (R - G) / (max - min) + 240; 30 } 31 if (*H < 0.0) { 32 *H += 360.0; 33 } 34 35 // Saturation(彩度) 36 *S = (max - min) / max; 37 // Value(明度) 38 *V = max; 39}
回答1件
あなたの回答
tips
プレビュー