/// <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))); }
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); })); }
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; }
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)); }
/// <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))); }
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(); }
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); }
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; }
private void erosionToolStripMenuItem_Click(object sender, EventArgs e) { Erosion erosion = new Erosion(); erosion.setErosionInput(_ImageInput); imageBox1.Image = erosion.ErosionPic(); }
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); }
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)); }
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); }
private void reapplyToolStripMenuItem_Click(object sender, EventArgs e) { Erosion filter = new Erosion(); // apply the filter pictureBox2.Image = filter.Apply((Bitmap)pictureBox2.Image); }
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); }
/// <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); } }
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 ); }
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); }
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)); }
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)); }
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); }
public mErosionSimple() { BitmapType = mFilter.BitmapTypes.GrayscaleBT709; Effect = new Erosion(); filter = Effect; }
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); }
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(); }
public static Bitmap Erosion(Bitmap bmp) { // create filter Erosion filter = new Erosion(); // apply the filter filter.Apply(bmp); return(bmp); }
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); }
/// <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; }