예제 #1
0
        public void rowProfile(Bitmap bm)
        {
            Image <Bgr, byte> im = new Image <Bgr, byte>(bm);

            // To initialize data array
            imageMetrics = new ImageMetricsInfo();
            int[] data = { 0, 0, 0, 0, 0, 0, 0, 0 };

            ImageMetrics_Calculate(im.Ptr, ref imageMetrics, data, Globals.isIlluminationGrid);
            im.Dispose();

            double cv = Math.Round(imageMetrics.topToBottomVariation + 0.005, 2);
            double peripheryToInnerImageRatio = imageMetrics.peripheryToInnerVariation + 0.005;

            peripheryToInnerImageRatio = (Math.Round(peripheryToInnerImageRatio, 2));
            //if (bm.Width == Globals.IRWidth)
            if (!Globals.isHighResolution)
            {
                Globals.currentSettings.imageMetrics.Periphery_To_Inner_IR_Light_Intensity_Variation = peripheryToInnerImageRatio;
                Globals.currentSettings.imageMetrics.Top_To_Bottom_IR_Light_Intensity_Variation      = cv;

                if (peripheryToInnerImageRatio >= 0.81)
                {
                    Globals.currentSettings.imageMetrics.peripheryToInnerIntensityVarLabelColor_IR = Color.Green;
                }
                else
                {
                    Globals.currentSettings.imageMetrics.peripheryToInnerIntensityVarLabelColor_IR = Color.FromArgb(254, 0, 0);
                }

                if (cv <= 0.25)
                {
                    Globals.currentSettings.imageMetrics.topToBottomIntensityVarLabelColor_IR = Color.Green;
                }
                else
                {
                    Globals.currentSettings.imageMetrics.topToBottomIntensityVarLabelColor_IR = Color.FromArgb(254, 0, 0);
                }
            }
            else
            {
                Globals.currentSettings.imageMetrics.Periphery_To_Inner_White_Light_Intensity_Variation = peripheryToInnerImageRatio;
                Globals.currentSettings.imageMetrics.Top_To_Bottom_White_Light_Intensity_Variation      = cv;

                if (peripheryToInnerImageRatio >= 0.81)
                {
                    Globals.currentSettings.imageMetrics.peripheryToInnerIntensityVarLabelColor_WL = Color.Green;
                }
                else
                {
                    Globals.currentSettings.imageMetrics.peripheryToInnerIntensityVarLabelColor_WL = Color.FromArgb(254, 0, 0);
                }

                if (cv <= 0.25)
                {
                    Globals.currentSettings.imageMetrics.topToBottomIntensityVarLabelColor_WL = Color.Green;
                }
                else
                {
                    Globals.currentSettings.imageMetrics.topToBottomIntensityVarLabelColor_WL = Color.FromArgb(254, 0, 0);
                }
            }

            //Update sector intensities values (8 sectors) from image metrics to Globals
            if (Globals.isIlluminationGrid)
            {
                Globals.currentSettings.imageMetrics.firstValue   = data[0];
                Globals.currentSettings.imageMetrics.secondValue  = data[1];
                Globals.currentSettings.imageMetrics.thirdValue   = data[2];
                Globals.currentSettings.imageMetrics.fourthValue  = data[3];
                Globals.currentSettings.imageMetrics.fifthValue   = data[4];
                Globals.currentSettings.imageMetrics.sixthValue   = data[5];
                Globals.currentSettings.imageMetrics.seventhValue = data[6];
                Globals.currentSettings.imageMetrics.eighthValue  = data[7];
            }
        }
예제 #2
0
 unsafe public extern static void ImageMetrics_Calculate(IntPtr srcImg, ref ImageMetricsInfo imageMetrics, int[] data, bool isSectorCalc);