图像分割 阈值和均值法法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号:
XXXXX大学
数字图像处理实验报告
实验六图像分割
院(系)计算机与信息工程学院
专
控制理论与控制工程
业
学生姓名XXXX
成绩
指导教师XXXXXXX
2013年5月
1. 实验目的
1.熟悉数字图像分割的一般方法,包括:图像并行区域和串行区域分割
2.掌握用阈值法进行图像分割的基本方法。
2.实验内容
1.设计并实现对数字图象根据直方图设定域值进行图像分割
2.设计并实现对数字图象进行边缘检测
3.分析所得到的结果。
3.实验原理
3.1阈值法
阈值分割法是一种简单的机遇区域的分割技术,同时也是一种广泛使用的图像分割技术[8]。
它主要是利用图像中要提取的目标在灰度特性方面的差异,把图像视为具有不同灰度级的两类区域的组合,然后通过选取一个合适的阈值,然后确定某一像素点是属于所要分割的目标还是普通背景。
这种方法不仅可以极大的压缩数据量,同时也大大的简化了图像信息的分析和处理步骤。
阈值法首先应当确定一个处于图像灰度级范围内的灰度阈值,然后将图像每个像素点的灰度值与该阈值进行比较,,根据该点灰度值是否超过阈值从而将该像素点进行归类。
比较常用的方法是设定阈值T ,然后将图像的像素点分为大于阈值的像素群和小与阈值的像素群两类。
这两类一般对应与图像的两类区域从而达到了区域分割的目的。
设输入图像为F (x,y),输出图像为B (x,y),则:
B (x,y)=⎩⎨
⎧<>T y x F T
y x F ),(0),(1 (2-10)
从该方法中可知,该种方法最关键的部分在于最优阈值的确定,同时这也是阈值法的一个难点。
由此阈值分割的实质就是按照一定的准则确定出最佳阈值的过程。
现阶段大多数关于阈值法的研究都集中在阈值确定的研究上。
目前提出了很多的阈值法,对应的分类也非常多。
阈值法根据本身的特点
可以分为单阈值分割方法和多阈值分割方法;也可以分为基于像素值的阈值分割方法、基于区域性质的阈值分割方法和基于坐标的阈值分割方法。
若根据算法所具有的性质或准则,还可以分为直方图峰谷法、最大类空间方法、最大熵法、模糊集法等。
1.灰度阈值分割法(并行区域技术)
事先决定一个阈值,当一个像素的灰度值超过这个阈值,我们就说这个像素属于我们所感兴趣的对象;反之则属于背景部分。
如果图像适合这种分割法,那么图像的直方图在表示对象和背景的小范围灰度值附近出现一个高峰值。
适合这种分割法的图像的直方图应是双极模式,我们可以在两个峰值之间的低谷处找到一个合适的阈值。
参考图1:
原始图像
分割结果
(T=170)
2.自适应全局阈值(单阈值)算法步骤:
1)初始化阈值T (一般为原图像所有像素平均值)。
2)用T分割图像成两个集合:G1 和G2,其中G1包含所有灰度值小于T 的像素,G2包含所有灰度值大于T的像素。
3)计算G1中像素的平均值m1及G2中像素的平均值m2。
4)计算新的阈值:T =(m1+m2)/2 。
5)如果新阈值跟原阈值之间的差值小于一个预先设定的范围,停止循环,否则继续2-4步。
全局单阈值分割只适用于很少的图像。
对一般图像采用局部阈值法或多阈值法会得到更好的效果
参考图2:
3.2 基于边缘的分割方法
基于边缘的分割方法是将图像中所要求分割的目标的边缘提取出来,从而将目标分割出来,主要依赖于图像中不同区域间的不连续性。
这类技术的优点是边缘定位准确,运算速度快;缺点是对噪声敏感,而且边缘检测方法只使用了局部信息,难以保证分割区内部的颜色一致,且不能产生连续的闭轮廓。
因此基于边缘的分割技术通常需要进行后续处理或与其他分割算法结合起来,才能完成分割任务。
边缘分割算法一般有如下四个步骤[10]:
滤波:边缘分割算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能。
2)增强:增强边缘的基础是确定图像各邻域强度的变化值,增强算法可以
将邻域强度值有显著变化的点突显出来。
3)检测:在图像中有许多点的梯度幅度值比较大,而这些点在特定的应用领域并不都是边缘,所以应当用某种方法来确定哪些点是边缘点。
4)定位:如果某一应用场合要求确定边缘位置,则边缘的位置可在亚像素分辨率上来估计,边缘的方位也可被估计出来。
在边缘检测算法中,前三个步骤用的十分普遍。
这是因为在大多数场合下,仅仅需要边缘检测器指出边缘出现在图像某一像素点的附近,而没有必要指出边缘的精确位置或方向。
边缘检测算法主要是利用图像的一阶导数的极值或二阶导数的过零点信息来提取边缘。
具体的说,对于图像中变化比较缓慢的区域,相邻像素的灰度变化不大,因而梯度幅值比较小(趋于零),而在图像的边缘地带,相邻像素的灰度变化剧烈,所以梯度幅值较大,因此用一阶导数幅值的大小可以确定边缘位置。
同理,二阶导数的符号可以用来判断一个像素是在边缘亮的一端还是暗的一端,过零点的位置就是边缘的位置。
典型的一阶导数边缘算子有Roberts 算子、Sobel 算子、Prewitt 算子、Krisch 算子等,而Laplacian 算子以及Guass-Laplacian 算子属于二阶导数边缘算子。
另外还简要介绍了Canny 算子。
3.2.1 Roberts 算子
Roberts 算子也叫交叉差分算子,是一种利用局部差分寻找边缘的算子,它考虑的是图像2×2邻域的处理。
梯度对应一阶导数算子,对于图像函数f(x,y),可以得到其Roberts 算子的表达式为[12]
g(i,j)=|),(j i f |=[(f(i,j)-f(i+1,j+1))2+(f(i+1,j)-f(i,j+1))2]1/2 (2-1) 其中,f(i,j)表示处理前(i,j)点的灰度值;g(i,j)表示处理后的灰度值。
模板形式如下
表1-1 Roberts 算子
3.2.2 Sobel 算子
Sobel 算子也是一种利用局部差分寻找边缘的算子。
不过与Roberts 算子相比,它考虑的是3×3邻域的处理。
其由两个卷积核形成,如下图所示。
根据公
式:|),(j i f |=max(Gx,Gy)将图像中的每个像素点分别与这两个核卷积,取值较大的作为该像素点的灰度值[12]。
表2-2 Sobel 算子
Sobel 算子的设计步骤如下: 1)用高斯滤波器对图像滤波,去除图像中的噪声。
2)由于导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点处算得的值较高,通过设计阈值的方法,提取边界点集。
3)对提取边缘后的图像进行连接和细化,使其形成一条有意义的边界。
Sobel 算子利用像素点上下、左右邻点的灰度加权算法,根据在边缘点处达到极值这一现象进行边缘检测。
3.2.3 Prewitt 算子
Prewitt 算子的应用方法与Sobel 算子类似,都是考虑图像3×3邻域的处理。
其卷积核如下所示
表2-3 Prewitt 算子
3.2.4 Krisch 算子
Krisch 算子是由代表8个方向的8个模板组成的方向算子,也是考虑图像3×3邻域的处理,不同的是它需要另图像中的每个像素点都用这8个模板进行卷积计算,其中的最大值作为边缘图像的输出。
该算子由8个卷积核组成,如表2-4所示[10]。
一阶算子的处理结果如图2-1所示
图2-1 一阶算子处理结果
3.2.5 Laplacian 算子
上述的4种算子都是属于一阶导数边缘算子,下面介绍的Laplacian 和Gauss-Laplacian 算子都属于二阶导数边缘算子,其中Laplacian 算子是对3×3领域处理[12]。
Laplacian 算子:
∇2f(x,y)=22),(x y x f ∂∂+
y y x f 22
)
,(∂∂ (2-2) -3 -3 -3 -3 0 -3 5 5 5 -3 -3 5 -3 0 5 -3 -3 5 5 5 -3 5 0 -3 -3 -3 -3
-3 5 5 -3 0 5 -3
-3
-3
5 -3 -3- 5 0 -3 5
-3
-3
对于数字图像来讲,f(x,y)的二阶偏导数可以表示为
22)
,
(x y x f ∂∂=[f(x+1,y)-f(x,y)]-[f(x,y)-f(x-1,y)]=f(x+1,y)+f(x-1,y)-2f(x,y) (2-3)
2
2)
,(y y x f ∂∂=f(x,y+1)+f(x,y-1)-2f(x,y) (2-4)
因此,算子可以由公式2-5所示:
),(2y x f ∇=22),(x y x f ∂∂+2
2
)
,(y y x f ∂∂ (2-5)
=f(x+1,y)+f(x-1,y)+f(x,y-1)+f(x,y+1)-4f(x,y)
=-5{f(x,y)-1/5[f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)]+f(x,y)}
可见数字图像在(x,y)点的Laplacian 边缘检测,可以由(x,y)点的灰度值减去该点领域的平均灰度来求得。
由于该算子是标量,因此只需要一个模板。
如下图为两个常用的Laplacian 算子的模板
表2-5 Laplacian 算子
3.2.6 Gauss-Laplacian 算子
Gauss-Laplacian 算子(可以写作log 算子)是对Laplacian 算子的一种改进,它需要考虑5×5邻域的处理,从而获得更好的检测效果。
Laplacian 算子对噪声非常敏感,因此Gauss-Laplacian 算子引入了平滑滤波,有效的去除了服从正态分布的噪声,从而使边缘检测的效果更好[12]。
图2-2 log 算子检测结果
0 -1 0 -1 4 -1 0 -1 0 -1 -1 -1
-1 8 -1
-1 -1 -1
3.2.7 Canny 算子
Canny 算子[9]是一种比较新的边缘检测算子,具有很好的边缘检测性能,得到了越来越广泛的应用。
Canny 算子边缘检测的方法是寻找图像梯度的局部最大值。
梯度是用高斯滤波器的导数计算的。
Canny 算子方法使用两个阈值来分别检测强边缘和弱边缘,而且仅当强边缘和弱边缘相连时,弱边缘才会包含在输出中。
因此,此方法不容易受噪声的干扰,能够检测到真正的弱边缘。
Canny 算子对检测阶跃性边缘时效果极好,去噪能力强。
但由于检测阈值固定,当检测具有模糊边缘的图像时,很可能导致平滑掉部分边缘信息。
因此,为了能更精确的检测出目标边界,可先对图像进行预处理,将其分割成若干图像,然后针对每幅子图像中具体情况选用不同的阈值,采用针对各子图像所选择的阈值对图像进行动态阈值分割。
实际应用时可以根据需要来调整子图像的大小,以获取所需的大小,这应该是一种可行的方法。
Canny 把边缘检测问题转化成为检测单元函数极大值的问题。
在高斯噪声中,一个典型的边缘代表一个阶跃的强度变换。
根据这个模型,一个好的边缘算子应具有的3个指标:
1)低失误概率,即要减少真正的边缘丢失也要减少将非边缘判为边缘。
2)高位置精度,检测出的边缘应该在真正的边界上。
3)对每个边缘有唯一的响应,得到的边界为单像素宽。
为此,Canny 提出了判定边缘检测算子的3个准则: 1)信噪比准则。
2)定义精度准则。
3)单边缘响应准则。
在Canny 的假设下,对一个带有Gaussian 白噪声的阶跃边缘,边缘检测算子是一个与图像函数g(x,y)进行卷积的滤波器f ,这个滤波器应该平滑掉白噪声并找到边缘位置。
问题是怎样确定一个能够使三个准则得到优化的函数
根据第一个准则,滤波器函数f 对边缘G 影响由厦门的卷积积分给出:
⎰--=n
n dx
x f x G H )()( (2-6)
假设区域[-w,w]外函数f 的值为0,则数学上3个准则的表达式如下:
SNR=
⎰
⎰--w
w
w dx
x f n dx x f A )(|
)(|20
(2-7)
Localization=
⎰
-w
w
dx
x f n f A )(|
)0(|20
(2-8)
2
1
2
2
)
)
(
)
(
(
⎰
⎰
∞
∞
-
∞
∞
-
=
dx
x
f
dx
x
f
x
zc
π
(2-9) 信噪比SNR是输入信号与噪声的比值,它的值越大说明信号越强;Localization是检测到的边缘真正边缘距离的倒数,这个值越大说明检测的边缘
的距离越小,二者越接近;xzc是一个约束条件。
Canny将上述三个公式进行结
合并试图找到最好的方法,但是结果太复杂。
最后他证明了Gaussian函数的一
阶导数是该优化的边缘检测滤波器的有效近似。
下图为Canny算子的检测结果
由上述图像可以发现,Canny算子的分割效果是最好的,但是不是所有的图
像使用Canny算子的处理效果都是最好的。
各种算子适合使用的情况见表2-6[9]
表2-6 各种算子应用最佳情况
算子最佳情况
Robert 对具有陡峭的低噪声的图像处理的效果最好,但是利用
Roberts算子提取边缘的结果边缘比较粗,因此边缘定位不是很
准确。
Sobel 对灰度渐变和噪声较多的图像处理效果较好。
Sobel算子对
边缘定位比较准确。
Prewitt 对灰度渐变和噪声较多的图像处理效果较好。
Log 拉普拉斯高斯算子经常出现双像素边界,并且检测方法对噪
声比较敏感;所以,很少用拉普拉斯高斯算子边缘检测,而是
用来判断像素是位于图像的明区还是暗区。
Canny 此方法不容易受噪声的干扰,能够检测真正的弱边缘。
在edge
函数中,最有效的边缘检测方法是Canny法。
该方法的优势在
于,使用两种不同的阈值分别检测强边缘和弱边缘,并且仅当
弱边缘和强边缘相连时,才将弱边缘包含在输出图像中。
因此,
这种方法不容易被噪声“填充”,更容易检测出真正的弱边缘。
4.实验过程1.程序流程图:
2.实验结果:
自动阈值的Roberts算子边缘检测
自动阈值的Sobel算子边缘检测
自动阈值的Prewitt算子边缘检测
其中:
Roberts算子自动选择的阈值为: 0.1759
Sobel算子自动选择的阈值为: 0.1133
Prewitt算子自动选择的阈值为: 0.1100
5.实验总结
数字图像的边缘检测技术是图像边缘检测、图形识别中最基础也是最重要的理论之一。
随着人们对图像信息需求的增加,图像边缘的重要性得到人们越来越多的关注。
边缘检测理论作为一个低级视觉处理过程有着较长的研究历史,产生了大量的新理论、新方法。
一般来讲一个好的算法应满足计算精度高,抗噪声能力强,计算简单等特点。
传统的边缘检测算子主要是基于它的频率特性进行设计,算法比较简单,但会增强图像中噪声的干扰,边缘检测和抗噪声干扰之间的矛盾成为这类方法进行图像边缘检测的基本难题。
但以上几种边缘提取算法都是针对性比较强的方法,特别是经过数次试验后
发现这几种边缘提取算法提取的精度都不算特别高,而且在边缘提取中存在着抗噪性和检测精度的矛盾。
:若要提高检测精度,则会检测到噪声产生伪边缘,从而导致不合理的轮廓;若要提高抗噪性,则会产生轮廓漏检和位置偏差。
实际图像都含有噪声,并且噪声的分布、方差等信息也都是未知的,同时噪声和边缘都是高频信号,虽然平滑滤波运算可消除噪声,但它导致一些边缘模糊,检测出的边缘往往移位。
由于物理和光照等原因,实际图像中的边缘常常发生在不同的尺度范围上,并且每一边缘像元的尺度信息是未知的,利用单一固定尺度的边缘检测算子不可能同时最佳地检测出这些边缘。
事实上,边缘检测作为视觉的初级阶段,通常认为是一个非良态问题,因而很难从根本上解决。
综上所述,通过图像边缘检测实验,我对几种边缘检测算法有了一定的理解和认识,并且提高了利用MATLAB进行算法实现的能力,也对边缘检测算法的应用有了一定的了解,对所学理论知识的认识有了进一步的增强。