Beispiel #1
0
        private void MoravecCornerDetection()
        {
            swMoravec.Reset();             // Used for timing functions. (good for testing changes in optimisation)
            swMoravec.Start();
            MoravecCornerProperties mp = ControlPanel.Controls[0] as MoravecCornerProperties;

            processing = new FrmProcessing("Conducting Moravec Corner Detection");
            processing.Show();
            Log("Conducting Moravec Corner Detection");
            SetStatus("Please wait for corner detection");
            Moravec m = new Moravec(CurrentImage);

            m.ImageComplete += m_ImageComplete;
            m.LogMessage    += m_LogMessage;
            Task mt = new Task(() => m.GetCorners(mp.Threshold, mp.Window));

            mt.Start();
        }
Beispiel #2
0
        private void MoravecCornerDetection()
        {
            swMoravec.Reset(); // Used for timing functions. (good for testing changes in optimisation)
            swMoravec.Start();


            if (ModificationPropertiesLog != null)
            {
                ModificationPropertiesLog("Conducting Moravec Corner Detection");
            }

            Moravec m = new Moravec(CurrentImage);

            m.ImageComplete += m_ImageComplete;
            m.LogMessage    += m_LogMessage;
            Task mt = new Task(() => m.GetCorners(mp.Threshold, mp.Window));

            mt.Start();
        }
        private void btnProcess_Click(object sender, EventArgs e)
        {
            switch (lbMethods.SelectedIndex)
            {
            case (int)Methods.none:
                break;

            case (int)Methods.Susan:
                ssw = new Stopwatch();                         // Used for timing functions. (good for testing changes in optimisation)
                SusanCornerProperties sp = ControlPanel.Controls[0] as SusanCornerProperties;
                processing = new FrmProcessing("Conducting Susan Corner Detection");
                processing.Show();
                Log("Conducting Susan Corner Detection");
                SetStatus("Please wait for corner detection");
                Susan s = new Susan(CurrentImage);
                s.ImageComplete += s_ImageComplete;
                Task st = new Task(() => s.GetCorners(sp.DifferenceThreshold, sp.GeometricalThreshold));
                ssw.Start();
                st.Start();
                break;

            case (int)Methods.Moravec:
                smw = new Stopwatch();                         // Used for timing functions. (good for testing changes in optimisation)
                MoravecCornerProperties mp = ControlPanel.Controls[0] as MoravecCornerProperties;
                processing = new FrmProcessing("Conducting Moravec Corner Detection");
                processing.Show();
                Log("Conducting Moravec Corner Detection");
                SetStatus("Please wait for corner detection");
                Moravec m = new Moravec(CurrentImage);
                m.ImageComplete += m_ImageComplete;
                m.LogMessage    += m_LogMessage;
                Task mt = new Task(() => m.GetCorners(mp.Threshold, mp.Window));
                smw.Start();
                mt.Start();
                break;

            default:
                break;
            }
        }
        private void FindPointButton_Click(object sender, EventArgs e)
        {
            if (RB_DoMoravec.Checked == true)
            {
                double minValue     = Convert.ToDouble(textBox1.Text);
                int    windowSize   = Convert.ToInt32(textBox2.Text);
                int    shiftSize    = Convert.ToInt32(textBox3.Text);
                int    locMaxRadius = Convert.ToInt32(textBox4.Text);

                List <InterestingPoint> MoravecMatrix = Moravec.DoMoravec(minValue, windowSize, shiftSize, locMaxRadius, _image);

                if (filter_checkBox.Checked == true)
                {
                    int maxCountPoints = Convert.ToInt32(textBox7.Text);
                    List <InterestingPoint> subList = NonMaximumSuppression.FilterA(_image, MoravecMatrix, maxCountPoints); // Фильтр точек
                    label9.Text  = "Найдено интересных точек: " + MoravecMatrix.Count;
                    label10.Text = "Отображенно интересных точек: " + subList.Count;
                    DrawPoints(subList);
                }
                else
                {
                    label10.Text = "Отображенно интересных точек: " + MoravecMatrix.Count;
                    label9.Text  = "Найдено интересных точек: " + MoravecMatrix.Count;
                    DrawPoints(MoravecMatrix);
                }
            }

            if (RB_DoHarris.Checked == true)
            {
                double minValue   = Convert.ToDouble(textBox5.Text);
                int    windowSize = Convert.ToInt32(textBox6.Text);
                List <InterestingPoint> HarrisMatrix = Harris.DoHarris(minValue, windowSize, _image);

                ///////////
                #region Отклик кнопок
                if (checkBox2.Checked == true)
                {
                    List <InterestingPoint> SubHarrisMatrix = Harris.DoHarris(minValue, windowSize, _image);
                    label9.Text = "Найдено откликов: " + SubHarrisMatrix.Count;
                    DrawMap(SubHarrisMatrix, _image);
                }
                else
                if (checkBox1.Checked == true)
                {
                    List <InterestingPoint> SubHarrisMatrix = Harris.DoHarris(minValue, windowSize, _image);
                    DrawMap(SubHarrisMatrix, _image);
                    label9.Text = "Найдено локальных максимумов: " + SubHarrisMatrix.Count;
                }

                else if (filter_checkBox.Checked == true)
                {
                    int maxCountPoints = Convert.ToInt32(textBox7.Text);
                    List <InterestingPoint> subList = NonMaximumSuppression.FilterB(
                        HarrisMatrix,
                        maxCountPoints
                        ); // Фильтр точек
                    DrawPoints(subList);
                    label9.Text  = "Найдено интересных точек: " + HarrisMatrix.Count;
                    label10.Text = "Отображенно интересных точек: " + subList.Count;
                }
                else
                {
                    label10.Text = "Отображенно интересных точек: " + HarrisMatrix.Count;
                    label9.Text  = "Найдено интересных точек: " + HarrisMatrix.Count;
                    DrawPoints(HarrisMatrix);
                }

                #endregion
            }
        }