Esempio n. 1
0
        private void LoadImage_Click(object sender, EventArgs e)
        {
            OpenFileDialog OFD = new OpenFileDialog();

            OFD.Title  = "Please Choose Image To Applay Filters";
            OFD.Filter = "Images|*.png;*.jpg;*.jpeg";
            button1.PerformClick();
            if (OFD.ShowDialog() == DialogResult.OK)
            {
                ImagePath_txt.Text = OFD.FileName;
                ImageControl.SetImageLocation(OFD.FileName, true);
                // Adding The Picture Box To The panel
                PictureBox WantToAdded = CreateNewPictureBox();
                WantToAdded.Image = ImageControl.GetMainImage();
                ///////////
                Prevoius_Images.Items.Add(OFD.FileName);
            }
            else
            {
                MessageBox.Show("Select A Vaild Image", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        public override void ApplayObjectDetection(_Image ApplayImage)
        {
            _Image XsobelImage = new _Image();

            XsobelImage.SetImageLocation(ApplayImage.ImageLocation, true);
            // Applaying x-Sobel Opreator
            X_Sobel xsolbel = new X_Sobel();

            xsolbel.ApplayFilter(XsobelImage);



            _Image YsobelImage = new _Image();

            YsobelImage.SetImageLocation(ApplayImage.ImageLocation, true);
            // Applaying Y-sobel Opreator
            Y_Sobel ysobel = new Y_Sobel();

            ysobel.ApplayFilter(YsobelImage);


            double[,] XsolbelArray = SquerBitmap(XsobelImage.GetFilterdImageBitMap());
            double[,] YsolbelArray = SquerBitmap(YsobelImage.GetFilterdImageBitMap());


            YsobelImage.ReplaceMainImageWithiltedImage();
            XsobelImage.ReplaceMainImageWithiltedImage();


            // Get The Multipication OF 2 Image
            string Message    = "";
            Bitmap MultBitMap = HelperFunctions.MultibleTwoImage(XsobelImage.GetFilterdImageBitMap(), YsobelImage.GetFilterdImageBitMap(), out Message);
            _Image MultiImage = new _Image();

            MultiImage.SetFilterdBitMap(ref MultBitMap);
            MultiImage.ReplaceMainImageWithiltedImage();

            // Applay Gaussian Filter
            GaussianFilter NewFilter = new GaussianFilter();

            NewFilter.Sigma      = 2;
            NewFilter.KernalSize = 7;
            NewFilter.ApplayFilter(XsobelImage);
            NewFilter.ApplayFilter(YsobelImage);
            NewFilter.ApplayFilter(MultiImage);


            Bitmap SobelXBitMap = XsobelImage.GetFilterdImageBitMap();
            Bitmap SobelyBitMap = YsobelImage.GetFilterdImageBitMap();

            MainImage   = ApplayImage.GetMainImage();
            ImageBitMap = new Bitmap(MainImage);
            int imageWidth = ApplayImage.ImageWidth, ImageHieght = ApplayImage.ImageHeight;

            double[,] Result = new double[ImageHieght, imageWidth];
            double[,] R      = new double[ImageHieght, imageWidth];
            double Rmax = double.MinValue;

            for (int i = 0; i < ImageHieght; i++)
            {
                for (int j = 0; j < imageWidth; j++)
                {
                    double det   = (SobelXBitMap.GetPixel(i, j).R *SobelyBitMap.GetPixel(i, j).R) - (MultBitMap.GetPixel(i, j).R *MultBitMap.GetPixel(i, j).R);
                    double trace = (SobelXBitMap.GetPixel(i, j).R + SobelyBitMap.GetPixel(i, j).R);

                    R[i, j] = det - (trace * trace / 100);

                    if (R[i, j] > Rmax)
                    {
                        Rmax = R[i, j];
                    }

                    //int RGB = (int)R[i, j];
                    //ImageBitMap.SetPixel(i, j, Color.FromArgb(RGB , RGB , RGB));
                }
            }
            int count = 0;

            for (int i = 2; i < ImageHieght - 1; i++)
            {
                for (int j = 2; j < imageWidth - 1; j++)
                {
                    if ((R[i, j] > Rmax / 10) && (R[i, j] > R[i - 1, j - 1]) && (R[i, j] > R[i - 1, j]) && (R[i, j] > R[i - 1, j + 1]) && (R[i, j] > R[i, j - 1]) && (R[i, j] > R[i, j + 1]) && (R[i, j] > R[i + 1, j - 1]) && (R[i, j] > R[i + 1, j]) && (R[i, j] > R[i + 1, j + 1]))
                    {
                        ImageBitMap.SetPixel(i, j, Color.Red);
                        count++;
                    }

                    //if (R[i, j] > 0.1 * Rmax && R[i, j] > R[i - 1, j - 1] && R[i, j] > R[i - 1, j] && R[i, j] > R[i - 1, j + 1] && R[i, j] > R[i, j - 1] && R[i, j] > R[i, j + 1] && R[i, j] > R[i + 1, j - 1] && R[i, j] > R[i + 1, j] && R[i, j] > R[i + 1, j + 1])
                    //{
                    //    //Result[i, j] = 1;
                    //    ImageBitMap.SetPixel(i, j, Color.Red);
                    //    count++;
                    //}
                }
            }
            Console.WriteLine(count);
            ApplayImage.SetFilterdBitMap(ref ImageBitMap);
        }