Exemple #1
0
        public static void Analyze(System.ComponentModel.BackgroundWorker worker)
        {
            int i = 0;
            foreach (string file in Directory.GetFiles("C:\\Users\\Forpatril\\Documents\\Visual Studio 2010\\Projects\\Diploma_cs\\Images", "*.jpg"))
            {
                Image img = new Image(file);
                for (int w = 2; w < 35; w++)
                    for (int sig = 1; sig < w / 2; sig++)
                    {
                        filterclass fc = new filterclass();
                        Noise n = new Noise();
                        Image img_n = n.addNoise("gaussian", img, 0, 0.055);
                        double[] p = new double[] {w, sig, 0.2};
                        MWNumericArray parameters = new MWNumericArray(p);
                        MWLogicalArray mw_print = new MWLogicalArray(Form1.print);
                        MWArray[] Result = fc.filter2(2, img_n.image, "bilateral", parameters, mw_print);
                        MWNumericArray descriptor = null;
                        descriptor = (MWNumericArray)Result[0];
                        double[,] result = null;
                        result = (double[,])descriptor.ToArray(MWArrayComponent.Real);
                        Image ret = new Image(result);
                        MWNumericArray e_descriptor = null;
                        e_descriptor = (MWNumericArray)Result[1];
                        ret.Time = (double)e_descriptor.ToScalarDouble();

                        filterDataContext db = new filterDataContext();
                        psnrClass ps = new psnrClass();
                        double psnr = (double)((MWNumericArray)ps.psnr(ret.image, img.image)).ToScalarDouble();
                        db.add_line("bilateral", "gaussian", img.Height, img.Width, ret.Time, psnr, p[0], p[1], p[2]);


                        Result = null;
                        e_descriptor = null;
                        result = null;
                        parameters = null;
                        img_n = null;
                        n = null;
                        descriptor = null;
                        ret = null;
                        ps = null;
                        fc = null;
                        GC.Collect();
                    }
                worker.ReportProgress(i++);
                img = null;
                GC.Collect();
            }
        }
Exemple #2
0
 public static void Fill(string path, int id, System.ComponentModel.BackgroundWorker worker)
 {
     int i = 0;
     foreach (string file in Directory.GetFiles(path, "*.jpg"))
     {
         filterDataContext db = new filterDataContext();
         Image img = new Image(file);
         Noise n = new Noise();
         img = n.addNoise("gaussian", img, 0, 0.055);
         RunFilter rf = new RunFilter();
         Image ret = rf.Do(img, id);
         psnrClass ps = new psnrClass();
         double psnr = (double)((MWNumericArray)ps.psnr(ret.image, img.image)).ToScalarDouble();
         db.add_line(Filters.type[id],"gaussian",img.Height,img.Width,ret.Time,psnr,Form1.pars.par[id][0],Form1.pars.par[id][1],Form1.pars.par[id][2]);
         worker.ReportProgress(i++);
     }
 }
Exemple #3
0
        /*
        private Bitmap getImage(double[,] image)
        {
            int w = image.GetLength(1);
            int h = image.GetLength(0);
            Bitmap r_image = new Bitmap(w, h);
            for (int i = 0; i < h; i++)
            {
                for (int j = 0; j < w; j++)
                {
                    byte pixel = (byte)(image[i, j] * 255);
                    Color color = Color.FromArgb(255, pixel, pixel, pixel);
                    r_image.SetPixel(j, i, color);
                }
            }
            return r_image;
        }

        private Bitmap getImage(double[, ,] image)
        {
            int w = image.GetLength(2);
            int h = image.GetLength(1);
            Bitmap r_image = new Bitmap(w, h);
            for (int i = 0; i < h; i++)
            {
                for (int j = 0; j < w; j++)
                {
                    byte r = (byte)(image[0, i, j] * 255);
                    byte g = (byte)(image[1, i, j] * 255);
                    byte b = (byte)(image[2, i, j] * 255);
                    Color color = Color.FromArgb(255, r, g, b);
                    r_image.SetPixel(j, i, color);
                }
            }
            return r_image;
        }
        */

        private void button3_Click(object sender, EventArgs e)
        {
            B b = new B();
            Noise n = new Noise();
            Image res = n.addNoise("gaussian", image, 0, 0.055);
            pictureBox1.Image = res.Bitmap;
            Application.DoEvents();
            res = b.RunFilter(res);

            //Bilateral Bilateral = new Bilateral();
            //double[] sigma = new double[] {3, 0.1};
            //double w = 5;
            //MWNumericArray mw_sigma = new MWNumericArray(sigma);
            //Stopwatch stopwatch = new Stopwatch();
            //stopwatch.Start();
            ////MWArray Result = Bilateral.bfilter2(image, w, mw_sigma);
            //MWArray[] Result = Bilateral.bfilter2(2, image, w, mw_sigma);
            //stopwatch.Stop();
            //MWNumericArray descriptor = null;
            //descriptor = (MWNumericArray)Result[0];
            //MWNumericArray e_descriptor = null;
            //e_descriptor = (MWNumericArray)Result[1];
            //double Elapsed = (double)e_descriptor.ToScalarDouble();
            //Bitmap Image;
            //if (!isColor)
            //{
            //    double[,] d_descriptor = (double[,])descriptor.ToArray(MWArrayComponent.Real);
            //    Image = getImage(d_descriptor);
            //}
            //else
            //{
            //    double[,,] d_descriptor = (double[, ,])descriptor.ToArray(MWArrayComponent.Real);
            //    Image = getImage(d_descriptor);
            //}
            //pictureBox1.Size.Height = res.Height;
            //pictureBox1.Size.Width = res.Width;

            pictureBox1.Image = res.Bitmap;
            //label1.Text = stopwatch.Elapsed.ToString();
            //label2.Text = Elapsed.ToString();
            filterDataContext db = new filterDataContext();
            label1.Text = b.WorkTime.ToString();
            db.add_b_res(res.Height, res.Height / res.Width, b.WorkTime, 5, 3, 0.1);
            //isColor = false;
            b = null;
            n = null;
            res = null;
            GC.Collect();
        }