谁懂C#的二值化的请进来

能给我解释这段代码里每句的含义吗
http://wenku.baidu.com/view/9bbb21ef551810a6f52486be.html

第1个回答  2013-01-30
这个用了指针去处理图像,实在太多了我只解释重要的部分吧。
public int[,] Binary_L(double value){

Rectangle rect = new Rectangle(0, 0, curBitmap.Width, curBitmap.Height);
//表示图像大小的矩形
System.Drawing.Imaging.BitmapData bmpData = curBitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, curBitmap.PixelFormat);
//载入内存,在内存进行图片处理
pic = new int[bmpData.Width, bmpData.Height];
//定义数组
unsafe //必须加unsafe才能在C#使用指针
{
byte* ptr = (byte*)(bmpData.Scan0); //获取指向在内存的所有像素的指针,以byte回值
for (int i = 0; i < bmpData.Height; i++) //遍历像素
{
for (int j = 0; j < bmpData.Width; j++)
{
//算法
if (RGB2L(ptr[2], ptr[1], ptr[0]) < value)
{
pic[j, i] = 1;
}
else
{
pic[j, i] = 0;
}
ptr += 3;
}
//指针的推加
ptr += bmpData.Stride - bmpData.Width * 3;
}
}
//解锁图片在内存里缓存以释放内存

curBitmap.UnlockBits(bmpData);
//返回先前定义的数组
return pic;

谁能帮忙解释下C#二值化处理图片的代码?thanks!
这代码写的很低效,不过还算清晰。灰度处理那个很简单吧,基本上C#都自动帮你做了,你那代码就是手动遍历其中每个像素然后读取其灰度值(这里代码偷懒直接让C#帮忙计算了)然后重新把像素设置为RGB都是灰度值的颜色而已。二值化的其实也不复杂,也是逐个遍历像素,判断某个像素的亮度是否大于给定阈值,如果...

c# 开发识别纯白色背景的图片上面分散开的虫子数量,请问需要什么技术...
简单的一个思路,假定虫子是黑色,总之不是白色,统计每个虫子占据的像素数量。遍历照片的像素,颜色到一定深度就认为是虫子,最后一除就出来了。

一幅二值化图像中怎么找到气泡的最大轮廓并且显示出来还有最大轮廓的...
可以考虑使用AForge.NET框架

c# 图像文字位置定位
Y轴像素投影到X轴上,点数最少的就是分割的地方. 同样X轴投影,得到分界线.

c#图像灰度处理及二值化处理代码解释
灰度处理那个很简单吧,基本上C#都自动帮你做了,你那代码就是手动遍历其中每个像素然后读取其灰度值(这里代码偷懒直接让C#帮忙计算了)然后重新把像素设置为RGB都是灰度值的颜色而已。二值化的其实也不复杂,也是逐个遍历像素,判断某个像素的亮度是否大于给定阈值,如果大于则设置为白色否则设置为黑色。...

c#图像灰度处理及二值化处理代码解释
灰度处理那个很简单吧,基本上C#都自动帮你做了,你那代码就是手动遍历其中每个像素然后读取其灰度值(这里代码偷懒直接让C#帮忙计算了)然后重新把像素设置为RGB都是灰度值的颜色而已。二值化的其实也不复杂,也是逐个遍历像素,判断某个像素的亮度是否大于给定阈值,如果大于则设置为白色否则设置为黑色。

相似回答