コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }