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

合集下载

六种灰度处理算法

六种灰度处理算法

灰度处理算法主要有以下六种:
1. 最大值法:取RGB三个分量的最大值作为灰度化图像的值,会使处理后的图像的灰度偏亮。

2. 平均值法:取RGB三个分量的平均值作为灰度化图像的值,处理后的图像显得较为柔和。

3. 加权平均值法:给R、G、B三个分量赋予不同的权值,并取RGB三个分量加权的平均值作为灰度图像的均值。

由于人眼对绿色敏感度最高、红色次之,对蓝色敏感度最低,因此通常Wg>Wr>Wb,生成的图像也更符合人眼的视觉感受。

根据统计分析,通常当Wr=30%, Wg=59%, Wb=11%时得到的图像最为合理。

4. 去饱和:将RGB转换为HLS,然后将饱和度设为0,取一种颜色,转换它为最不饱和的值。

去饱和后,图片立体感减弱,但是更柔和。

5. 分解:将图片分解为不同的颜色和亮度通道进行处理。

以上是六种灰度处理算法,这些算法各有特点,可以根据具体情况选择合适的算法。

如需了解更多关于灰度处理算法的内容,建议查阅计算机视觉领域的专业书籍或文献,也可以咨询计算机视觉领域的专业人士获取更专业的解答。

灰度图像处理

灰度图像处理



• 对于数字图像,可以对上述公式做离散近似。若原图像f(x,y)在像素点(x,y)处的灰度为rk,则直方 图均化后的图像g(x,y)在点(x,y)处的灰度sk为
图像去噪
去噪的方法很多,常用的有:平滑滤波和中值滤波 1、平滑滤波 在假定加性噪声是随机独立分布的条件下,利用领域的平均或加权平 均可以有效抑制噪声干扰。图像平滑实际是低通滤波,让信号的低频部分 通过,阻截属于高频部分的噪声信号,显然,在减少随机噪声点影响的同时, 由于图像边缘部分也处在高频部分,平滑过程会导致边缘模糊化 平滑模板的思想是:通过待处理点和周围8个相邻点的平均来去除突然 变换的点,从而滤掉一定的噪声,其代价是图像有一定程度的模糊
图像锐化
1、一阶微分算子算法 图像处理种常用的微分方法就是求梯度。对于一个连续函数f(x,y),它在点(x,y)处的梯度是一个矢量,定义为
点(x,y)梯度的幅度即为梯度矢量的模:
(1)
对于数字图像f(x,y),由于数字图像的离散性,采用差分运算来近似替代微分运算,在其像素点(i,j)处,x方向和y方向上 的一阶差分定义为
增强后图像在(i,j)处的灰度值为
Sobel算子在计算x方向和y方向上的梯度时,不像普通梯度算子那样只用两 个像素灰度差值来表示,而是采用两列或两行像素灰度加权和的差值来表 示,这使得Sobel算子具有如下优点: (1)引入了加权平均,将距离远近产生的影响考虑进去,对图像中的随机噪声 具有一定的平滑作用 (2)由于Sobel算子采用间隔两行或者两列的差分,所以图像中边缘两侧的像 素得到增强。Sobel算子得到的锐化图像的边缘显得粗而亮
图像锐化
3、拉普拉斯算子算法 拉普拉斯算子是一种十分常用的图像边缘增 强处理算子。拉普拉斯算子是线性二次微分算子, 具有各向同性和位移不变性,从而满足不同走向 的图像边缘的锐化要求。 对于连续图像f(x,y),它的拉普拉斯算子为 当图像模糊是由于扩散现象引起时,拉斯运算 结果的k倍,即 。f为模糊图像,g为锐化 以后的图像,k是与扩散效应有关的系数。

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

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

灰度图像的腐蚀算法和细化算法(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>8public void ErosionPic(int dgGrayValue, int nMode, bool[,] structure)9 {10int lWidth = bmpobj.Width;11int lHeight = bmpobj.Height;12 Bitmap newBmp = new Bitmap(lWidth, lHeight);1314int i, j, n, m; //循环变量15 Color pixel; //像素颜⾊值1617if (nMode == 0)18 {19//使⽤⽔平⽅向的结构元素进⾏腐蚀20 // 由于使⽤1×3的结构元素,为防⽌越界,所以不处理最左边和最右边21 // 的两列像素22for (j = 0; j < lHeight; j++)23 {24for (i = 1; i < lWidth - 1; i++)25 {26//⽬标图像中的当前点先赋成⿊⾊27 newBmp.SetPixel(i, j, Color.Black);2829//如果源图像中当前点⾃⾝或者左右有⼀个点不是⿊⾊,30 //则将⽬标图像中的当前点赋成⽩⾊31if (bmpobj.GetPixel(i - 1, j).R > dgGrayValue ||32 bmpobj.GetPixel(i, j).R > dgGrayValue ||33 bmpobj.GetPixel(i + 1, j).R > dgGrayValue)34 newBmp.SetPixel(i, j, Color.White);35 }36 }37 }38else if (nMode == 1)39 {40//使⽤垂真⽅向的结构元素进⾏腐蚀41 // 由于使⽤3×1的结构元素,为防⽌越界,所以不处理最上边和最下边42 // 的两⾏像素43for (j = 1; j < lHeight - 1; j++)44 {45for (i = 0; i < lWidth; i++)46 {47//⽬标图像中的当前点先赋成⿊⾊48 newBmp.SetPixel(i, j, Color.Black);4950//如果源图像中当前点⾃⾝或者左右有⼀个点不是⿊⾊,51 //则将⽬标图像中的当前点赋成⽩⾊52if (bmpobj.GetPixel(i, j - 1).R > dgGrayValue ||53 bmpobj.GetPixel(i, j).R > dgGrayValue ||54 bmpobj.GetPixel(i, j + 1).R > dgGrayValue)55 newBmp.SetPixel(i, j, Color.White);56 }57 }58 }59else60 {61if (structure.Length != 9) //检查⾃定义结构62return;63//使⽤⾃定义的结构元素进⾏腐蚀64 // 由于使⽤3×3的结构元素,为防⽌越界,所以不处理最左边和最右边65 // 的两列像素和最上边和最下边的两列像素66for (j = 1; j < lHeight - 1; j++)67 {68for (i = 1; i < lWidth - 1; i++)69 {70//⽬标图像中的当前点先赋成⿊⾊71 newBmp.SetPixel(i, j, Color.Black);72//如果原图像中对应结构元素中为⿊⾊的那些点中有⼀个不是⿊⾊,73 //则将⽬标图像中的当前点赋成⽩⾊74for (m = 0; m < 3; m++)75 {76for (n = 0; n < 3; n++)77 {78if (!structure[m, n])79continue;80if (bmpobj.GetPixel(i + m - 1, j + n - 1).R > dgGrayValue)81 {82 newBmp.SetPixel(i, j, Color.White);83break;84 }85 }86 }87 }88 }89 }9091 bmpobj = newBmp;92 }939495///<summary>96///该函数⽤于对图像进⾏细化运算。

灰度形态学重构

灰度形态学重构

灰度形态学重构一、什么是灰度形态学重构?灰度形态学重构是一种基于灰度形态学理论的图像处理方法,它可以用来去除图像中的噪声、增强图像的细节等。

该方法通过将原始图像与一个结构元素进行腐蚀或膨胀操作,然后再对结果进行重构,从而得到处理后的图像。

二、灰度形态学重构的基本原理1. 结构元素:结构元素是一个小的二值图像,用于描述需要进行腐蚀或膨胀操作的区域。

在灰度形态学中,结构元素通常是一个正方形或圆形。

2. 腐蚀:腐蚀是一种基本的形态学操作,它可以用来去除图像中的噪声和小斑点。

具体操作为将结构元素放置在原始图像上,并将其与原始图像进行逐点比较,如果有任何一个点不匹配,则该点被标记为黑色(即0),否则该点被标记为白色(即255)。

3. 膨胀:膨胀也是一种基本的形态学操作,它可以用来增强图像中的细节和边缘。

具体操作为将结构元素放置在原始图像上,并将其与原始图像进行逐点比较,如果结构元素中的任何一个点与原始图像中的对应点匹配,则该点被标记为白色(即255),否则该点被标记为黑色(即0)。

4. 重构:重构是灰度形态学重构的核心操作,它可以用来将经过腐蚀或膨胀操作后得到的结果进行修正。

具体操作为将经过腐蚀或膨胀操作后得到的结果作为初始图像,再次进行腐蚀或膨胀操作,直到得到一个稳定的结果。

三、灰度形态学重构的应用1. 去除噪声:由于灰度形态学重构可以去除图像中的小斑点和噪声,因此它在医学图像处理、无损检测等领域有着广泛的应用。

2. 图像增强:由于灰度形态学重构可以增强图像中的细节和边缘,因此它在计算机视觉、数字摄影等领域有着广泛的应用。

3. 特征提取:由于灰度形态学重构可以提取图像中特定区域的特征,因此它在模式识别、人工智能等领域有着广泛的应用。

四、灰度形态学重构的优缺点1. 优点:(1)可以去除图像中的噪声和小斑点,增强图像的细节和边缘;(2)可以提取图像中特定区域的特征;(3)可以在不改变原始图像分辨率的情况下进行处理。

腐蚀膨胀算法原理

腐蚀膨胀算法原理

腐蚀膨胀算法原理
腐蚀膨胀算法是数字图像处理中一种常用的算法,它能够有效处理图像的边界检测以及对象提取问题。

在本文中,将深入讨论腐蚀膨胀算法的原理、优点和应用。

一、腐蚀膨胀算法原理
腐蚀膨胀算法是一种基于细化算法的图像处理算法,主要的思想是利用腐蚀或膨胀的操作改变图像的像素点,从而达到对图像边界的检测或对象的提取。

首先,我们需要确定腐蚀或膨胀操作的半径,半径越大,腐蚀或膨胀操作越明显。

腐蚀操作是把一个特定半径内所有像素点的灰度值变为0,而且腐蚀的成度越大,说明这个特定半径内的所有像素点的灰度值越小。

膨胀操作则是把一个特定半径内所有像素点的灰度值变为最大值,它与腐蚀操作相反,半径越大,膨胀的成度越大,说明特定半径内的所有像素点的灰度值越大。

二、腐蚀膨胀算法的优点
腐蚀膨胀算法比较简单,易于理解和实现,它不需要比较复杂的数学模型,也不需要复杂的参数调整,是图像处理中一种简单有效的算法。

另外,它还具有较强的抗噪声性能,也就是说它能够比较准确的检测出信号强度相对较弱的边界。

三、腐蚀膨胀算法的应用
腐蚀膨胀算法常用于图像边界检测和对象提取等方面,它具有一定的实际应用,例如在机器视觉中,可以使用腐蚀膨胀算法实现对特
定物体的准确定位和识别。

另外,也可以使用它来实现图像的噪声消除,或者将较弱的信号边界转换为较强的信号边界,以便使得后续的图像处理任务变得更加容易。

综上所述,腐蚀膨胀算法是一种常用的图像处理算法,主要用于图像的边界检测和对象提取,具有一定实际应用。

此外,它还具有较强的抗噪声性能,可以比较准确的检测出信号强度较弱的边界。

因此,腐蚀膨胀算法在图像处理中具有重要的意义。

MATLAB数字图像的腐蚀、填充、细化与粗化

MATLAB数字图像的腐蚀、填充、细化与粗化

《数字图像处理》实验报告姓名学号专业电子科学与工程学院实验 5一、实验目的本次实验的处理对象是二值图像,关于二值图像的处理运算主要包括腐蚀和膨胀。

它们是其他处理过程的主要运算环节。

开闭操作通过腐蚀和膨胀的不同顺序组合,能够使图像平滑,开闭操作再组合能够成噪声滤波器。

形态学中的击中击不中变换也应用了腐蚀的运算,用于判断图像中能否找到目标结构,这在图像细化中也得到了应用。

本次实验主要实现:1.图像的边缘提取;2.在边缘提取的基础上实现区域填充;3.在区域填充的基础上实现图像细化;4.在图像细化的基础上实现图像粗化。

在Matlab软件的自带函数库中其实本身就包含有以上处理过程的函数,为了深入理解每种处理过程的原理,本次实验所有运算都自行编写实现。

二、核心代码及运行后截图主函数:%% 读取图像clear;clc;I = imread('');I = im2bw(I); % 转换为二值图像[m,n] = size(I);%% 边界提取f = im2bw([0,1,0;1,1,1;0,1,0]); % 腐蚀用的结构元素F = fs(I,f);BW = im2bw(I-F); % 用原图减去腐蚀获得边缘figure;imshow(I);title('原图');figure;imshow(F);title('腐蚀图像');figure;imshow(BW);title('边界');在上面的运行效果图上看来,由于原图选择的原因,周围一圈白线有一定宽度但不足够粗,大概只有2~3个像素宽度而腐蚀用元素大小为3×3,这导致腐蚀后图像留下的白线看起来残缺不全,用原图减去腐蚀后得到的边缘图像也在白线处有“粘在一块”的现象。

只要使用更高一些分辨率的图片即可避免这样的情况。

但出于后续试验的运行速度考虑,本实验就使用此图(300×300)。

观察图像其他地方,有足够的像素宽度被腐蚀,由此提取的边缘也很清晰。

数字图像处理实验报告实验三

2.设计一个检测图3-2中边缘的程序,要求结果类似图3-3,并附原理说明
代码:
I=imread('lines.png');
F=rgb2gray(I);
subplot(2,2,1);
imshow(I);
title('原始图像');
thread=130/255;
subplot(2,2,2);
imhist(F);
图5-2 添上一层(漆)
3.开运算open:
4.闭close:
5.HMT(Hit-Miss Transform:击中——击不中变换)
条件严格的模板匹配
模板由两部分组成。 :物体, :背景。
图5-3 击不中变换示意图
性质:
(1) 时,
(2)
6.细化/粗化
(1)细化(Thin)
去掉满足匹配条件的点。
图5-4 细化示意图
se = strel('ball',5,5);
I2 = imerode(I,se);
imshow(I), title('Original')
figure, imshow(I2), title('Eroded')
Matlab用imopen函数实现图像开运算。用法为:
imopen(I,se);
I为图像源,se为结构元素
构造一个中心具有菱形结构的结构元素,R为跟中心点的距离
SE = strel('rectangle',MN)
构造一个矩形的结构元素,MN可写在[3 4],表示3行4列
SE = strel('square',W)
构造一个正方形的矩阵。

细化算法 (1)


SPTA细化算法步骤

对右边界的点,就是符合图3(a)模板的p点,即 n4· p· n0=1的p点,若式(a)为0,则为安全点。 布尔表达式中相应像素为黑且未被标记的点的布 尔量为1,否则为0. 同理,对左、上、下边界点的表达式分别如上面 的式(2)、(3)、(4)。


n3
n2
n1
n4
p
n0
n5
Hilditch细化算法的优缺点 优点:细化算法效果好

缺点:运算量大,有一些分支、处理速度慢,在实际应用中难以满足实时处理 的要求。
SPTA细化算法
SPTA细化算法一般需要经过数轮相同的检查过程,每一轮都由2次扫描组 成,每次扫描检查图像的每个像素。扫描过程可以是逐行的,也可以是 逐列的。第一次扫描检查所有的左、右边缘点,如果是非安全点则被标 记;第二次扫描检查所有的上、下边缘点,如果是非安全点则被标记。 当结束一轮扫描后,没有一点被标记,则删除所有被标记的点,算法结 束,否则进入下一轮扫描。 算法: S0=n4(n5+n6+n2+n3)(n0+n1')(n4+n3') S4=n0(n1+n2+n6+n7)(n2+n3')(n6+n5') S2=n6(n7+n0+n4+n5)(n0+n1')(n4+n3') S6=n2(n3+n4+n0+n1)(n4+n5')(n0+n7')其中’‘'’=‘ ▔’
n6
n7
SPTA细化算法优缺点

SPTA细化算法 优点:它代表了笔划的中轴线且保持了连续性 缺点:它需要分四次扫描进行,速度较慢,而且SPTA也难于克服45度 交叉畸变的问题

图像处理——灰度化、二值化、膨胀算法、腐蚀算法以及开运算和闭运算

图像处理——灰度化、⼆值化、膨胀算法、腐蚀算法以及开运算和闭运算⼀、RGBRGB模式使⽤为图像中每个的RGB分量分配⼀个0~255范围内的强度值。

RGB仅仅使⽤三种颜⾊,R(red)、G(green)、B(blue),就能够使它们依照不同的⽐例混合,在上呈现16777216(256 * 256 * 256)种颜⾊。

在电脑中,RGB的所谓“多少”就是指亮度,并使⽤整数来表⽰。

通常情况下,RGB各有256级亮度,⽤数字表⽰为从0、1、2...直到255。

⼆、ARGB⼀种,也就是⾊彩模式附加上Alpha()通道,常见于32位的。

ARGB---Alpha,Red,Green,Blue.三、灰度化在RGB模型中,假设R=G=B时,则彩⾊表⽰⼀种灰度颜⾊,当中R=G=B的值叫灰度值,因此,灰度图像每⼀个像素仅仅需⼀个字节存放灰度值(⼜称强度值、亮度值),灰度范围为0-255。

⼀般有下⾯四种⽅法对彩⾊图像进⾏灰度化,详细⽅法參考: 四、⼆值化⼀幅图像包含⽬标物体、背景还有噪声,要想从多值的数字图像中直接提取出⽬标物体,最经常使⽤的⽅法就是设定⼀个全局的阈值T,⽤T 将图像的数据分成两部分:⼤于T的像素群和⼩于T的像素群。

将⼤于T的像素群的像素值设定为⽩⾊(或者⿊⾊),⼩于T的像素群的像素值设定为⿊⾊(或者⽩⾊)。

⽐⽅:计算每个像素的(R+G+B)/3,假设>127,则设置该像素为⽩⾊,即R=G=B=255;否则设置为⿊⾊,即R=G=B=0。

C#实现代码例如以下:public Bitmap binarization(){Bitmap bitImage = new Bitmap(pictureBox1.Image);//⼆值化pictureBox1中的图⽚Color c;int height = pictureBox1.Image.Height;int width = pictureBox1.Image.Width;for (int i = 0; i < height; i++){for (int j = 0; j < width; j++){c = bitImage.GetPixel(j,i);int r = c.R;int g = c.G;int b = c.B;if ((r + g + b) / 3 >= 127){bitImage.SetPixel(j, i, Color.FromArgb(255, 255, 255));}else{bitImage.SetPixel(j, i, Color.FromArgb(0,0,0));}}}return bitImage;}执⾏结果如图:左边为处理前,右边为⼆值化后效果。

图像细化算法 2

图像细化算法一、细化算法简介图像细化(Image Thinning),一般指二值图像的骨架化(Image keletonization)的一种操作运算。

所谓的细化就是经过一层层的剥离,从原来的图中去掉一些点,但仍要保持原来的形状,直到得到图像的骨架。

骨架,可以理解为图象的中轴。

好的细化算法一定要满足:∙收敛性;∙保证细化后细线的连通性∙保持原图的基本形状∙减少笔画相交处的畸变∙细化结果是原图像的中心线∙细化的快速性和迭代次数少依据是否使用迭代运算可以分为两类:(1)非迭代算法一次即产生骨架,如基于距离变换的方法。

游程长度编码细化等。

(2)迭代算法即重复删除图像边缘满足一定条件的像素,最终得到单像素宽带骨架。

迭代方法依据其检查像素的方法又可以再分成①串行算法是否删除像素在每次迭代的执行中是固定顺序的,它不仅取决于前次迭代的结果,也取决于本次迭代中已处理过像素点分布情况.②并行算法像素点删除与否与像素值图像中的顺序无关,仅取决于前次迭代的结果二、本文所用算法我所采用的是Zhang并行快速细化算法,它的原理也很简单:我们对一副二值图像进行骨架提取,就是删除不需要的轮廓点,只保留其骨架点。

假设一个像素点,我们定义该点为p1,则它的八邻域点p2->p9位置如下图所示,该算法考虑p1点邻域的实际情况,以便决定是否删除p1点。

假设我们处理的为二值图像,背景为黑色,值为0,要细化的前景物体像素值为1。

算法的描述如下。

首先复制源图像到目地图像,然后建立一个临时图像,接着执行下面操作:1. 把目地图像复制给临时图像,对临时图像进行一次扫描,对于不为0的点,如果满足以下四个条件,则在目地图像中删除该点(就是设置该像素为0),这里p2,…,p9是对应位置的像素灰度值(其为1或者0)。

a. 2<= p2+p3+p4+p5+p6+p7+p8+p9<=6大于等于2会保证p1点不是端点或孤立点,因为删除端点和孤立点是不合理的,小于等于6保证p1点是一个边界点,而不是一个内部点。

  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 /// &lt;summary&gt; 2 /// 该函数用于对图像进行腐蚀运算。

结构元素为水平方向或垂直方向的三个点, 3 /// 中间点位于原点;或者由用户自己定义3×3的结构元素。

4 ///
&lt;/summary&gt;
5 /// &lt;param name=&quot;dgGrayValue&quot;&gt;前后景临界值&lt;/param&gt;
6 /// &lt;param name=&quot;nMode&quot;&gt;腐蚀方式:0表示水平方向,1垂直
方向,2自定义结构元素。

&lt;/param&gt;
7 /// &lt;param name=&quot;structure&quot;&gt; 自定义的3×3结构元素
&lt;/param&gt;
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 &lt; lHeight; j++)
23 {
24 for (i = 1; i &lt; lWidth - 1; i++)
25 {
26 //目标图像中的当前点先赋成黑色
27 newBmp.SetPixel(i, j, Color.Black);
28
29 //如果源图像中当前点自身或者左右有一个点不是黑色,
30 //则将目标图像中的当前点赋成白色
31 if (bmpobj.GetPixel(i - 1, j).R &gt; dgGrayValue ||。

相关文档
最新文档