示例#1
0
        public void Reset()
        {
            ResultOfAIDI = new ResultOfAIDI(null);
            Region       = new ShapeOf2D();

            return;
        }
示例#2
0
        private void FormRefresh(bool isAutoFit)
        {
            this.aqDisplay1.InteractiveGraphics.Clear();
            if (null != _producer.ImageIn)
            {
                this.aqDisplay1.Image = _producer.ImageIn.Clone() as Bitmap;
                if (_producer.IsDisplay)
                {
                    for (int index = 0; index < _device.TaskSize; ++index)
                    {
                        ShapeOf2D.ConvertRectToShapeOf2D(Rectangle.Truncate(_device.Roi[index]), out var shapeOf2D);
                        DisplayContour.GetContours(shapeOf2D.XldPointYs, shapeOf2D.XldPointXs, shapeOf2D.XldPointsNums, out var contours, _aqColor[index], 2);
                        DisplayContour.Display(this.aqDisplay1, contours);
                    }
                }
            }

            if (isAutoFit)
            {
                this.aqDisplay1.FitToScreen();
            }
            this.aqDisplay1.Update();

            return;
        }
        private void RefreshDisplayShape()
        {
            ShapeOf2D result = new ShapeOf2D();

            if (IsDisplayOfDefect)
            {
                result += ProductManager.DefectParam.Region;
            }
            if (IsDisplayOfBadConnection)
            {
                result += ProductManager.BadConnectionParam.Region;
            }
            if (IsDisplayOfOverage)
            {
                result += ProductManager.OverageParam.Region;
            }
            if (IsDisplayOfOffset)
            {
                result += ProductManager.OffsetParam.Region;
                //
                ShapeOf2D.ConverPoint2DToCross(ProductManager.OffsetParam.CurrPoint, 3, out var currPoint);
                result += currPoint;
                ShapeOf2D.ConverPoint2DToCross(ProductManager.OffsetParam.StandardPoint, 5, out var standardPoint);
                result += standardPoint;
            }
            if (IsDisplayOfTip)
            {
                result += ProductManager.TipParam.Region;
            }

            DisplayContour.GetContours(result.XldPointYs, result.XldPointXs, result.XldPointsNums, out var _displayShapes, AqVision.Graphic.AqColorEnum.Red, 2);
            DisplayShapes = _displayShapes;

            return;
        }
示例#4
0
        public void CalculateRegion()
        {
            Region = new ShapeOf2D();
            if (null != ResultOfAIDI.ResultDetailOfAIDI && 0 != ResultOfAIDI.ResultDetailOfAIDI.Count)
            {
                foreach (var aidiResult in ResultOfAIDI.ResultDetailOfAIDI.GetRange(ResultOfAIDI.ResultDetailOfAIDI.Count - 1, 1))
                {
                    CurrX = aidiResult.CenterX;
                    CurrY = aidiResult.CenterY;
                    //if (!IsInRange(new PointF((float)aidiResult.CenterX, (float)aidiResult.CenterY)))
                    //{
                    //    Region += aidiResult.Region;
                    //}
                    if (!IsInRange())
                    {
                        Region += aidiResult.Region;
                    }
                }
            }
            else
            {
                MessageManager.Instance().Info("Offset.CalculateRegion(): received no data.");
            }

            return;
        }
        public void CalculateRegion()
        {
            int       numOfTiny    = 0;
            int       numOfObv     = 0;
            ShapeOf2D regionOfTiny = new ShapeOf2D();
            ShapeOf2D regionOfObv  = new ShapeOf2D();

            // clear region
            Region = new ShapeOf2D();
            // filter
            CurrTinyArea = double.MaxValue;
            CurrObvArea  = double.MinValue;

            if (null != ResultOfAIDI.ResultDetailOfAIDI && 0 != ResultOfAIDI.ResultDetailOfAIDI.Count)
            {
                // reverse ResultOfAIDI.ResultDetailOfAIDI maybe better
                ResultOfAIDI.ResultDetailOfAIDI.Reverse();
                // filter
                foreach (var aidiResult in ResultOfAIDI.ResultDetailOfAIDI)
                {
                    CurrTinyArea = aidiResult.Area < CurrTinyArea ? aidiResult.Area : CurrTinyArea;
                    CurrObvArea  = aidiResult.Area > CurrObvArea ? aidiResult.Area : CurrObvArea;

                    if (aidiResult.Area >= TinyAreaFilter)
                    {
                        ++numOfTiny;
                        regionOfTiny += aidiResult.Region;

                        if (aidiResult.Area >= ObvAreaFilter)
                        {
                            ++numOfObv;
                            regionOfObv += aidiResult.Region;
                        }
                    }
                    else
                    {
                        break;
                    }
                }

                // judge
                if (numOfTiny >= TinyNumFilter)
                {
                    Region += regionOfTiny;
                }
                if (numOfObv >= ObvNumFilter)
                {
                    Region += regionOfObv;
                }
            }
            else
            {
                MessageManager.Instance().Info("Defect.CalculateRegion(): received no data.");
            }

            return;
        }
        private void InitializeRawRegion()
        {
            RawRegion = new ShapeOf2D();
            foreach (var temp in ResultDetailOfAIDI)
            {
                RawRegion += temp.Region;
            }

            return;
        }
示例#7
0
        public void CalculateRegion()
        {
            Region = new ShapeOf2D();
            if (null != ResultOfAIDI.ResultDetailOfAIDI && Number <= ResultOfAIDI.ResultDetailOfAIDI.Count && TryGetXOfAIDIResult())
            {
                foreach (var aidiResult in ResultOfAIDI.ResultDetailOfAIDI.GetRange(ResultOfAIDI.ResultDetailOfAIDI.Count - 2, 2))
                {
                    if (_xOfAIDIResult[0] == aidiResult.CenterX)
                    {
                        // left
                        CurrAreaOfLeft = aidiResult.Area;
                        if (aidiResult.Area >= AreaOfLeftFilter)
                        {
                            Region += aidiResult.Region;
                        }
                    }
                    else if (_xOfAIDIResult[1] == aidiResult.CenterX)
                    {
                        // right
                        CurrAreaOfRight = aidiResult.Area;
                        if (aidiResult.Area >= AreaOfRightFilter)
                        {
                            Region += aidiResult.Region;
                        }
                    }
                    else if (3 == Number && _xOfAIDIResult[2] == aidiResult.CenterX)
                    {
                        // right1
                        CurrAreaOfRight1 = aidiResult.Area;
                        if (aidiResult.Area >= AreaOfRightFilter1)
                        {
                            Region += aidiResult.Region;
                        }
                    }
                }
            }
            else
            {
                foreach (var aidiResult in ResultOfAIDI.ResultDetailOfAIDI)
                {
                    Region += aidiResult.Region;
                }
                MessageManager.Instance().Info("Overage.CalculateRegion(): received no data or less than expected.");
            }

            return;
        }
示例#8
0
        public void Run()
        {
            if (null != ImageIn)
            {
                MessageManager.Instance().Info("++++++Producer.Run(): begin.");
                lock (TaskPool.PAD_LOCK)
                {
                    _device.TryPushImages(ImageIn);
                }
                MessageManager.Instance().Info("++++++Producer.Run(): end.");

                DisplayShapes = new List <AqShap>();
                if (IsDisplay)
                {
                    List <double> y   = new List <double>();
                    List <double> x   = new List <double>();
                    List <int>    num = new List <int>();
                    for (int index = 0; index < _device.TaskSize; ++index)
                    {
                        ShapeOf2D.ConvertRectToShapeOf2D(Rectangle.Truncate(_device.Roi[index]), out var shapeOf2D);
                        y.AddRange(shapeOf2D.XldPointYs);
                        x.AddRange(shapeOf2D.XldPointXs);
                        num.AddRange(shapeOf2D.XldPointsNums);
                    }
                    DisplayContour.GetContours(y, x, num, out var contours, AqVision.Graphic.AqColorEnum.Yellow, 2);
                    DisplayShapes = contours;

                    IsUpdate = true;
                }
                else
                {
                    IsUpdate = false;
                }

                IsResultOK = true;
            }

            return;
        }
示例#9
0
        private void FormRefresh(bool isAutoFit)
        {
            this.aqDisplay1.InteractiveGraphics.Clear();
            if (null != _detector.ImageIn)
            {
                this.aqDisplay1.Image = _detector.ImageIn.Clone() as Bitmap;
                if (_detector.IsDisplay)
                {
                    //
                    if (_detector.IsDisplayOfDefect)
                    {
                        if (null != _detector.ProductManager.DefectParam.Region && 0 != _detector.ProductManager.DefectParam.Region.XldPointsNums.Count)
                        {
                            var temp = _detector.ProductManager.DefectParam.Region;
                            DisplayContour.GetContours(temp.XldPointYs, temp.XldPointXs, temp.XldPointsNums, out var shape, AqVision.Graphic.AqColorEnum.Green, 2);
                            DisplayContour.Display(this.aqDisplay1, shape);
                        }
                    }
                    //
                    if (_detector.IsDisplayOfBadConnection)
                    {
                        if (null != _detector.ProductManager.BadConnectionParam.Region && 0 != _detector.ProductManager.BadConnectionParam.Region.XldPointsNums.Count)
                        {
                            var temp = _detector.ProductManager.BadConnectionParam.Region;
                            DisplayContour.GetContours(temp.XldPointYs, temp.XldPointXs, temp.XldPointsNums, out var shape, AqVision.Graphic.AqColorEnum.Red, 2);
                            DisplayContour.Display(this.aqDisplay1, shape);
                        }
                    }
                    //
                    if (_detector.IsDisplayOfOverage)
                    {
                        if (null != _detector.ProductManager.OverageParam.Region && 0 != _detector.ProductManager.OverageParam.Region.XldPointsNums.Count)
                        {
                            var temp = _detector.ProductManager.OverageParam.Region;
                            DisplayContour.GetContours(temp.XldPointYs, temp.XldPointXs, temp.XldPointsNums, out var shape, AqVision.Graphic.AqColorEnum.Blue, 2);
                            DisplayContour.Display(this.aqDisplay1, shape);
                        }
                    }
                    //
                    if (_detector.IsDisplayOfOffset)
                    {
                        if (null != _detector.ProductManager.OffsetParam.Region && 0 != _detector.ProductManager.OffsetParam.Region.XldPointsNums.Count)
                        {
                            var temp = _detector.ProductManager.OffsetParam.Region;
                            DisplayContour.GetContours(temp.XldPointYs, temp.XldPointXs, temp.XldPointsNums, out var shape, AqVision.Graphic.AqColorEnum.Yellow, 2);
                            DisplayContour.Display(this.aqDisplay1, shape);
                        }
                        //
                        ShapeOf2D.ConverPoint2DToCross(_detector.ProductManager.OffsetParam.StandardPoint, 3, out var standardPoint);
                        DisplayContour.GetContours(standardPoint.XldPointYs, standardPoint.XldPointXs, standardPoint.XldPointsNums, out var shapeOfStandardPoint, AqVision.Graphic.AqColorEnum.Yellow, 4);
                        DisplayContour.Display(this.aqDisplay1, shapeOfStandardPoint);
                        //
                        ShapeOf2D.ConverPoint2DToCross(_detector.ProductManager.OffsetParam.CurrPoint, 3, out var currPoint);
                        DisplayContour.GetContours(currPoint.XldPointYs, currPoint.XldPointXs, currPoint.XldPointsNums, out var shapeOfCurrPoint, AqVision.Graphic.AqColorEnum.Yellow, 2);
                        DisplayContour.Display(this.aqDisplay1, shapeOfCurrPoint);
                    }
                    //
                    if (_detector.IsDisplayOfTip)
                    {
                        if (null != _detector.ProductManager.TipParam.Region && 0 != _detector.ProductManager.TipParam.Region.XldPointsNums.Count)
                        {
                            var temp = _detector.ProductManager.TipParam.Region;
                            DisplayContour.GetContours(temp.XldPointYs, temp.XldPointXs, temp.XldPointsNums, out var shape, AqVision.Graphic.AqColorEnum.Orange, 2);
                            DisplayContour.Display(this.aqDisplay1, shape);
                        }
                    }
                }
            }
            if (isAutoFit)
            {
                this.aqDisplay1.FitToScreen();
            }
            this.aqDisplay1.Update();

            return;
        }
 private ResultOfAIDI()
 {
     ResultDetailOfAIDI = new List <ShapeOfAIDI>();
     RawRegion          = new ShapeOf2D();
 }