private void DirectionToFile_Click(object sender, RoutedEventArgs e)
        {
            if (_currentImage == null)
            {
                return;
            }

            Stopwatch performanceCounter = new Stopwatch();

            performanceCounter.Start();

            CanvasARGB  canvas      = Get_ProgressOrOrigInput();
            CanvasPixel canvasPixel = CanvasPixel.CreateBitmpaFromCanvas(canvas);

            CanvasEdgeVO canvasEdges = CanvasEdgeVO.CreateEdgesFromCanvas(canvasPixel);

            EdgeDetector.EdgeReducer(canvasEdges, 255);

            EdgesWriteToFile(canvasEdges, "directions3.txt");

            CanvasPixel evisualise = VisualiseDetectedEdges(canvasEdges);

            _lastImage = CanvasPixel.CreateBitmpaFromCanvas(evisualise);



            performanceCounter.Stop();

            Helper_SetAppTitle(string.Format("{0,000} s ", performanceCounter.Elapsed.TotalSeconds));

            ShowImage(false);
        }
        private void MenuSave_Click(object sender, RoutedEventArgs e)
        {
            var ofd = new Microsoft.Win32.SaveFileDialog()
            {
                Filter = "*.*|*.*|PNG Files (*.png)|*.png"
            };
            var result = ofd.ShowDialog();

            if (result == false)
            {
                return;
            }

            string fileForSave = ofd.FileName;

            BitmapSource bitmapSource = CanvasARGB.CreateBitmpaFromCanvas(_currentImage);

            FileStream       stream  = new FileStream(fileForSave, FileMode.Create);
            PngBitmapEncoder encoder = new PngBitmapEncoder();

            encoder.Interlace = PngInterlaceOption.On;
            encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
            encoder.Save(stream);
            stream.Dispose();
        }
        private void Button_Click_41(object sender, RoutedEventArgs e)
        {
            if (_currentImage == null)
            {
                return;
            }

            int inputNumber = int.Parse(NumberInput.Text);

            Stopwatch performanceCounter = new Stopwatch();

            performanceCounter.Start();

            CanvasARGB canvas = Get_ProgressOrOrigInput();

            CanvasPixel tmpCanvasPixel = CanvasPixel.CreateBitmpaFromCanvas(canvas);

            ColorReductor cr = new ColorReductor();

            cr.ReduceByMask(tmpCanvasPixel, inputNumber);


            _lastImage = CanvasPixel.CreateBitmpaFromCanvas(tmpCanvasPixel);

            performanceCounter.Stop();

            Helper_SetAppTitle(string.Format("{0,000} s    ", performanceCounter.Elapsed.TotalSeconds));

            ShowImage(false);
        }
        private void CollorToGray_Click(object sender, RoutedEventArgs e)
        {
            if (_currentImage == null)
            {
                return;
            }

            int inputNumber = int.Parse(NumberInput.Text);

            Stopwatch performanceCounter = new Stopwatch();

            performanceCounter.Start();

            CanvasARGB  canvas      = Get_ProgressOrOrigInput();
            CanvasPixel canvasPixel = CanvasPixel.CreateBitmpaFromCanvas(canvas);

            ColorToGrey ctg = new ColorToGrey();

            Array2D matrix = ctg.CreateColloredMatrix(canvasPixel.Width, canvasPixel.Height, inputNumber);

            CanvasPixel resultCanvas = ctg.CreateColoredGreyScale(canvasPixel, matrix);



            _lastImage = CanvasPixel.CreateBitmpaFromCanvas(resultCanvas);



            performanceCounter.Stop();

            Helper_SetAppTitle(string.Format("{0,000} s ", performanceCounter.Elapsed.TotalSeconds));

            ShowImage(false);
        }
        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            if (_currentImage == null)
            {
                return;
            }

            int inputNumber = int.Parse(NumberInput.Text);

            Stopwatch performanceCounter = new Stopwatch();

            performanceCounter.Start();

            CanvasARGB canvas = Get_ProgressOrOrigInput();

            RegionDetektor rd = new RegionDetektor();
            CanvasPixel    cp = rd.DetectOld(canvas, inputNumber);

            //cp.TransformFromInterleaveRGB();

            _lastImage = CanvasPixel.CreateBitmpaFromCanvas(cp);

            performanceCounter.Stop();

            Helper_SetAppTitle(string.Format("{0,000} s    - regions : {1}", performanceCounter.Elapsed.TotalSeconds, rd.TotalRegions));

            ShowImage(false);
        }
        public RegionDetector2_0(CanvasARGB canvas)
        {
            this._canvasPixel         = CanvasPixel.CreateBitmpaFromCanvas(canvas);
            this._canvasPixelOriginal = CanvasPixel.CreateBitmpaFromCanvas(canvas);

            this._regionManipulator = new RegionManipulator(this._canvasPixelOriginal, this._canvasPixel);
        }
        private void ColorToCSV_Click(object sender, RoutedEventArgs e)
        {
            if (_currentImage == null)
            {
                return;
            }



            CanvasARGB canvas = Get_ProgressOrOrigInput();

            using (TextWriter tw = new StreamWriter("testFile.csv", false, UTF8Encoding.UTF8))
                using (CsvHelper.CsvWriter cw = new CsvHelper.CsvWriter(tw))
                {
                    cw.Configuration.Delimiter = ";";

                    cw.Configuration.UseExcelLeadingZerosFormatForNumerics = true;

                    cw.WriteField("r");
                    cw.WriteField("g");
                    cw.WriteField("b");
                    cw.WriteField("left r");
                    cw.WriteField("left g");
                    cw.WriteField("left b");

                    cw.NextRecord();


                    // zapsani data na vystup
                    for (int y = 0; y < canvas.HeightPixel; y++)
                    {
                        for (int x = 0; x < canvas.WidthPixel; x++)
                        {
                            int index = y * canvas.Width + x * 4;

                            cw.WriteField(canvas.Data[index]);
                            cw.WriteField(canvas.Data[index + 1]);
                            cw.WriteField(canvas.Data[index + 2]);

                            if (x > 0)
                            {
                                cw.WriteField(canvas.Data[index - 4]);
                                cw.WriteField(canvas.Data[index - 4 + 1]);
                                cw.WriteField(canvas.Data[index - 4 + 2]);
                            }
                            else
                            {
                                cw.WriteField(0);
                                cw.WriteField(0);
                                cw.WriteField(0);
                            }


                            cw.NextRecord();
                        }
                    }
                }
        }
Beispiel #8
0
        public CanvasPixel Detect(CanvasARGB canvas, int tolerance)
        {
            _regionPixelLookup = new RegionVO[canvas.Length];
            _listRegion        = new List <RegionVO>();

            CanvasPixel canvasPixel = CanvasPixel.CreateBitmpaFromCanvas(canvas);

            this._regionManipulator = new RegionManipulator(null, canvasPixel);
            //canvasPixel.ConvertPixelsRGBToHSL();
            //canvasPixel.ReduceNotSeenColors();
            //canvasPixel.TransformToInterleaveRGB();

            List <int> singleAlonePoints = CreateRegionFromStart(canvasPixel, 0);// tolerance);

            //List<int> singleAlonePoints = CreateRegionFromStartCicCac(canvasPixel, tolerance);



            FuseAllSinglePoints(singleAlonePoints, canvasPixel, tolerance);

            int minPixels = tolerance;

            //for (int i = 1; i <= 16; i++)
            //    ReduceAllRegionUnderCountPixel(canvasPixel, i);



            for (int i = minPixels;
                 i <= minPixels; i++)
            {
                ReduceAllRegionUnderColorTolerance(canvasPixel, i);
            }
            //ReduceAllRegionUnderCountPixel(canvasPixel, 5);

            Dictionary <int, int> groups = new Dictionary <int, int>();

            foreach (var item in _listRegion)
            {
                if (groups.ContainsKey(item.Pixels.Length))
                {
                    groups[item.Pixels.Length]++;
                }
                else
                {
                    groups.Add(item.Pixels.Length, 1);
                }
            }



            //canvasPixel.ConvertPixelsHSLToRGB();
            return(canvasPixel);
        }
        private void ShowImage(bool showOriginal)
        {
            if (showOriginal)
            {
                SetResultViewTo_Original();
            }
            else
            {
                SetResultViewTo_LastResult();
            }

            ImageCanvas.Source = CanvasARGB.CreateBitmpaFromCanvas(_currentImage);
        }
        private void TraceNew_Click_1(object sender, RoutedEventArgs e)
        {
            if (_currentImage == null)
            {
                return;
            }


            int inputNumber = int.Parse(NumberInput.Text);

            Stopwatch performanceCounter = new Stopwatch();

            performanceCounter.Start();

            CanvasARGB canvas = Get_ProgressOrOrigInput();


            CanvasPixel tmpCanvasPixel = CanvasPixel.CreateBitmpaFromCanvas(canvas);

            canvas = CanvasPixel.CreateBitmpaFromCanvas(tmpCanvasPixel);

            RegionDetector2_0 rd = new RegionDetector2_0(canvas);

            rd.Detect_ByColorToleranceNew(inputNumber);
            CanvasPixel cp = rd.Get_CanvasFromRegions();

            if (CheckSaveToSVG.IsChecked.Value)
            {
                rd.ConvertRegionsToSVG(Helper_GetFileName_ForSVG(this._currentOpenFilename));
            }

            // cp.TransformFromInterleaveRGB();

            _lastImage = CanvasPixel.CreateBitmpaFromCanvas(cp);

            VectorPreview window = new VectorPreview();

            //window.RenderLines( tmpCanvasPixel,cp);

            window.RenderPolygons(rd.Regions, rd.RegionManipulator);
            window.Show();

            performanceCounter.Stop();

            Helper_SetAppTitle(string.Format("{0,000} s    - regions : {1}", performanceCounter.Elapsed.TotalSeconds, rd.TotalRegions));

            ShowImage(false);
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (_currentImage == null)
            {
                return;
            }


            int inputNumber = int.Parse(NumberInput.Text);

            Stopwatch performanceCounter = new Stopwatch();

            performanceCounter.Start();

            CanvasARGB canvas = Get_ProgressOrOrigInput();
            //for (int i = 0; i < 28000; i += 4)
            //{
            //    canvas.Data[i] = 0;
            //    canvas.Data[i + 1] = 255;
            //    canvas.Data[i + 2] = 0;
            //    canvas.Data[i + 3] = 255;
            //}


            CanvasPixel canvasPixel = CanvasPixel.CreateBitmpaFromCanvas(canvas);

            canvasPixel.TransformToInterleaveRGB();
            BasicOperation.PixelFilter2(canvasPixel, inputNumber);
            //canvasPixel.
            //BasicOperation.BlackWhite(canvasPixel);

            _lastImage = CanvasPixel.CreateBitmpaFromCanvas(canvasPixel);



            //BitmapSource bs = CanvasARGB.CreateBitmpaFromCanvas(canvas);

            //_originalImage = bs;
            //byte [] array = BitmapToArray(_originalImage);

            performanceCounter.Stop();

            Helper_SetAppTitle(string.Format("{0,000} s", performanceCounter.Elapsed.TotalSeconds));

            ShowImage(false);
            //RenderTargetBitmap.Create( rtb
            //textBox1.Text = ofd.FileName;
        }
        public MainWindow()
        {
            InitializeComponent();

            string path = LoadFilePath();

            if (!string.IsNullOrEmpty(path))
            {
                this._currentOpenFilename = System.IO.Path.GetFileName(path);
                BitmapImage bi     = GetBitmapImage(new Uri(path), BitmapCacheOption.OnLoad);
                CanvasARGB  canvas = CanvasARGB.CreateCanvasFromBitmap(bi);

                _originalImage = canvas;
                _lastImage     = CanvasARGB.Clone(canvas);
                _currentImage  = CanvasARGB.Clone(canvas);
            }

            Helper_SetAppTitle(string.Empty);
            ShowImage(false);
        }
        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            var ofd = new Microsoft.Win32.OpenFileDialog()
            {
                Filter = "*.*|*.*|Bitmap Files (*.bmp)|*.bmp|JPEG Files (*.jpeg)|*.jpeg|PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif"
            };
            var result = ofd.ShowDialog();

            if (result == false)
            {
                return;
            }

            this._currentOpenFilename = ofd.FileName;

            BitmapImage bi     = GetBitmapImage(new Uri(ofd.FileName), BitmapCacheOption.OnLoad);
            CanvasARGB  canvas = CanvasARGB.CreateCanvasFromBitmap(bi);

            _originalImage = canvas;
            SaveFilePath(ofd.FileName);
            _lastImage = CanvasARGB.Clone(canvas);

            ShowImage(false);
        }
 private void SetResultViewTo_LastResult()
 {
     this._currentImage = this._lastImage;
 }
 private void SetResultViewTo_Original()
 {
     this._currentImage = this._originalImage;
 }