Example #1
1
                /// <summary>
                /// Performs the <see cref="Closing"/> operator on the given
                /// <see cref="Matrix"/>.
                /// </summary>
                /// <param name="src">
                /// The <see cref="Matrix"/> which should be used by the
                /// operator.
                /// </param>
                /// <returns> The closed <see cref="Matrix"/>. </returns>
                public Matrix Execute (Matrix src)
                {
                        Dilation dilation = new Dilation (this.se);
                        Erosion erosion = new Erosion (this.se);

                        return (erosion.Execute (dilation.Execute (src)));
                }
Example #2
0
 public static Task <(Bitmap, string)> DeCaptchAsync(Image img)
 {
     return((Task <(Bitmap, string)>)Task.Run(() =>
     {
         string value;
         Bitmap bmp = new Bitmap(img);
         bmp = bmp.Clone(new Rectangle(0, 0, img.Width, img.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
         Erosion erosion = new Erosion();
         Dilatation dilatation = new Dilatation();
         Invert inverter = new Invert();
         ColorFiltering cor = new ColorFiltering();
         //cor.Blue = new AForge.IntRange(200, 255);
         cor.Red = new AForge.IntRange(50, 255);
         //cor.Green = new AForge.IntRange(200, 255);
         Opening open = new Opening();
         BlobsFiltering bc = new BlobsFiltering()
         {
             MinHeight = 10
         };
         Closing close = new Closing();
         GaussianSharpen gs = new GaussianSharpen();
         ContrastCorrection cc = new ContrastCorrection();
         FiltersSequence seq = new FiltersSequence(gs, inverter, open, inverter, bc, inverter, open, cc, cor, bc, inverter, dilatation);
         Image image = seq.Apply(bmp);
         value = OCR((Bitmap)image);
         return ((Bitmap)image, value);
     }));
 }
Example #3
0
        private string reconhecerCaptcha(Image img)
        {
            Bitmap _bitmap = new Bitmap(img);

            _bitmap = _bitmap.Clone(new Rectangle(0, 0, img.Width, img.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            Erosion        erosion    = new Erosion();
            Dilatation     dilatation = new Dilatation();
            Invert         inverter   = new Invert();
            ColorFiltering cor        = new ColorFiltering();

            cor.Blue  = new AForge.IntRange(200, 255);
            cor.Red   = new AForge.IntRange(200, 255);
            cor.Green = new AForge.IntRange(200, 255);
            Opening            open  = new Opening();
            BlobsFiltering     bc    = new BlobsFiltering();
            Closing            close = new Closing();
            GaussianSharpen    gs    = new GaussianSharpen();
            ContrastCorrection cc    = new ContrastCorrection();

            bc.MinHeight = 10;
            FiltersSequence seq = new FiltersSequence(gs, inverter, open, inverter, bc, inverter, open, cc, cor, bc, inverter);

            pictureBox1.Image = seq.Apply(_bitmap);
            string recognedString = OCR((Bitmap)pictureBox1.Image);

            return(recognedString);
        }
        public static Bitmap thick(Bitmap source)        // 선 굵게, 24비트로 넣어줘야함
        {
            ///////////// ini 객체 생성 시작 /////////////////////////////////////////////////////
            //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe
            FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe");
            string   pathini     = exefileinfo.Directory.FullName.ToString();      //프로그램 실행되고 있는데 path 가져오기
            string   fileName    = @"\PLOCRconfig.ini";                            // 환경설정 파일명
            string   filePath    = pathini + fileName;                             //ini 파일 경로

            DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌)
            //////////// ini 객체 생성 끝 /////////////////////////////////////////////////////////

            int order = int.Parse(ini.GetIniValue("선굵기값", "굵게횟수"));

            for (int i = 0; i < order; i++)
            {
                Bitmap tmp = (Bitmap)source;        // 중요! 한번 이미지 처리가 끝난 비트맵 source 는 clone 함수로 보내기 전에 다시 한번 (Bitmap) 처리 해줘야함, 이유는 잘 모르겠음
                // convert to 24 bits per pixel
                source = imageProcess.Clone(tmp, PixelFormat.Format24bppRgb);
                // delete old image
                tmp.Dispose();

                Erosion filter = new Erosion();
                filter.ApplyInPlace(source);;
            }

            return(source);
        }
        public VideoProcessor()
        {
            background = null;

            pixelateFilter           = new Pixellate();
            pixelateFilter.PixelSize = 10;

            differenceFilter = new Difference();
            thresholdFilter  = new Threshold(15);
            grayscaleFilter  = new Grayscale(0.2125, 0.7154, 0.0721);
            erosionFilter    = new Erosion();

            moveTowardsFilter = new MoveTowards();

            filters1 = new FiltersSequence();
            filters1.Add(pixelateFilter);
            filters1.Add(grayscaleFilter);

            filters2 = new FiltersSequence();

            filters2.Add(differenceFilter);
            filters2.Add(thresholdFilter);
            filters2.Add(erosionFilter);

            rat1 = new Tracker(640 / 2, 480 / 2, Color.Red);

            rat2 = new Tracker(400, 300, Color.Green);

            counter = 0;
        }
Example #6
0
        private string reconhecerCaptcha(Image img)
        {
            Bitmap imagem = new Bitmap(img);

            imagem = imagem.Clone(new Rectangle(0, 0, img.Width, img.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            Erosion        erosion    = new Erosion();
            Dilatation     dilatation = new Dilatation();
            Invert         inverter   = new Invert();
            ColorFiltering cor        = new ColorFiltering();

            cor.Blue  = new AForge.IntRange(200, 255);
            cor.Red   = new AForge.IntRange(200, 255);
            cor.Green = new AForge.IntRange(200, 255);
            Opening            open  = new Opening();
            BlobsFiltering     bc    = new BlobsFiltering();
            Closing            close = new Closing();
            GaussianSharpen    gs    = new GaussianSharpen();
            ContrastCorrection cc    = new ContrastCorrection();

            bc.MinHeight = 10;
            FiltersSequence seq = new FiltersSequence(gs, inverter, open, inverter, bc, inverter, open, cc, cor, bc, inverter);

            imagem = seq.Apply(imagem);
            //imagem.Save(Directory.GetCurrentDirectory() + "\\Captcha2.png", System.Drawing.Imaging.ImageFormat.Png);
            string reconhecido = OCR(imagem);

            //string reconhecido = ocr.Principal(Directory.GetCurrentDirectory() + "\\Captcha2.png");
            return(reconhecido);
        }
    public void Erode()
    {
        //map = FindObjectOfType<Noise>().Generate(mapSize); // генерация шума на основе параметра mapSize
        float[] noiseMap  = Noise.GenerateNoiseMap(mapSize, seed, noiseScale, octaves, persistance, lacunarity, offset);
        Color[] colourMap = new Color[mapSize * mapSize];

        for (int y = 0; y < mapSize; y++)
        {
            for (int x = 0; x < mapSize; x++)
            {
                float currentHeight = noiseMap[y * mapSize + x];
                for (int i = 0; i < regions.Length; i++)
                {
                    if (currentHeight <= regions[i].height)
                    {
                        colourMap[y * mapSize + x] = regions[i].colour;
                        break;
                    }
                }
            }
        }

        erosion = FindObjectOfType <Erosion>();                       // инициализация объекта класса erosion
        erosion.Erode(noiseMap, mapSize, numErosionIterations, true); // реализация функции эрозии
        //GenerateMesh(); // генерация меша
        MapDisplay display = FindObjectOfType <MapDisplay>();

        display.DrawMeshLand(MeshGenerator.GenerateTerrainMesh(noiseMap, meshHightMultiplier, meshHeightCurve), TextureGenerator.TextureFromColourMap(colourMap, mapSize));
    }
Example #8
0
        /// <summary>
        /// Performs the <see cref="Closing"/> operator on the given
        /// <see cref="Matrix"/>.
        /// </summary>
        /// <param name="src">
        /// The <see cref="Matrix"/> which should be used by the
        /// operator.
        /// </param>
        /// <returns> The closed <see cref="Matrix"/>. </returns>
        public Matrix Execute(Matrix src)
        {
            Dilation dilation = new Dilation(this.se);
            Erosion  erosion  = new Erosion(this.se);

            return(erosion.Execute(dilation.Execute(src)));
        }
Example #9
0
        public static Bitmap ApplyFilters(Image img)
        {
            Bitmap imagem = new Bitmap(img);

            imagem = imagem.Clone(new Rectangle(0, 0, img.Width, img.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            Erosion        erosion    = new Erosion();
            Dilatation     dilatation = new Dilatation();
            Invert         inverter   = new Invert();
            ColorFiltering cor        = new ColorFiltering();

            cor.Blue  = new AForge.IntRange(200, 255);
            cor.Red   = new AForge.IntRange(200, 255);
            cor.Green = new AForge.IntRange(200, 255);
            Opening            open  = new Opening();
            BlobsFiltering     bc    = new BlobsFiltering();
            Closing            close = new Closing();
            GaussianSharpen    gs    = new GaussianSharpen();
            ContrastCorrection cc    = new ContrastCorrection();

            bc.MinHeight = 10;
            FiltersSequence seq           = new FiltersSequence(gs, inverter, open, inverter, bc, inverter, open, cc, cor, bc, inverter);
            var             filteredImage = seq.Apply(imagem);

            return(filteredImage);
        }
 public void Erode()
 {
     map     = FindObjectOfType <HeightMapGenerator> ().Generate(mapSize);
     erosion = FindObjectOfType <Erosion> ();
     erosion.Erode(map, mapSize, numErosionIterations, true);
     GenerateMesh();
 }
Example #11
0
        private Bitmap XXX(Bitmap bmpBefore, Bitmap bmpAfter)
        {
            var filter = new Grayscale(0.2125, 0.7154, 0.0721);

            bmpBefore = filter.Apply(bmpBefore);
            bmpAfter  = filter.Apply(bmpAfter);

            // create filters
            var     differenceFilter = new Difference();
            IFilter thresholdFilter  = new Threshold(15);

            // set backgroud frame as an overlay for difference filter
            differenceFilter.OverlayImage = bmpBefore;
            // apply the filters
            Bitmap  tmp1          = differenceFilter.Apply(bmpAfter);
            Bitmap  tmp2          = thresholdFilter.Apply(tmp1);
            IFilter erosionFilter = new Erosion();
            // apply the filter
            Bitmap tmp3 = erosionFilter.Apply(tmp2);

            IFilter pixellateFilter = new Pixellate();
            // apply the filter
            Bitmap tmp4 = pixellateFilter.Apply(tmp3);

            return(tmp4);
        }
Example #12
0
        private void detectObjectsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var img     = (Bitmap)currentImage.Clone();
            var showImg = (Bitmap)currentImage.Clone();

            // img = Grayscale.CommonAlgorithms.Y.Apply(img);
            img = new OtsuThreshold().Apply(img);
            img = new Erosion().Apply(img);
            img = new Invert().Apply(img);

            BlobCounter bc = new BlobCounter();

            bc.BackgroundThreshold = Color.Black;
            bc.ProcessImage(img);
            MessageBox.Show(String.Format("The image contains {0} objects.", bc.ObjectsCount));

            Rectangle  rect    = new Rectangle(0, 0, showImg.Width, showImg.Height);
            BitmapData bmpData = showImg.LockBits(rect, ImageLockMode.ReadWrite, showImg.PixelFormat);

            bc.GetObjectsRectangles().ToList().ForEach(i => {
                Drawing.Rectangle(bmpData, i, Color.GreenYellow);
            });

            showImg.UnlockBits(bmpData);

            pictureBox.Image = showImg;
        }
Example #13
0
        private void erosionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Erosion erosion = new Erosion();

            erosion.setErosionInput(_ImageInput);
            imageBox1.Image = erosion.ErosionPic();
        }
Example #14
0
        private string reconhecerCaptcha(Image img)
        {
            Bitmap imagem = new Bitmap(img);

            imagem = imagem.Clone(new Rectangle(0, 0, img.Width, img.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            Erosion        erosion    = new Erosion();
            Dilatation     dilatation = new Dilatation();
            Invert         inverter   = new Invert();
            ColorFiltering cor        = new ColorFiltering();

            cor.Blue  = new AForge.IntRange(200, 255);
            cor.Red   = new AForge.IntRange(200, 255);
            cor.Green = new AForge.IntRange(200, 255);
            Opening            open  = new Opening();
            BlobsFiltering     bc    = new BlobsFiltering();
            Closing            close = new Closing();
            GaussianSharpen    gs    = new GaussianSharpen();
            ContrastCorrection cc    = new ContrastCorrection();

            bc.MinHeight = 10;
            GrayscaleRMY    gray = new GrayscaleRMY();
            Threshold       thr  = new Threshold(200);
            Difference      diff = new Difference(dilatation.Apply(imagem));
            FiltersSequence seq  = new FiltersSequence(diff, inverter, erosion, gray, thr, cc);

            pictureBox.Image = seq.Apply(imagem);
            string reconhecido = OCR((Bitmap)pictureBox.Image);

            return(reconhecido);
        }
Example #15
0
        public Bitmap ToErosion(Bitmap Im)
        {
            AForge.Imaging.Filters.Erosion Img = new Erosion();
            Bitmap bmImage = AForge.Imaging.Image.Clone(new Bitmap(Im), PixelFormat.Format24bppRgb);

            return(Img.Apply(bmImage));
        }
Example #16
0
    public void GenerateMap()
    {
        //float[,] noiseMap = Noise.WhiteNoise(mapWidth, mapHeight,seed);
        float[,,] noiseResultMap = Noise.GenerateNoiseMap(mapChunkSize, mapChunkSize, noiseData.seed, noiseData.noiseScale, noiseData.octaves, noiseData.persistance, noiseData.lacunarity, noiseData.offset);
        float[,] noiseMap        = new float[mapChunkSize, mapChunkSize];
        Color[] colorMap = new Color[mapChunkSize * mapChunkSize];
        for (int y = 0; y < mapChunkSize; y++)
        {
            for (int x = 0; x < mapChunkSize; x++)
            {
                noiseMap [x, y] = noiseData.valueNoise * noiseResultMap [0, x, y] + noiseData.perlinNoise * noiseResultMap [1, x, y] + noiseData.simplexeNoise * noiseResultMap [2, x, y];
            }
        }
        if (erosionData.thermalcycle > 0)
        {
            noiseMap = Erosion.thermalErosion(noiseMap, erosionData.thermalcycle, erosionData.thermalslopeLimit, erosionData.termalStrength, mapChunkSize);
        }
        if (erosionData.fastcycle > 0)
        {
            noiseMap = Erosion.fastErosion(noiseMap, erosionData.fastcycle, erosionData.fastslopeLimit, erosionData.fastStrength, mapChunkSize);
        }
        if (erosionData.hydraulicCycle > 0)
        {
            noiseMap = Erosion.hydraulicErosion(noiseMap, erosionData.hydraulicCycle, erosionData.amountRain / 10f, erosionData.solubility, erosionData.evaporation, mapChunkSize);
        }
        for (int y = 0; y < mapChunkSize; y++)
        {
            for (int x = 0; x < mapChunkSize; x++)
            {
                if (terrainData.useIslandFallOff)
                {
                    noiseMap [x, y] = Mathf.Clamp01(noiseMap [x, y] - fallofMap [x, y]);
                }
                float currentHeight = noiseMap[x, y];
                for (int i = 0; i < regions.Length; i++)
                {
                    if (currentHeight <= regions[i].height)
                    {
                        colorMap[x + y * mapChunkSize] = regions[i].color;
                        break;
                    }
                }
            }
        }
        MapDisplay display = FindObjectOfType <MapDisplay>();

        if (drawMode == DrawMode.NoiseMAp)
        {
            display.DrawTexture(TextureGenerator.TextureFromHeightMap(noiseMap));
        }
        else if (drawMode == DrawMode.ColorMap)
        {
            display.DrawTexture(TextureGenerator.TextureFromColorMap(colorMap, mapChunkSize, mapChunkSize));
        }
        else if (drawMode == DrawMode.Mesh)
        {
            display.DrawMesh(MeshGenerator.GenerateTerrainMesh(noiseMap, terrainData.meshHeightMultiplier, terrainData.meshHeightCurve, levelOfDetail), TextureGenerator.TextureFromColorMap(colorMap, mapChunkSize, mapChunkSize));
        }
        textureData.UpdateMeshHeights(terrainMaterial, 10 * terrainData.minHeight, 10 * terrainData.maxHeight);
    }
Example #17
0
        private void reapplyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Erosion filter = new Erosion();

            // apply the filter
            pictureBox2.Image = filter.Apply((Bitmap)pictureBox2.Image);
        }
Example #18
0
        public static Bitmap MorphologySimpleBinarization(this Bitmap image, int morphologyKernel, byte morphologyThreshold)
        {
            if (image.PixelFormat != PixelFormat.Format8bppIndexed)
            {
                throw new NotSupportedException("Filter can be applied to binary 8bpp images only");
            }
            Erosion morphologyErosion   = new Erosion();
            Bitmap  tempMorphologyImage = morphologyErosion.Apply(image);

            for (int i = 0; i < morphologyKernel - 1; i++)
            {
                tempMorphologyImage = morphologyErosion.Apply(tempMorphologyImage);
            }
            SimpleGrayImage morphologyImage = new SimpleGrayImage(tempMorphologyImage);

            OtsuThreshold   thresholdFilter = new OtsuThreshold();
            SimpleGrayImage otcuImage       = new SimpleGrayImage(thresholdFilter.Apply(image));

            for (int i = 0; i < morphologyImage.Cols; i++)
            {
                for (int j = 0; j < morphologyImage.Rows; j++)
                {
                    if (morphologyImage.Data[j, i] > morphologyThreshold)
                    {
                        morphologyImage.Data[j, i] = 255;
                    }
                    else
                    {
                        morphologyImage.Data[j, i] = otcuImage.Data[j, i];
                    }
                }
            }
            return(morphologyImage.Bitmap);
        }
Example #19
0
        /// <summary>
        /// Apply filter
        /// </summary>
        /// <returns>Bitmap - filtered image</returns>
        public Bitmap Apply()
        {
            try
            {
                bitmap = Grayscale.CommonAlgorithms.BT709.Apply(bitmap);

                var normalizer = new ContrastStretch();
                normalizer.ApplyInPlace(bitmap);

                var er = new Erosion();
                er.ApplyInPlace(bitmap);

                var ed = new SobelEdgeDetector();
                ed.ApplyInPlace(bitmap);


                var th = new Threshold();
                th.ApplyInPlace(bitmap);

                return(bitmap);
            }
            catch
            {
                return(bitmap);
            }
        }
Example #20
0
 public void Load(Erosion erosion)
 {
     Debug.Log("Height map requested for coord: " + coord.x + ", " + coord.y);
     ThreadedDataRequester.RequestData(
         () => HeightMapGenerator.GenerateHeightMap(meshSettings.numberOfVerticesPerLine, heightMapSettings, erosion, sampleCenter),
         OnHeightMapReceived
         );
 }
Example #21
0
        public static Bitmap Erosion(Bitmap Imagem)
        {
            Erosion filter = new Erosion();

            Imagem = Imagem.Clone(new Rectangle(0, 0, Imagem.Width, Imagem.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            Imagem = filter.Apply(Imagem);
            return(Imagem);
        }
Example #22
0
        public static Bitmap EroseImage(Bitmap bit)
        {
            Bitmap bmp = bit.Clone(new Rectangle(0, 0, bit.Width, bit.Height), PixelFormat.Format24bppRgb);

            Erosion erosion = new Erosion();

            return(erosion.Apply(bmp));
        }
Example #23
0
        private void Erosion_Filter_Process()
        {
            var filter = new Erosion();

            AddLog("filtr Erosion  na " + _view.CurrentFile);
            filter.ApplyInPlace(_image);
            Thread.Sleep(200);
        }
        public Bitmap Erosion(Bitmap bitmap)
        {
            var     bmp    = ReverseBitmapColors(bitmap);
            Erosion filter = new Erosion();

            filter.ApplyInPlace(bmp);
            return(ReverseBitmapColors(bmp));
        }
Example #25
0
        private void сужениеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MatrixFilter filter = new Erosion();

            float[,] arr = { { 0, 1, 0 }, { 1, 1, 1 }, { 0, 1, 0 } };
            filter.setkernel(arr, arr.GetLength(0));
            backgroundWorker1.RunWorkerAsync(filter);
        }
Example #26
0
        public mErosionSimple()
        {
            BitmapType = mFilter.BitmapTypes.GrayscaleBT709;

            Effect = new Erosion();

            filter = Effect;
        }
Example #27
0
        private void btn_edit_erosion_Click(object sender, EventArgs e)
        {
            Erosion er = new Erosion();

            er.setParameters(new int[, ] {
                { 1, 0, 1 }, { 0, 1, 0 }, { 1, 0, 1 }
            }, 1, 1);
            apply_effect(er);
        }
Example #28
0
        private void Erosion_Filter_Process(object callback)
        {
            var filter = new Erosion();

            AddLog("filtr Erosion  na " + _view.CurrentFile);
            filter.ApplyInPlace(_image);
            Thread.Sleep(200);
            ((AutoResetEvent)callback).Set();
        }
Example #29
0
        public static Bitmap Erosion(Bitmap bmp)
        {
            // create filter
            Erosion filter = new Erosion();

            // apply the filter
            filter.Apply(bmp);
            return(bmp);
        }
Example #30
0
        private void СужениеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var bm = new Bitmap(pictureBox1.Image);

            old_image = image;
            image     = bm;
            Erosion filter = new Erosion(mWidth, mHeight, mMatrix);

            backgroundWorker1.RunWorkerAsync(filter);
        }
        public void ModifyNoise()
        {
            float[,] elevations = this._noise.GetNoiseValues();
            Erosion erosion = new Erosion();

            erosion.ErosionShader = erosionShader;

            if (_erosionConfig.applyErosion)
            {
                erosion.Erode(elevations, erosionIterations);
            }

            switch (preset)
            {
            case 0:
                ApplyNormalizedHalfSphere(elevations);
                break;

            case 1:
                ApplyLogisticsFunctionToElevations(elevations);
                break;

            case 2:
                AmplifyElevations(elevations, 2);
                break;

            case 3:
                break;

            default:
                Debug.Log("Default noise map.");

                CreateCraters(elevations);

                AmplifyElevations(elevations, amplification);
                LogarithmicClamp(elevations, logClampThreshold, logClampIntensity);
                DampenElevations(elevations, flattenDampenStrength);
                FlattenLows(elevations);
                FlattenLinearToAverage(elevations);

                break;
            }

            Tools.Normalize(elevations);


            // computeErosion (elevations);

            //Tools.normalize(elevations, maxOnly: false, rescaleSmallMax: false);

            //normalizeToNElevationLevels(elevations, heightSteps);

            this._noise.SetNoiseValues(elevations);
        }
Example #32
0
                /// <summary>
                /// Performs the <see cref="BinaryHitMiss"/> operator on the given
                /// <see cref="Matrix"/>.
                /// </summary>
                /// <param name="src">
                /// The <see cref="Matrix"/> which should be used by the
                /// operator.
                /// </param>
                /// <returns> The resulting <see cref="Matrix"/>. </returns>
                public Matrix Execute (Matrix src)
                {
                        Erosion erosion1 = new Erosion (this.se1);
                        Erosion erosion2 = new Erosion (this.se2);
                        Matrix bw1 = erosion1.Execute (src);
                        Matrix bw2 = erosion2.Execute (!src);

                        Matrix result = bw1 & bw2;

                        return result;
                }