【发布时间】:2012-01-13 17:11:56
【问题描述】:
我在这个论坛上找到了这个代码,但我对代码有疑问。
在此代码中 sn-p "int hi = Convert.ToInt32(Math.Floor(hue / 60)) % 6;"为什么完整的答案是模数为 6? (%6)
-
为什么“value = value * 255”的值乘以255?
我参考了这篇研究论文(p-15,p-16)并讨论了相同的算法,但我发现了这些差异。
http://www.poynton.com/PDFs/coloureq.pdf
public static Color ColorFromHSV(double hue, double saturation, double value) { int hi = Convert.ToInt32(Math.Floor(hue / 60)) % 6; double f = hue / 60 - Math.Floor(hue / 60); value = value * 255; int v = Convert.ToInt32(value); int p = Convert.ToInt32(value * (1 - saturation)); int q = Convert.ToInt32(value * (1 - f * saturation)); int t = Convert.ToInt32(value * (1 - (1 - f) * saturation)); if (hi == 0) return Color.FromArgb(255, v, t, p); else if (hi == 1) return Color.FromArgb(255, q, v, p); else if (hi == 2) return Color.FromArgb(255, p, v, t); else if (hi == 3) return Color.FromArgb(255, p, q, v); else if (hi == 4) return Color.FromArgb(255, t, p, v); else return Color.FromArgb(255, v, p, q); } public void convertToHSV(Color color, out double hue, out double saturation, out double value) { int max = Math.Max(color.R, Math.Max(color.G, color.B)); int min = Math.Min(color.R, Math.Min(color.G, color.B)); hue = color.GetHue(); saturation = (max == 0) ? 0 : 1d - (1d * min / max); value = max / 255d; }
【问题讨论】:
-
是因为色调在柱坐标中改变了它的颜色吗?伙计们帮帮我
标签: image-processing colors rgb hsv hue