(1) 按强度值大小排列像素点。
(2) 选择排序像素集的中间值作为点 的新值。
一般采用奇数点的邻域来计算中值,但如果像素点数为偶数时,中值就取排序像素中间两点的平均值。采用大小不同邻域的中值滤波器的结果见图3.4。
图3.4(1) 原始图像 图3.4(2) 加随机噪声后图像
图3.4(3) 图3.4(4)
图3.4(5) 图3.4(6)
中值滤波在一定条件下,可以克服线性滤波器(如均值滤波等)所带来的图像细节模糊,而且对滤除脉冲干扰即图像扫描噪声最为有效。在实际运算过程中并不需要图像的统计特性,也给计算带来不少方便。但是对一些细节多,特别是线、尖顶等细节多的图像不宜采用中值滤波。
4 基于边缘的分割算法
图像的边缘是图像最基本的特征之一,基于边缘的分割方法可以说是人们早研究的方法。所谓边缘是指其周围像素灰度有阶跃变化的像素的集合。边缘广泛的存在于图像之中,它是图像分割所依赖的重要特征。边缘检测方法试图通过检测不同区域间的边缘来解决图像分割问题。边缘检测技术可以按照处理的顺序分为串行边缘检测以及并行边缘检测。在串行边缘检测技术中,当前像素点是否属于检测的边缘,取决于先前像素的验证结果;而在并行边缘检测技术中,一个像素点是否属于检测的边缘,取决于当前正在检测的像素点以及该像素点的一些相邻像素点,这样该模型可以同时用于检测图像中的所有像素点,因而称之为并行边缘检测技术。
边缘(或边沿)是指其周围像素灰度有阶跃变化或“屋顶”变化的那些像素的集合,也即边缘是灰度值不连续的结果,这种不连续常可以用求导数方便的检测到,一般常用一阶导数和二阶导数来检测边缘。边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间。因此,它是图像分割所依赖的重要特征,而边缘信息所包含的往往是图像中最重要的信息,故对图像提取边缘能极大地降低我们要处理的数据量。
常见的边缘剖面有3种(如图4.1):
(1) 阶梯状边缘:阶梯状的边缘处于图像中两个具有不同灰度值的相邻区域之间,可用二阶导数的过零点检测边缘位置;
(2)脉冲状边缘:主要对应细条状的灰度值突变区域,通过检测二阶导数过零点可以确定脉冲的范围;
(3) 屋顶状边缘:屋顶状边缘位于灰度值从增加到减少的变化转折点,通过检测一阶导数过零点可以确定屋顶位置。
图4.1 常见边缘剖面
虽然图像边缘点产生的原因不同,但他们都是图像上灰度不连续点,或是灰度变化剧烈的地方。经典的边缘提取方法是考察图像的每个像素在某个邻域内灰度的变化,利用边缘邻近一阶或二阶方向导数变化规律,用简单的方法检测边缘。这种方法称为边缘检测局部算子法。边缘检测算子检查每个像素的邻域并对灰度变化率进行量化,也包括方向的确定。常用的边缘检测方法的基础是微分运算,边缘点对应于一阶微分幅度大的点,或对应于二阶微分的过零点。
传统的边缘检测算法通过梯度算子来实现,在求边缘的梯度时,需要对每个象素位置计算。经典的梯度算子模板有Roberts模板、Sobel模板、Prewitt模板、Log模板、Canny模板等。图4.2所示3×3大小的区域表示图像邻域中的灰度级。 MATLAB 图像分割算法的研究+分水岭算法(4):http://www.751com.cn/zidonghua/lunwen_8066.html