예제 #1
0
    private void Awake()
    {
        DontDestroyOnLoad(this);

        if (Instance != null && Instance != this)
        {
            Destroy(this.gameObject);
        }
        else
        {
            Instance = this;
        }
    }
예제 #2
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            double numValA = 0.5;

            DA.GetData(2, ref numValA);

            double numValB = 0.5;

            DA.GetData(3, ref numValB);

            int numValC = 1;

            DA.GetData(4, ref numValC);

            Filter filter = new Filter();

            int[] indices = new int[] { 2, 3, 4 };

            switch ((FilterModes)mode)
            {
            case FilterModes.Otsu:
                filter = new Otsu();
                ClearParameters(indices);
                image.Filters.Add(new Otsu());
                break;

            case FilterModes.SIS:
                filter = new SIS();
                ClearParameters(indices);
                image.Filters.Add(new SIS());
                break;

            case FilterModes.Bradley:
                SetParameter(2, "B", "Brightness", "Brightness difference limit");
                SetParameter(3, "S", "Size", "Window size");
                SetParameter(4);
                filter = new Bradley(numValA, (int)numValB);
                image.Filters.Add(new Bradley(numValA, (int)numValB));
                break;

            case FilterModes.Iterative:
                SetParameter(2, "M", "Minimum", "Minimum error value");
                SetParameter(3, "T", "Threshold", "Threshold value");
                SetParameter(4);
                filter = new Iterative(numValA, numValB);
                image.Filters.Add(new Iterative(numValA, numValB));
                break;

            case FilterModes.Nilback:
                SetParameter(2, "C", "C", "Mean offset C");
                SetParameter(3, "K", "K", "Parameter K");
                SetParameter(4, "R", "Radius", "Filter convolution radius");
                filter = new Nilback(numValA, numValB, numValC);
                image.Filters.Add(new Nilback(numValA, numValB, numValC));
                break;

            case FilterModes.Sauvola:
                SetParameter(2, "R", "R", "Dynamic range");
                SetParameter(3, "K", "K", "Parameter K");
                SetParameter(4, "R", "Radius", "Filter convolution radius");
                filter = new Sauvola(numValA, numValB, numValC);
                image.Filters.Add(new Sauvola(numValA, numValB, numValC));
                break;

            case FilterModes.WolfJolion:
                SetParameter(2, "R", "R", "Dynamic range");
                SetParameter(3, "K", "K", "Parameter K");
                SetParameter(4, "R", "Radius", "Filter convolution radius");
                filter = new WolfJolion(numValA, numValB, numValC);
                image.Filters.Add(new WolfJolion(numValA, numValB, numValC));
                break;
            }

            message = ((FilterModes)mode).ToString();
            UpdateMessage();

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }