八、灰度图像二值化
1、三角法
/*
1. 图像转灰度
2. 计算图像灰度直方图
3. 寻找直方图中两侧边界
4. 寻找直方图最大值
5. 检测是否最大波峰在亮的一侧,否则翻转
6. 计算阈值得到阈值T,如果翻转则255-T
//三角法图像二值化
*/
public void Triangle()
{
//图像数据,需要是灰度图,否则需要自己转灰度
System.Drawing.Bitmap bmpHist = new Bitmap(@"C:\\Users\\xiao\\Desktop\\123.bmp");
//灰度等级
int[] countPixel = new int[256];
//记录最大的灰度级个数
int maxPixel;
//是否翻转
bool isflipped = false;
//锁定8位灰度位图
Rectangle rect = new Rectangle(0, 0, bmpHist.Width, bmpHist.Height);
System.Drawing.Imaging.BitmapData bmpData = bmpHist.LockBits(rect,
System.Drawing.Imaging.ImageLockMode.ReadWrite, bmpHist.PixelFormat);
IntPtr ptr = bmpData.Scan0;
int bytes = bmpHist.Width * bmpHist.Height;
byte[] grayValues =