//-------------------------------------------------------------------------------------- private void tsbCleanAccurateDefault_Click(object sender, EventArgs e) { try { Bitmap lInBmp = pbBlackWhite.Image as Bitmap; if (lInBmp == null) { MessageBox.Show("Нет картинки"); return; } byte[][] lMatrix = CBlackWhiteExplorer.BitmapToBinaryMatrix(lInBmp); if (cbClearColor.SelectedIndex < 3) { CBlackWhiteExplorer.RemoveIsolatePointAccurate(lMatrix, (byte)cbClearColor.SelectedIndex); } else if (cbClearColor.SelectedIndex == 3) { CBlackWhiteExplorer.RemoveIsolatePointAccurate(lMatrix, 0); CBlackWhiteExplorer.RemoveIsolatePointAccurate(lMatrix, 1); } else { CBlackWhiteExplorer.RemoveIsolatePointAccurate(lMatrix, 1); CBlackWhiteExplorer.RemoveIsolatePointAccurate(lMatrix, 0); } Bitmap lNewBmp = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrix); pbAfterCleanExactDefault.Image = lNewBmp; } catch (Exception ee) { MessageBox.Show(ee.ToString()); } }
//-------------------------------------------------------------------------------------- private void toolStripButton1_Click(object sender, EventArgs e) { if (pbPicture1.Image == null || pbPicture2.Image == null || pbPicture3.Image == null) { return; } CBlackWhiteExplorer lBlackWhiteExplorer = new CBlackWhiteExplorer(); byte[][] lMatrix1 = CBlackWhiteExplorer.BitmapToBinaryMatrix(pbPicture1.Image as Bitmap); byte[][] lMatrix2 = CBlackWhiteExplorer.BitmapToBinaryMatrix(pbPicture2.Image as Bitmap); byte[][] lMatrix3 = CBlackWhiteExplorer.BitmapToBinaryMatrix(pbPicture3.Image as Bitmap); byte[][][] lMatrixs = lBlackWhiteExplorer.Compare3BWMatrix(lMatrix1, lMatrix2, lMatrix3, byte.Parse(tcbValColor.SelectedItem.ToString())); Bitmap lPictureIntersection = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[0]); Bitmap lPictureUnion = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[1]); Bitmap lPictureUnionDiffer = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[2]); Bitmap lPicture001 = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[3]); Bitmap lPicture010 = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[4]); Bitmap lPicture100 = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[5]); Bitmap lPicture011 = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[6]); Bitmap lPicture101 = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[7]); Bitmap lPicture110 = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[8]); pbIntersection.Image = lPictureIntersection; pbUnion.Image = lPictureUnion; pbUnionDiffer.Image = lPictureUnionDiffer; pb001.Image = lPicture001; pb010.Image = lPicture010; pb100.Image = lPicture100; pb011.Image = lPicture011; pb101.Image = lPicture101; pb110.Image = lPicture110; }
//-------------------------------------------------------------------------------------- private void tsbExec_Click(object sender, EventArgs e) { if (pbPicture1.Image == null || pbPicture2.Image == null) { return; } CBlackWhiteExplorer lBlackWhiteExplorer = new CBlackWhiteExplorer(); byte[][] lMatrix1 = CBlackWhiteExplorer.BitmapToBinaryMatrix(pbPicture1.Image as Bitmap); byte[][] lMatrix2 = CBlackWhiteExplorer.BitmapToBinaryMatrix(pbPicture2.Image as Bitmap); byte[][][] lMatrixs = lBlackWhiteExplorer.Compare2BWMatrix(lMatrix1, lMatrix2, byte.Parse(tcbValColor.SelectedItem.ToString())); Bitmap lPictureIntersection = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[1]); Bitmap lPictureUnion = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[0]); Bitmap lPicture1_2 = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[2]); Bitmap lPicture2_1 = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[3]); Bitmap lPictureUnionDiffer = CBlackWhiteExplorer.BinaryMatrixToBitmap(lMatrixs[4]); pbIntersection.Image = lPictureIntersection; pbUnion.Image = lPictureUnion; pbUnionDiffer.Image = lPictureUnionDiffer; pb1_2.Image = lPicture1_2; pb2_1.Image = lPicture2_1; }
//-------------------------------------------------------------------------------------- /// <summary> /// удалить маленькие области из картинки (предварительно преобразовав ее в 0.1 матрицу) /// </summary> /// <param name="pImage">картинка для преобразования</param> /// <param name="pWhat">цвет рисунка</param> /// <param name="pThreshold">предельный размер удаляемых</param> /// <returns>результирующая матрица очищенная от маленьких связанных областей</returns> public byte[][] RemoveSmallRegion(Bitmap pImage, byte pWhat, int pThreshold) { byte[][] lMatrix = CBlackWhiteExplorer.BitmapToBinaryMatrix(pImage); return(RemoveSmallRegion(lMatrix, pWhat, pThreshold)); }
//-------------------------------------------------------------------------------------- /// <summary> /// разбить рисунок на отдельные куски в виде списка матриц по методу единной матрицы /// </summary> /// <param name="pImage"></param> /// <param name="pNumberColor"></param> /// <returns></returns> public int[][] SplitByOneMatrix(Bitmap pImage, out int pNumberColor) { byte[][] lMatrix = CBlackWhiteExplorer.BitmapToBinaryMatrix(pImage); return(SplitByOneMatrix(lMatrix, out pNumberColor)); }
//-------------------------------------------------------------------------------------- /// <summary> /// разбить рисунок на отдельные куски в виде списка матриц по методу матриц /// </summary> /// <param name="pImage"></param> /// <param name="pWhat"></param> /// <returns></returns> public List <byte[][]> SplitByMatrix(Bitmap pImage, byte pWhat) { byte[][] lMatrix = CBlackWhiteExplorer.BitmapToBinaryMatrix(pImage); return(SplitByMatrix(lMatrix, pWhat)); }
//-------------------------------------------------------------------------------------- /// <summary> /// разбить рисунок на отдельные куски в виде списка матриц по методу множеств /// </summary> /// <param name="pImage"></param> /// <returns></returns> public List <byte[][]> SplitBySet(Bitmap pImage) { byte[][] lMatrix = CBlackWhiteExplorer.BitmapToBinaryMatrix(pImage); return(SplitBySet(lMatrix)); }