Exemplo n.º 1
0
        public void GetPins(HObject ho_Intensity, out HObject ho_Pins, out HObject ho_IC)
        {
            // Local iconic variables

            HObject ho_Dark, ho_DarkDilation, ho_ICLarge;
            HObject ho_ICLargeGray, ho_ICDark, ho_ICDilation, ho_SearchSpace;
            HObject ho_SearchSpaceDilation, ho_SearchSpaceUnion, ho_SearchGray;
            HObject ho_SearchMean, ho_PinsRaw, ho_PinsConnect, ho_PinsFilled;

            // Initialize local and output iconic variables
            HOperatorSet.GenEmptyObj(out ho_Pins);
            HOperatorSet.GenEmptyObj(out ho_IC);
            HOperatorSet.GenEmptyObj(out ho_Dark);
            HOperatorSet.GenEmptyObj(out ho_DarkDilation);
            HOperatorSet.GenEmptyObj(out ho_ICLarge);
            HOperatorSet.GenEmptyObj(out ho_ICLargeGray);
            HOperatorSet.GenEmptyObj(out ho_ICDark);
            HOperatorSet.GenEmptyObj(out ho_ICDilation);
            HOperatorSet.GenEmptyObj(out ho_SearchSpace);
            HOperatorSet.GenEmptyObj(out ho_SearchSpaceDilation);
            HOperatorSet.GenEmptyObj(out ho_SearchSpaceUnion);
            HOperatorSet.GenEmptyObj(out ho_SearchGray);
            HOperatorSet.GenEmptyObj(out ho_SearchMean);
            HOperatorSet.GenEmptyObj(out ho_PinsRaw);
            HOperatorSet.GenEmptyObj(out ho_PinsConnect);
            HOperatorSet.GenEmptyObj(out ho_PinsFilled);
            ho_Dark.Dispose();
            HOperatorSet.Threshold(ho_Intensity, out ho_Dark, 0, 50);
            ho_DarkDilation.Dispose();
            HOperatorSet.DilationRectangle1(ho_Dark, out ho_DarkDilation, 14, 14);
            ho_ICLarge.Dispose();
            HOperatorSet.Connection(ho_DarkDilation, out ho_ICLarge);
            ho_ICLargeGray.Dispose();
            HOperatorSet.AddChannels(ho_ICLarge, ho_Intensity, out ho_ICLargeGray);
            ho_ICDark.Dispose();
            HOperatorSet.Threshold(ho_ICLargeGray, out ho_ICDark, 0, 50);
            ho_IC.Dispose();
            HOperatorSet.ShapeTrans(ho_ICDark, out ho_IC, "rectangle2");
            ho_ICDilation.Dispose();
            HOperatorSet.DilationRectangle1(ho_IC, out ho_ICDilation, 5, 1);
            ho_SearchSpace.Dispose();
            HOperatorSet.Difference(ho_ICDilation, ho_IC, out ho_SearchSpace);
            ho_SearchSpaceDilation.Dispose();
            HOperatorSet.DilationRectangle1(ho_SearchSpace, out ho_SearchSpaceDilation, 14,
                                            1);
            ho_SearchSpaceUnion.Dispose();
            HOperatorSet.Union1(ho_SearchSpaceDilation, out ho_SearchSpaceUnion);
            ho_SearchGray.Dispose();
            HOperatorSet.ReduceDomain(ho_Intensity, ho_SearchSpaceUnion, out ho_SearchGray
                                      );
            ho_SearchMean.Dispose();
            HOperatorSet.MeanImage(ho_SearchGray, out ho_SearchMean, 15, 15);
            ho_PinsRaw.Dispose();
            HOperatorSet.DynThreshold(ho_SearchGray, ho_SearchMean, out ho_PinsRaw, 5, "light");
            ho_PinsConnect.Dispose();
            HOperatorSet.Connection(ho_PinsRaw, out ho_PinsConnect);
            ho_PinsFilled.Dispose();
            HOperatorSet.FillUp(ho_PinsConnect, out ho_PinsFilled);
            ho_Pins.Dispose();
            HOperatorSet.SelectShape(ho_PinsFilled, out ho_Pins, "area", "and", 10, 100);
            ho_Dark.Dispose();
            ho_DarkDilation.Dispose();
            ho_ICLarge.Dispose();
            ho_ICLargeGray.Dispose();
            ho_ICDark.Dispose();
            ho_ICDilation.Dispose();
            ho_SearchSpace.Dispose();
            ho_SearchSpaceDilation.Dispose();
            ho_SearchSpaceUnion.Dispose();
            ho_SearchGray.Dispose();
            ho_SearchMean.Dispose();
            ho_PinsRaw.Dispose();
            ho_PinsConnect.Dispose();
            ho_PinsFilled.Dispose();

            return;
        }