阈值就是某种状态变化的临界值,门限数值。阈值花是灰度图片转二值化图的一种常用方法。图像二值化处理在图像分割、边缘跟踪等诸多领域都要用到,属于预处理方法中的一种。
灰度阈值变换函数表达式
0 x<T
ƒ(x)= (T为指定的阈值)
255 x>=T
代码实现如下:
/// <summary>
/// 二值化带阈值
/// </summary>
/// <param name="bitmap">输入原图</param>
/// <param name="Threshold">阈值</param>
/// <returns>二值化图片</returns>
public static Bitmap Binarization(Bitmap bitmap,int Threshold)
{
Bitmap refbitmap = (Bitmap)bitmap.Clone();//创建副本,不修改原图
int ImageWidth = bitmap.Width;
int ImageHeight = bitmap.Height;
for (int x = 0; x < ImageWidth; x++)
{
for (int y = 0; y < ImageHeight; y++)
{
Color Sourcecolor;
Sourcecolor = bitmap.GetPixel(x, y);//获取像素点颜色值
Color Deskcolor;
int gray = (Sourcecolor.R * 38 + Sourcecolor.G * 75 + Sourcecolor.B * 15) >> 7; //灰度转换计算
if (gray > Threshold)
{
Deskcolor = Color.FromArgb(255, 255, 255);
}
else {
Deskcolor = Color.FromArgb(0, 0, 0);
}
refbitmap.SetPixel(x, y, Deskcolor);//替换副本像素颜色
}
}
return refbitmap;
}