灰度图像的腐蚀算法和细化算法(C#代码)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

灰度图像的腐蚀算法和细化算法(C#代码)

最近做一些图像处理,需要将图像中的一些像素过滤一下,有网友给提了个名词:腐蚀算法。

我不是学图像学的,乍一听,觉得很神奇。后来从网上收集了一些VC代码,研究了一下,发

现其它也就是那么回事。尤其是腐蚀算法,我在以前的验证码图片去噪声的文章中提到过,

只是那是我不知叫什么名词,就从用途出发,叫做“根据周边点数去噪”。腐蚀的原理也一样,

就是根据当前点的周边点数(如3X3的,周边就有8个点)来修改当前点的状态的。

代码是我从VC代码中转译过来的,注释都沿用了原作者的文字(别说是剽窃,^_^)。唯一改

进的地方是,原代码功能只能处理0和255的二值灰度(搞不懂为什么这样,对于250、128

这样的都不行,还不如弄成二值灰度,别弄256灰度了),我将之改成了能根据0~255中任意

灰度划界的256灰度图像!以下是C#代码: 1 /// <summary> 2 /// 该函数用于对图像进行腐蚀运算。结构元素为水平方向或垂直方向的三个点, 3 /// 中间点位于原点;或者由用户自己定义3×3的结构元素。4 ///

</summary>

5 /// <param name="dgGrayValue">前后景临界值</param>

6 /// <param name="nMode">腐蚀方式:0表示水平方向,1垂直

方向,2自定义结构元素。</param>

7 /// <param name="structure"> 自定义的3×3结构元素

</param>

8 public void ErosionPic(int dgGrayValue, int nMode, bool[,] structure)

9 {

10 int lWidth = bmpobj.Width;

11 int lHeight = bmpobj.Height;

12 Bitmap newBmp = new Bitmap(lWidth, lHeight);

13

14 int i, j, n, m; //循环变量

15 Color pixel; //像素颜色值

16

17 if (nMode == 0)

18 {

19 //使用水平方向的结构元素进行腐蚀

20 // 由于使用1×3的结构元素,为防止越界,所以不处理最左边和最右

边 21 // 的两列像素

22 for (j = 0; j < lHeight; j++)

23 {

24 for (i = 1; i < lWidth - 1; i++)

25 {

26 //目标图像中的当前点先赋成黑色

27 newBmp.SetPixel(i, j, Color.Black);

28

29 //如果源图像中当前点自身或者左右有一个点不是黑色,

30 //则将目标图像中的当前点赋成白色

31 if (bmpobj.GetPixel(i - 1, j).R > dgGrayValue ||

相关文档
最新文档