zl程序教程

您现在的位置是:首页 >  后端

当前栏目

数字图像处理 使用C#进行图像处理三

c#图像处理 进行 数字图像处理 使用
2023-09-14 09:01:35 时间

八、灰度图像二值化

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 = new byte[bytes];
    System.Runtime.InteropServices.Marshal.Copy(ptr, grayValues, 0, bytes);//灰度值数据存入grayValues中

    byte temp