示例#1
0
        protected bool Get_Initial_RVreg1B_Using_LUT_MCI(Gamma_Set Set, int band, OC_Mode Mode)
        {
            if ((band >= 1) && (band <= DP213_Static.Max_HBM_and_Normal_Band_Amount) && (vars.Target.double_Lv > Algorism_Lower_Skip_LV) && (vars.Target.double_Lv < Algorism_Upper_Skip_LV))
            {
                f1().GB_Status_AppendText_Nextline("Before) R/G/B/Vreg1 = " + vars.Gamma.int_R.ToString() + "/" + vars.Gamma.int_G.ToString().ToString() + "/" + vars.Gamma.int_B.ToString() + "/" + vars.Vreg1, Color.Blue);

                int        gray = 0;
                RGB_Double Gray = DP213_Main_OC_Flow.init_gray_lut.Get_LUT_RGB(band, gray, Mode);

                RGB_Double Gamma_Voltage = new RGB_Double();
                Gamma_Voltage.double_R = InterpolationFomulaFactory.GetPrevBand_Red_Volatge(Gray.double_R);
                Gamma_Voltage.double_G = InterpolationFomulaFactory.GetPrevBand_Green_Volatge(Gray.double_G);
                Gamma_Voltage.double_B = InterpolationFomulaFactory.GetPrevBand_Blue_Volatge(Gray.double_B);

                double Voltage_VREF0    = storage.Get_Voltage_VREF0();
                double Voltage_VREF4095 = storage.Get_Voltage_VREF4095();
                double Vreg1_voltage    = Voltage_VREF4095 + ((Gamma_Voltage.double_G - Voltage_VREF4095) * (900.0 / (storage.Get_All_band_gray_Gamma(Set, (band - 1), gray).int_G + 389.0))); //just use HBM_Gamma[0], because other normal band copy G255 R/G/B From HBM

                vars.Vreg1       = Imported_my_cpp_dll.DP213_Get_Vreg1_Dec(Voltage_VREF4095, Voltage_VREF0, Vreg1_voltage);
                vars.Gamma.int_R = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Dec(Voltage_VREF4095, Vreg1_voltage, Gamma_Voltage.double_R);
                vars.Gamma.int_B = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Dec(Voltage_VREF4095, Vreg1_voltage, Gamma_Voltage.double_B);

                f1().GB_Status_AppendText_Nextline("After C++) R/G/B/Vreg1 = " + vars.Gamma.int_R.ToString() + "/" + vars.Gamma.int_G.ToString().ToString() + "/" + vars.Gamma.int_B.ToString() + "/" + vars.Vreg1, Color.Red);
                init_algorithm_storage_cpp.Set_All_band_gray_Gamma(Set, band, gray, vars.Gamma);

                return(true);
            }
            else
            {
                f1().GB_Status_AppendText_Nextline("Skip)Get_Initial_RVreg1B_Using_LUT_MCI()", Color.DarkRed);
                return(false);
            }
        }
示例#2
0
        protected bool Get_Initial_RGB_Using_LUT_MCI(Gamma_Set Set, int band, int gray, OC_Mode Mode)
        {
            if ((band >= 1) && (band <= DP213_Static.Max_HBM_and_Normal_Band_Amount) && (vars.Target.double_Lv > Algorism_Lower_Skip_LV) && (vars.Target.double_Lv < Algorism_Upper_Skip_LV))
            {
                RGB_Double Gray = DP213_Main_OC_Flow.init_gray_lut.Get_LUT_RGB(band, gray, Mode);

                RGB_Double Gamma_Voltage = new RGB_Double();
                Gamma_Voltage.double_R = InterpolationFomulaFactory.GetPrevBand_Red_Volatge(Gray.double_R);
                Gamma_Voltage.double_G = InterpolationFomulaFactory.GetPrevBand_Green_Volatge(Gray.double_G);
                Gamma_Voltage.double_B = InterpolationFomulaFactory.GetPrevBand_Blue_Volatge(Gray.double_B);


                f1().GB_Status_AppendText_Nextline("Before) R/G/B/Vreg1 = " + vars.Gamma.int_R.ToString() + "/" + vars.Gamma.int_G.ToString().ToString() + "/" + vars.Gamma.int_B.ToString() + "/" + vars.Vreg1, Color.Blue);

                if (gray == 0)
                {
                    double Voltage_VREF4095 = storage.Get_Voltage_VREF4095();
                    double Vreg1_Voltage    = storage.Get_Normal_Voltage_Vreg1(Set, band);

                    vars.Gamma.int_R = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Dec(Voltage_VREF4095, Vreg1_Voltage, Gamma_Voltage.double_R);
                    vars.Gamma.int_G = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Dec(Voltage_VREF4095, Vreg1_Voltage, Gamma_Voltage.double_G);
                    vars.Gamma.int_B = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Dec(Voltage_VREF4095, Vreg1_Voltage, Gamma_Voltage.double_B);
                }
                else
                {
                    RGB_Double AM1_Voltage = storage.Get_Band_Set_Voltage_AM1(Set, band);

                    RGB_Double Prvious_Gray_Gamma_Voltage;
                    if (gray == 4 || gray == 6 || gray == 8)
                    {
                        Prvious_Gray_Gamma_Voltage = storage.Get_Voltage_All_band_gray_Gamma(Set, band, (gray - 2));
                    }
                    else
                    {
                        Prvious_Gray_Gamma_Voltage = storage.Get_Voltage_All_band_gray_Gamma(Set, band, (gray - 1));
                    }

                    vars.Gamma.int_R = Imported_my_cpp_dll.DP213_Get_GR_Gamma_Dec(AM1_Voltage.double_R, Prvious_Gray_Gamma_Voltage.double_R, Gamma_Voltage.double_R, gray);
                    vars.Gamma.int_G = Imported_my_cpp_dll.DP213_Get_GR_Gamma_Dec(AM1_Voltage.double_G, Prvious_Gray_Gamma_Voltage.double_G, Gamma_Voltage.double_G, gray);
                    vars.Gamma.int_B = Imported_my_cpp_dll.DP213_Get_GR_Gamma_Dec(AM1_Voltage.double_B, Prvious_Gray_Gamma_Voltage.double_B, Gamma_Voltage.double_B, gray);
                }

                f1().GB_Status_AppendText_Nextline("After C++) R/G/B/Vreg1 = " + vars.Gamma.int_R.ToString() + "/" + vars.Gamma.int_G.ToString().ToString() + "/" + vars.Gamma.int_B.ToString() + "/" + vars.Vreg1, Color.Red);
                init_algorithm_storage_cpp.Set_All_band_gray_Gamma(Set, band, gray, vars.Gamma);
                return(true);
            }
            else
            {
                f1().GB_Status_AppendText_Nextline("Skip)Get_Initial_RGB_Using_LUT_MCI()", Color.DarkRed);
                return(false);
            }
        }