第三章图像预处理

3.1灰度级变换

一、灰度级变换的定义

  灰度级变换(点运算)的定义

  ★对于输入图象f(x,y),灰度级变换T将产生一个输出图像g(x,y),且g(x,y)的每一个像素值都是由f(x,y)的对应输入像素点的值决定的,g(x,y)=T(f(x,y))。

  ★对于原图象f(x,y)和灰度值变换函数T(f(x,y)),由于灰度值总是有限个(如:O~2 5 5),非几何变换可定义为:R=T(r),其LlJ R、r(O.255)。

二、灰度级变换的实现

  灰度级变换(点运算)的实现

  R=T(r)定义了输入像素值与输出像素之间的映射关系,通常通过查表来实现。

三、灰度级变换实例

    1、图象求反

    2、对比度拉伸

    3、动态范围压缩

    4、灰度级切片

 

3.2图像的灰度直方图

    灰度直方图(histogram)统计了图象中各个灰度级的象素的个数。

一、灰度直方图的计算

  若图象具有L级灰度(通常L=256,即8位灰度级),则大小为m(n的灰度图象f(x,Y)的灰度直方图H[k],k=0…L-1,可按如下步骤计算获得:

    1)初始化:for(k=O;k<L;k++)H[k]=O;

    2)统计:

    for(x=O;x<m;x++)

    for(y=O;y<n;y++)H[f(x,y)]++;

  3)规格化:

    flOr(x=O;x<m;x++)

    for(y=O;y<n;y++)H[f(x,y)]/=float(m(n);

二、直方图均衡化

    直方图均衡化是通过灰度变换将一幅图象转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。

    直方图均衡化变换:设灰度变换s=f(r)为斜率有限的非减连续可微函数,它将输入图象Ii(x,y)转换为输出图象Io(x,y),输入图象的直方图为Hi(r),输出图象的直方图为Ho(s),则根据直方图的含义,经过灰度变换后对应的小面积元相等:Ho(s)ds=Hi(r)dr

    变换函数f(r)必须满足下列2个条件:

  ★(1)f(r)  (O(r(1)是单值函数、且单调增加;

  ★(2)O(f(r)  (1,(O(r(1)。

  上面第一个条件保证了灰度级从黑到白的次序,第二个条件保证了变换后象素的灰度级仍然在容许的范围之内。r=f-l(s)为逆变换函数,同样也要满足上述条件。

直方图修正的例子

    假设有一幅图像,共有6 4(6 4个象素,8个灰度级,试进行直方图均衡化处理。根据公式可得:

    s2=0.19+0.25+0.2l=O.65,

    s3=0.19+0.25+0.2l+O.16=0.8l,

    s4=0.89,s5=0.95,s6=0.98,s7=1.00。

    由于这里只取8个等间距的灰度级,变换后的s值也只能选择最靠近的一个灰度级的值。因此,根据上述计算值可近似地选取:

    sO"1/7,s 1¨3/7,s2¨5/7,s3"6/7,

    s4¨6/7,s5¨1,s6¨l,s7¨1。

    可见,新图像将只有5个不同的灰度等级,于是我们可以重新定义其符号:

    s'O=l/7,s’1=3/7,s'2=5/7,s’3=6/7,s’4=l。

    因为由rO=O经变换映射到sO=1/7,所以有n0=790个象素取sO这个灰度值;由rl=3/7映射到sl=3/7,所以有1 02 3个象素取s 1这一灰度值;依次类推,有850个象素取s2=5/7这一灰度值;由于r3和r4均映射到s3=6/7这一灰度值,所以有656+329=98 5个象素都取这一灰度值;同理,有245+1 22+81=448个象素都取s4=1这一灰度值。上述值除以n=4096,便可以得到新的直方图。离散情况下不可能作到绝对的一致。

三、直方图的性质

    在直方图中,只知道具有某一灰度值的象素有多少个,但并不知道这些象素的位置;

    一个图像决定一个唯一的直方图,但是有时不同的图像具有相同的直方图;

    如果已知一幅图像中各个区域的直方图,则把它们加起来,就可得到这个图像的直方图。

四、直方图的典型用途

    对图像进行数字化时,利用直方图可以检查输入图像的灰度值在可利用的灰度范围内分配得是否适当;

    在医学方面,为了改善X射线操作人员的工作条件,可采用低辐射X射线曝光,但这样获得的X光片灰度级集中在暗区,导致某些图像细节无法看清,判读困难。通过直方图修正使灰度级分布在人眼合适的亮度区域,便可使X片中的细节清晰可见。

    可以根据直方图确定二值化的阈值;

    当物体部分的灰度值比其它部分的灰度值大时,可以用直方图求出物体的面积(实际上是象素数=灰度大于和等于q的象素的总和);

    当物体部分的灰度值比其它部分的灰度值大时,可以用直方图求出物体的面积(实际上是象素数=灰度大于和等于q的象素的总和);利用色彩直方图可以进行基于颜色的图象分割。

 

3.3几何变换

    几何变换可改变图象中物体(象素)之间的空间关系。这种运算可以看成将各象素在图象内移动的过程。

    几何变换中灰度级插值是必不可少的组成部分,因为图象一般用整

数位置处的象素来定义,某个点经变换后可能映射到多个点之间。

    仿射变换(Affine Transformation)和图象卷绕(ImageWarping)是两类常见的几何运算。

一、灰度级插值

  1、最近邻插值

  ★最简单的插值方法是最近邻插值,即选择离它所映射到的位置最近的输入象素的灰度值为插值结果。

  2、双线性插值:

二、空间变换

  空间变换包括可用数学函数表达的简单变换(如:平移、拉伸等仿射变换)和依赖实际图象而不易用函数形式描述的复杂变换(如对存在几何畸变的摄象机所拍摄的图象进行校正,需要实际拍摄栅格图象,根据栅格的实际扭曲数据建立空间变换;再如通过指定图象中一些控制点的位移及插值方法来描述的空间变换)。

  1、仿射变换(affine transfomation)

  仿射变换变换的公式如下:f(x)=AX=b

  其中A是变形矩阵,b是平移矢量。

  任何一个放射变换可以分解为尺度、伸缩、扭曲、旋转、平移的组合。

  2、基本变换

  (1)基本几何变换的定义

  对于原图象f(x,y),坐标变换函数

  x’=a(x,y);y’=b(x,y)

  唯一确定了几何变换:g(x’,y’)=f(a(x,y),b(x,y));

g(x,y)是目标图象。

(2)平移变换

(3)旋转变换:绕原点旋转(度

(4)水平镜像

(5)垂直镜像

(6)缩放变换

  3、透视变换(Persp ective Tmnsfomation)

  透视变换是中心投影的射影变换,在用非齐次射影坐标表达时是平面的分式线性变换,透视变换常用于图象的校正。

  4、几何校正

    几何校正是指按照一定目的将图象中的典型几何结构校正为没有变形的本来形式。

  例如,对如F的走廊图象进行校正,分两种情况,一种是针对地砖形状的校正,另一种是针对最右侧有把手的门形状的校正。

5.图象卷绕(Image Warping)

    图象卷绕是通过指定一系列控制点的位移来定义空间变换的图象变形处理。非控制点的位移根据控制点进行插值来确定。

 

3.4图像的局部预处理

一、平滑

l、邻域平均

  ★A、邻域的定义

  ★B、邻域平均法

  ★对一数字图像f(x,y),以(x,y)为中心,取一滑动窗口--邻域S(例如:

3×3的方窗)进行处理:

  ★缺点:去噪声的同时模糊了边界。

  ★注意:当邻域中心落在图像边界上:(O行/列或N-l行/列)时

  ★A、边界行/列点不处理;

  ★B I、扩充上下两行、左右两列(复制)。

2、高斯滤波

二、中值滤波

一般的中值滤波(Median Filtering)

    与加权平均方式的平滑滤波不同,中值滤波是将邻域中的象素按灰度级排序,取其中间值为输出象素。

  ★1)中值滤波可以保护图像边界;

  ★2)中值滤波窗口越人,滤波作用越强,但会丢失细节。

  中值滤波是一种非线性滤波,适用于滤除脉冲噪声或颗粒噪声,并能保护图像边缘。这里以一维中值滤波为例:一维中值滤波就是用一个含有奇数点的一维滑动窗口,将窗口正中的那点值用窗口内各点按大小排列的中值代替。假设窗口长为5点,其中的值为(80,90,200,11 O,1 20),那么此窗口内的中值即为11O。

三、边缘检测

  边缘是指图象中灰度发生急剧变化的区域。图象灰度的变化情况可以用灰度分布的梯度来反映,给定连续图象f(x,y),其方向导数在边缘法线方向上取得局部最大值。

    图象中一点的边缘被定义为一个矢量,模为当前点最人的方向导数,方向为该角度代表的方向。通常我们只考虑其模,而不关心方向。

四、梯度算子

(一)梯度算子可分为3类:

    ★1、使用差分近似图像函数导数的算子。有些是具有旋转不变性的(如:Laplacian算子),因此只需要一个卷积掩模来计算。其它近似一阶导数的算子使用几个掩模。

    ★2、基于图像函数二阶导数过零点的算子(如:M arr—Hild reth或Canny边缘检测算子。

    ★3、试图将图像函数与边缘的参数模型相匹配的箅子。

(二)第一类梯度算子

    拉普拉斯(Laplace)算子通常使用3×3的掩模,有时也使用强调中心象素或其邻接性的拉普拉斯算子(这种近似不再具有旋转不变性)。

    拉普拉斯算子的缺点:它对图像中的某些边缘产生双重响应。

图像锐化(shapeening)

    图像锐化的目的是图像的边缘更陡峭、清晰。锐化的输出图像f是根据下式从输入图像g得到的:f(i,j)=g(i,j)-c s(i,j),其中c是反映锐化程度的正系数,s(i,j)是图像函数锐化程度的度量,用梯度箅子来计算,Laplacian箅子常被用于这一目的。

Prewitt边缘检测算子

Sob e1边缘检测算子

(三)第二类梯度算子--二阶导数过零点算子

  根据图象边缘处的一阶微分(梯度)应该是极值点的事实,图象边缘处的二阶微分应为零,确定过零点的位置要比确定极值点容易得多也比较精确。右侧是Lena的过零点检测结果。

    为抑制噪声,可先作平滑滤波然后再作二次微分,通常采用高斯函数作平滑滤波,故有LoG(Laplacian of Gaussian)算子。

    高斯-拉普拉斯(LoG,Laplacian of Gaussian)算子。

    噪声点对边缘检测有较大的影响,效果更好的边缘检测器是高斯-拉普拉斯(Lo G)算子。它把高斯平滑滤波器和拉普拉斯锐化滤波器结合起来,先平滑掉噪声,再进行边缘检测,所以效果更好。

 

过零点检测

    在实现时一般用两个不同参数的高斯函数的差DoG(Difference ofGaussians)对图象作卷积来近似,这样检测来的边缘点称为f(x,y)的过零点(Zero—crossing)。

    与前面的微分算子出仅采用很小的邻域来检测边缘不同,过零点(Zero-crossing)的检测所依赖的范闱与参数。有关,但边缘位置与0的选择无关,若只关心全局性的边缘可以选取比较大的邻域(如0=4时,邻域接近40个象素宽)来获取明显的边缘。过零点检测更可靠,不易受噪声影响,但.缺点是对形状作了过分的平滑,例如会丢失欠明显的角点;还有产生环行边缘的倾向。

    产生环行边缘的原因是:图象的边缘多出现于亮度呈现突起或凹陷的位置上,其附近边缘法向线条上一阶微分会出现两个极值点,也就是会出现两个过零点。其整体结果是边缘呈现环行状态。

(四)Canny边缘提取【或边缘检测Edge Detection)

    在如下的三个标准意义下,Canny边缘检测算子对受闩噪声影响的阶跃型边缘是最优的:

  ★1)检测标准--不丢失重要的边缘,不应有虚假的边缘;

  ★2)定位标准--实际边缘与检测到的边缘位置之间的偏差最小;

  ★3)单响应标准--将多个响应降低为单个边缘响应。

Canny边缘检测算子的提出是基于以下概念:

    (1)边缘检测算子是针对一维信号和前两个最优标准(即检测标准和定位标准)表达的,用微积分方法可以得到完整的解;

    (2)如果考虑第三个标准(多个响应),需要通过数值优化的办法得到最优解,该最优滤波器可以有效地近似为标准差为(的高斯平滑滤波器的一阶微分,其误差小于20%,这是为了便于实现;这与M ar—Hild reth边缘检测算子很相似;它是基于LoG边缘检测算子的;

    (3)将边缘检测箅子推广到两维情况。阶跃边缘由位置、方向和可能的幅度(强度)来确定。可以证明将图象与一对称2 D Gaussian做卷积后再沿梯度方向微分,就构成了一个简单而有效的方向算子(回想一下,LoG过零点算子并不能提供边缘方向的信息,因为它使用了Laplacian滤波器)。

    (4)由于噪声引起的对单个边缘的(多个)虚假响应通常造成所谓的“纹状(streaking)"问题。一般而言,该问题在边缘检测中是非常普遍的。

    边缘检测算子的输出通常要做阈值化处理,以确定哪些边缘是突出的。

    纹状是指边缘轮廓断开的情形,是由算子输出超出或低于阈值的波动引起的。纹状现象可以通过带滞后的阈值处理(thresh01ding withhysteresis)来消除;

    如果边缘响应超过一给定高阈值时,这些象素点构成了某个尺度下的边缘检测算子的确定的输出。

    个别的弱响应通常对应于噪声,但是如果这些点是与某些具有强响应的点连接时,它们很可能是图象中真实的边缘。这些连接的象素点在当其响应超过一给定的低阈值时,就被当作边缘象素。

    这里的低阈值和高阈值需要根据对信噪比的估计来确定。

    (5)算子的合适尺度取决于图象中所含的物体情况。解决该未知数的方法是使用多个尺度,将所得信息收集起来。不同尺度的Canny检测算子由高斯的不同的标准差(来表示。有可能存在几个尺度的算子对边缘都给出突出的响应(即信噪比超过阈值);在这种情况下,选择具有最小尺度的算子,因为它定位最准确。

特征综合方法(Feature synthesis appmach)

    首先标记出所有由最小尺度算子得到的突出边缘。具有较大尺度(的算子产生的边缘根据它们(标记出的边缘)合成得到(即,根据从较小的尺度收集到的证据来预测较大尺度(应具有的作用效果)。然后将合成得到的边缘响应与较大尺度(的实际边缘响应作比较。仅当它们比通过合成预测的响应显著地强时,才将其标记为边缘。

    这一过程可以对一个尺度序列(从小到大)重复进行,通过不断加入较小的尺度中没有的边缘点的方式累积起来生成边缘图。

 

Canny边缘检测算法

    l、对于递增的标准差(重复(2)到(6)步骤);

    2、将图象f与尺度为高斯函数做卷积;

    3、对图象中的每个象素,估计局部边缘的法向n;

    4、用非最大抑制公式找到边缘的位置;

    5、用公式计算边缘强度;

    6、对边缘图像做滞后阈值化处理,消除虚假响应;

    7、用特征综合方法,收集来自多尺度的最终的边缘信息。  (通常的实现,省略该步。)