public CMY_Color(Color color) { A = color.A; R = color.R; G = color.G; B = color.B; this.color = color; C = BaseExtensions.GetComponentValue(1 - GrayCalculatorExtensions.GetNonLinearGammaCorrectedValue(R)); M = BaseExtensions.GetComponentValue(1 - GrayCalculatorExtensions.GetNonLinearGammaCorrectedValue(G)); Y = BaseExtensions.GetComponentValue(1 - GrayCalculatorExtensions.GetNonLinearGammaCorrectedValue(B)); }
public CMY_Color(int C, int M, int Y) { this.C = C; this.M = M; this.Y = Y; A = 255; R = BaseExtensions.GetComponentValue(1 - GrayCalculatorExtensions.GetNonLinearGammaCorrectedValue(C)); G = BaseExtensions.GetComponentValue(1 - GrayCalculatorExtensions.GetNonLinearGammaCorrectedValue(M)); B = BaseExtensions.GetComponentValue(1 - GrayCalculatorExtensions.GetNonLinearGammaCorrectedValue(Y)); color = Color.FromArgb(A, R, G, B); }
private const double y = 0.713; /* (0.5 / (1 - 0.299)) = 0.71326676176890156918687589158345 */ public YCbCr_Color(Color color) { A = color.A; R = color.R; G = color.G; B = color.B; this.color = color; LinearGammaCorrected_Red = GrayCalculatorExtensions.GetNonLinearGammaCorrectedValue(color.R); LinearGammaCorrected_Green = GrayCalculatorExtensions.GetNonLinearGammaCorrectedValue(color.G); LinearGammaCorrected_Blue = GrayCalculatorExtensions.GetNonLinearGammaCorrectedValue(color.B); Y_Apostrophe = color.GetBT601Value(); U = LinearGammaCorrected_Blue - Y_Apostrophe; V = LinearGammaCorrected_Red - Y_Apostrophe; Pb = x * U; Pr = y * V; Y = (int)Math.Round(16 + 219 * Y_Apostrophe); Cb = (int)Math.Round(128 + 224 * Pb); Cr = (int)Math.Round(128 + 224 * Pr); }