从输入和输出都是图像的图像处理方法,转到了输入为图像而输出为从这些图像中提取出来的属性的图像处理方法。
分割将图像细分为构成它的子区域或物体。
本章中的多数分割算法均基于灰度值的两个基本性质之一:不连续性和相似性。
图像分割条件:
分割中的基本问题就是把一幅图像分成满足前述条件的多个区域。
边缘像素是图像中灰度突变的那些像素,而边缘(或边缘线段)是连接的边缘像素的集合。
对于灰度的突变,局部变化可以用微分来检测。
数字函数的导数可用差分来近似。
一阶导数的近似的基本要求:
二阶导数的近似的基本要求:
一维函数 f(x)在点 x 处的导数的近似 :
∂ f ∂ x = f ′ ( x ) = f ( x + 1 ) − f ( x ) \frac{\partial f}{\partial x} = f\prime(x) = f(x+1)-f(x) ∂x∂f=f′(x)=f(x+1)−f(x)
二阶导数表达式:
∂ 2 f ∂ x 2 = f ′ ′ ( x ) = f ( x + 1 ) + f ( x − 1 ) − 2 f ( x ) \frac{\partial^2 f}{\partial x^2} = f\prime\prime(x) = f(x+1)+f(x-1)-2f(x) ∂x2∂2f=f′′(x)=f(x+1)+f(x−1)−2f(x)
有关导数结论:
一阶导数通常在图像中产生较粗的边缘;
二阶导数对精细细节,如细线、孤立点和噪声有较强的响应;
二阶导数在灰度斜坡和灰度台阶过渡处会产生双边缘响应;
二阶导数的符号可用于确定边缘的过搜是从亮到暗还是从暗到亮;
使用空间滤波器可以计算图像中每个像素位置处的一阶导数和二阶导数。
基于空间模板的导数的计算是用这些模板对一幅图像进行空间滤波。
点的检测应以二阶导数为基础。
使用拉普拉斯模版进行点检测:
上图为拉普拉斯模板,如果在某点处该模板的响应的绝对值超过了一个指定的阈值,那么我们说在模板中心位置(x,y)处该点已被检测到了。在输出图像中,这样的点被标注为 1,而所有其他点则被标注为 0,从而产生一幅二值图像。表达式如下:
g ( x , y ) = { 1 , ∣ R ( x , y ) ∣ ≥ T 0 , 其 他 g(x,y) = \begin{cases} 1, &\mid R(x,y)\mid \geq T \\ 0, &其他 \end{cases} g(x,y)={1,0,∣R(x,y)∣≥T其他
g 是输出图像, T是一个非负的阔值,R为滤波后的输出值。
对于线检测,可以使用拉普拉斯模板。
谈论线检测时,我们假设这些线要细于检测子的尺寸。不满足这一假设的线最好当做区域,并使用边缘检测方法来处理。
边缘检测是基于灰度突变来分割图像的最常用的方法。
边缘模型根据它们的灰度剖面来分类。
台阶边缘是指在1个像索的距离上发生两个灰度级间理想的过渡。
实际中,数字图像都存在被模糊且带有噪声的边缘,模糊的程度主要取决于聚焦机理(如光学成像中的镜头)中的限制,而噪声水平主要取决于成像系统的电子元件。
一阶导数的幅度可用于检测图像中的某个点处是有存在一个边缘。二阶导数的符号可用于确定一个边缘像素位于该边缘的暗的一侧还是亮的一侧。
围绕一条边缘的二阶导数的两个附加性质:( 1)对图像中的每条边缘, 二阶导数生成两个值(一条不希望的特点) ; (2)二阶导数的零交叉点可用于定位租边缘的中心。
微弱的可见噪声对检测边缘所用的两个关键导数的严重影响。使用导数之前的图像平滑处理是应该认真考虑的问题。
执行边缘检测的三个基本步骤:
为了在一幅图像 f f f的(x,y)位置处寻找边缘的强度和方向,所选择的工具就是梯度.向量定义为
∇ ≡ g r a d ( f ) ≡ [ g x g y ] ≡ [ ∂ f ∂ x ∂ f ∂ y ] \nabla \equiv grad(f) \equiv\left[ \begin{array}{c} g_x\\ g_y \end{array} \right]\equiv \left[ \begin{array}{c} \frac{\partial f}{\partial x} \\\\ \frac{\partial f}{\partial y} \end{array} \right] ∇≡grad(f)≡[gxgy]≡⎣⎡∂x∂f∂y∂f⎦⎤
梯度向量的方向由下列对于 x轴度量的角度给出:
α ( x , y ) = a r c t a n [ g y g x ] \alpha (x,y) = arctan \left[ \frac{g_y}{g_x} \right] α(x,y)=arctan[gxgy]
要得到一幅图像的梯度,则要求在图像的每个像素位置处计算偏导数 ∂ f \partial f ∂f/ ∂ x \partial x ∂x 和 ∂ f \partial f ∂f/ ∂ y \partial y ∂y.我们处理的是数字量,因此要求关于一点的邻域上的偏导数的数字近似。
g x = ∂ f ( x , y ) ∂ x = f ( x + 1 , y ) − f ( x , y ) g x = ∂ f ( x , y ) ∂ x = f ( x , y + 1 ) − f ( x , y ) g_x = \frac{\partial f(x,y)}{\partial x} = f(x+1,y) - f(x,y)\\ g_x = \frac{\partial f(x,y)}{\partial x} = f(x,y+1) - f(x,y) gx=∂x∂f(x,y)=f(x+1,y)−f(x,y)gx=∂x∂f(x,y)=f(x,y+1)−f(x,y)
上图为实现上式的一维模板。
3x3 的模板来近似偏导数的最简单的数字近似公式如下;
g x = ∂ f ∂ x = ( z 7 + z 8 + z 9 ) − ( z 1 + z 2 + z 3 ) g y = ∂ f ∂ x = ( z 3 + z 6 + z 9 ) − ( z 1 + z 4 + z 7 ) g_x = \frac{\partial f}{\partial x} = (z_7+z_8+z_9) - (z_1+z_2+z_3)\\ \\ g_y = \frac{\partial f}{\partial x} = (z_3+z_6+z_9) - (z_1+z_4+z_7) gx=∂x∂f=(z7+z8+z9)−(z1+z2+z3)gy=∂x∂f=(z3+z6+z9)−(z1+z4+z7)
Prewitt 模板实现起来比 Sobel 模板更为简单,Sobel 模板能较好地抑制(平滑)噪声的特性这一事实使得它们更可取。
灰度变化与图像尺寸无关,因此他们的检测要求使用不同尺寸的算子 ;
灰度的突然变化会在一阶导数中引起波峰或波谷,或在二阶导数中等效地引起零交叉
∇ 2 G ( x , y ) = [ x 2 + y 2 − 2 σ 2 σ 4 ] e − x 2 + y 2 2 σ 2 \nabla^2G (x,y) = \left[\frac{x^2+y^2-2\sigma^2}{\sigma^4} \right]e^{-\frac{x^2+y^2}{2\sigma^2}} ∇2G(x,y)=[σ4x2+y2−2σ2]e−2σ2x2+y2
任意尺寸的模板可以通过该式取样并标定系数以使系数之和为零来生成。
Marr-Hildreth 算法由 LOG 滤波器与一幅输入图像 f ( x , y ) f(x, y) f(x,y)卷积组成,即 g ( x , y ) = [ ∇ 2 G ( x , y ) ] ★ f ( x , y ) g(x, y) = [\nabla^2 G(x,y)]★f(x, y) g(x,y)=[∇2G(x,y)]★f(x,y)
然后寻找 g(x, y)的零交叉来确定 f ( x , y ) f(x, y) f(x,y)中边缘的位置。
迄今为止讨论过的边缘检测器中最为优秀的。
坎尼方法基于三个基本目标:
坎尼的工作的本质是从数学上表达了前面的三个准则,并试图找到这些表达式的最佳解。
坎尼边缘检测算法是由下列基本步骤组成的:
平滑是用指定的大小为 nxn 的高斯模板与输入图像进行卷和中来完成的
坎尼算法改进性能所付出的代价是比早些时候讨论的两种方法实现起来更复杂 , 同时执行时间会更长。
实时工业图像处理,成本和速度需求通常要求我们使用更简单的技术,主要是阈值梯度方法。
当关注的主要是边缘质量时,通常会使用 Marr-Hildreth 算法和坎尼算法,特别是坎尼算法。
理想情况下,边缘检测应该仅产生位于边缘上的像素集合。实际上,由于噪声、不均匀照明引起的边缘间断,以及其他引入灰度值虚假的不连续的影响,这些像素并不能完全描述边缘特性。因此,一般是在边缘检测后紧跟着连接算法,所设计的算法将边缘像素组合成有意义的边缘或区域边界。
局部处理:
区域处理
在图像中感兴趣区域的位置已知或可以确定的情况下,我们可以使用在区域的基础上连接像素的技术。
使用霍夫变换的全局处理
由于阈值处理直观、实现简单且计算速度快,因此图像阈值处理在图像分割应用中处于核心地位。
灰度阈值处理
灰度阐值的成功与否直接关系到可区分的直方图模式的谷的宽度和深度。 而影响波谷特性的关键因素是:
全局阈值处理
阈值处理可视为一种统计决策理论问题,其目的是在把像素分配给两个或多个组(也称为分类)的过程中引人的平均误差最小。
如果直方图的波峰是高、窄、对称的,且被深的波谷分开,则选取一个“较好”阈值的机会是相当大的。 改进直方图形状的一种方法是仅考虑那些位于或靠近物体和背景间的边缘的像素。 一种直接且明显的改进是直方图很少依赖物体和背最的相对大小。
实际中.当我们有理由相信使用两个阈值可以有效地解决问题时,那么使用多个全局阈值处理就被视为一种可行的方法。 要求两个以上阈值的应用,通常使用更多的灰度值来解决。
可变阈值处理最简单的方法之一是把一幅图像分成不重叠的距形。这种方法用于补偿光照和/或反射的不均匀性。 选择的矩形要足够小,以便每个矩形的光照都近似是均匀的。
与图像细分方法相比更为一般的方法是在一幅图像中的每一点。(x, y)计算阈值,该阈值是以一个或多个在(x, y)邻域计算的特性为基
础的。
多变量阈值处理可视为一种距离计算。
区域生长是根据预先定义的生长准则将像素或子区域组合为更大区域的过程。 基本方法是从一组“种子”点开始,将与种子预先定义的性质相似的那些邻域像素添加到每个种子上来形成这些生长区域(如特定范围的灰度或颜色) 。
令 f ( x , y ) f(x,y) f(x,y)表示一个输入图像阵列; S ( x , y ) S(x, y) S(x,y)表示一个种子阵列。阵列中种子点位置处为1,其他位置处为0; Q 表示在每个位置(x,y)处所用的属性。 假设阵列 f f f和 S 的尺寸’相同。基于 8 连接的一个基
本区域生长算法可说明如下:
汇水盆地或分水岭:
对于一个特定的区域最小值,满足把一个点看成是一个水滴,如果把这些点放在任意位置上,水滴一定会下落到一个单一的最小值点的集合。
分割线或分水线:
满足处在该点的水会等可能性地流向不止一个这样的最小值点形成的地表面的峰线。
常见到分水岭分割方法用于一幅图像的梯度,而不是图像本身。
构建分离二元点集的水坝的最简方法是使用形态学膨胀。
分水岭分割算法通常会由于噪声和梯度的其他局部不规则性造成过度分割,令算法得到的结果变得毫无用处。
在时刻 t i t_i ti和 t j t_j tj获取的两幅图像间的差值图像可以定义为:
d i j = { 1 , ∣ f ( x , y , t i ) − f ( x , y , t j ) ∣ > T 0 , 其 他 d_{ij}=\begin{cases} 1, & \mid f(x,y,t_i) - f(x,y,t_j)\mid > T \\ 0, &其他 \end{cases} dij={1,0,∣f(x,y,ti)−f(x,y,tj)∣>T其他
T 是一个指定的阔值
在动态图像处理中, d i j ( x , y ) d_{ij}(x,y) dij(x,y) 中值为1的所有像素被认为是物体运动的结果。 这种方法只有在两幅图像都做了空间配准且在 T值设定的范围内光照相对恒定的情况下才是可用的。
累积差值图像(ADI)
通过将参考图像与序列中每幅后续图像进行比较形成的 。
本章主要介绍了图像分割相关的知识。我理解图像分割是对图像进行二值化,不同的二值化方式,代表了不同的分割方式,得到的分割效果自然不相同。关键在于程序如何实现这些对图片的数据变换。