标签:io ar os sp for 数据 on cti bs
//二值化 public static void Binarize(Bitmap sourceBitmap) { if (sourceBitmap != null) { string Rbrthreshold = Microsoft.VisualBasic.Interaction.InputBox("请输入一个-255~255之间的阀值。\n\n注:正负值可使图像二值化为不同的“黑白效果”", "二值化阀值设置", "70", 100, 100); if (Rbrthreshold == "" || Convert.ToInt16(Rbrthreshold) < -255 || Convert.ToInt16(Rbrthreshold) > 255) { MessageBox.Show("阀值必须在-255~255之间", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { Rectangle rect = new Rectangle(0, 0, sourceBitmap.Width, sourceBitmap.Height); System.Drawing.Imaging.BitmapData bmpData = sourceBitmap.LockBits(rect, ImageLockMode.ReadWrite, sourceBitmap.PixelFormat); unsafe//指针法,对像素操作 { int blue; int rgbth = Convert.ToInt16(Rbrthreshold); byte* ptr = (byte*)(bmpData.Scan0); for (int i = 0; i < bmpData.Height; i++) { for (int j = 0; j < bmpData.Width; j++) { if (rgbth > 0) { blue = (int)(ptr[0] < System.Math.Abs(rgbth) ? 0 : 255); } else { blue = (int)(ptr[0] > System.Math.Abs(rgbth) ? 0 : 255); } ptr[0] = ptr[1] = ptr[2] = (byte)(blue); ptr += 3; } ptr += bmpData.Stride - bmpData.Width * 3; } } sourceBitmap.UnlockBits(bmpData); } } else { MessageBox.Show("无图像可处理", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
图像的二值化的性质类似于图像的灰度化处理,即将原来色彩丰富的图像变得简单,而二值化则使图像的色彩变得更少,只有两种颜色:黑白。于是,这种图像的像素颜色只需1位二进制值表示。图像存储数据量急剧减少,而且可使一些图像处理的算法简化或处理的速度提高。
标签:io ar os sp for 数据 on cti bs
原文地址:http://my.oschina.net/u/1455020/blog/348591