在我们进行图像识别的时候,往往是将图片中的特征来表示整张图片让计算机进行识别,基本上表示一个区域涉及两种选择:
下一步就是基于所选择的表示来描述区域
当我们关注的重点是形状特征时,可选择一种外部表示;而当关注的重点是内部属性如颜色和纹理时,可以选择一种内部表示。无论哪种情形,选择用来作为描绘子的特征都应尽可能地对大小、平移和旋转不敏感
图像分割技术以沿着边界或包含在区域中的像素的形式产生原始数据,标准做法是使用某种方案将分割后的数据精简为更便于描绘子计算的表示。下面让我们学习一下各种表示方法
该算法输出的是排序后的点序列,我们假设:
给定一个二值区域R或其边界,追踪R的边界或给定边界的算法由如下步骤组成:
链码用于表示由顺次连接的具有指定长度和方向的直线段组成的边界。这种表示基于这些线段的4连接或8连接。每个线段的方向使用一种数字编号方案编码,如图所示,以这种方向性数字序列表示的编码称为佛雷曼(Freeman)链码。
链码的一次差分为,通过计算链码中分隔两个相邻像素的方向变化的数(按逆时针方向计算前一个数字变化到后一个数字所需的步数),其中第一元素是通过使用链码的最后一个元素和第一个元素间的转变来计算得到的。例如,4方向链码0231,得到的一次差分为3212,其中3为1逆时针转到0需3步;2为0逆时针转到2需2步;1为2逆时针转到3需1步;2为3逆时针转到1需2步。
一副图像我们可以用多边形拟合它的形状。
我们的目的就是使用合适的最大可能单元大小,以最少的定点数来生产MPP,并且我们可以发现构成边界的多边形每个转向要么是一个凸定点,要么是一个凹顶点。
注意的是凹顶点(黑色)有一个对应的“镜像”顶点,位于凹顶点的对角处
因此,我们的算法就只需要关注这些顶点
MPP算法
令W(白)和B(黑)分别表示凸顶点镜像凹顶点
寻找MMP的算法使用两个“爬行”点:
算法首先令 W c = B c = V 0 W_c=B_c=V_0 Wc=Bc=V0( v 0 v_0 v0是一个MPP顶点), V L V_L VL表示最后一个MPP顶点, V k V_k Vk表示正在考察的当前顶点。
s g n ( a , b , c ) ≡ d e t ( A ) sgn(a,b,c)\equiv det(A) sgn(a,b,c)≡det(A)
(det(A)是A的行列式)
在 V L , V k V_L,V_k VL,Vk和两个爬行点之间存在如下三个条件之一:
如果条件1成立,则下一个MPP顶点是 W C W_C WC并且我们令 V L = W c V_L=W_c VL=Wc;然后我们令 W c = B c = V L W_c=B_c=V_L Wc=Bc=VL来重新初始化该算法,并在 V L V_L VL之后的下一个顶点继续执行算法
如果条件2成立,则 V k V_k Vk编程一个候选的MPP顶点。在这种情况下,如果 V k V_k Vk是凸顶点,则令 W c = V k W_c=V_k Wc=Vk;否则,我们置 B c = V k B_c=V_k Bc=Vk然后,我们使用列表中的下一顶点继续执行算法
如果条件3成立,则下一个MPP顶点是 B c B_c Bc,并且令 V L = B c V_L=B_c VL=Bc;然后我们令 W c = B c = V L W_c=B_c=V_L Wc=Bc=VL来重新初始化该算法,并用 V L V_L VL之后的下一个顶点继续执行算法
当算法再次到达第一个顶点时,算法结束,此时算法已经处理了多边形中的所有顶点。
链码边界的一次差分取决于起始点。一条基于链码的边界的形状数,定义为最小量级的一次差分,即对链码的一次差分进行循环,得到的值最小的差分码为形状数。
下图显示了xy平面内的一个K点数字边界,从任意点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)开始,以逆时针方向在该边界上行进时,会遇到坐标对 ( x 0 , y 0 ) , ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x k − 1 , y k − 1 ) (x_0,y_0),(x_1,y_1),(x_2,y_2),\dots,(x_{k-1},y_{k-1}) (x0,y0),(x1,y1),(x2,y2),…,(xk−1,yk−1)这些坐标可以表示为 x ( k ) = x k , y ( k ) = y k x(k)=x_k,y(k)=y_k x(k)=xk,y(k)=yk的形式,此外,每个坐标都可当做一个复数来处理
s ( k ) = x ( k ) + j y ( k ) s(k)=x(k)+jy(k) s(k)=x(k)+jy(k)
式中有 k = 0 , 1 , 2 , … , K − 1 k=0,1,2,\dots,K-1 k=0,1,2,…,K−1
s(k)的傅里叶变换为
a ( u ) = ∑ k = 0 K − 1 s ( k ) e − j 2 π u k / K a(u)=\sum_{k=0}^{K-1}s(k)e^{-j2\pi uk/K} a(u)=k=0∑K−1s(k)e−j2πuk/K
式中 u = 0 , 1 , 2 , … , K − 1 u=0,1,2,\dots,K-1 u=0,1,2,…,K−1复系数 a ( u ) a(u) a(u)称为边界的傅里叶描述子。这些系数的傅里叶反变换可恢复s(k)
s ( k ) = 1 K ∑ u = 0 K − 1 a ( u ) e j 2 π u k / K s(k)=\frac{1}{K}\sum_{u=0}^{K-1}a(u)e^{j2\pi uk/K} s(k)=K1u=0∑K−1a(u)ej2πuk/K
然而,假设仅使用前P个傅里叶系数而不使用所有系数,等同于上式中令 a ( u ) = 0 , u > P − 1 a(u)=0,u>P-1 a(u)=0,u>P−1结果 s ( k ) s(k) s(k)的如下近似:
s ^ ( k ) = 1 K ∑ u = 0 P − 1 a ( u ) e j 2 π u k / P \hat s(k)=\frac{1}{K}\sum_{u=0}^{P-1}a(u)e^{j2\pi uk/P} s^(k)=K1u=0∑P−1a(u)ej2πuk/P
尽管求 s ^ ( k ) \hat s(k) s^(k)的每个成分时仅使用了P项,但k的范围仍然是从0到K-1,也就是说,在近似边界中存在同样数量的点,但项数不像在每个点的重建中那么多
由于高频成分说明精细细节,而低频成分决定全局形状,因此P越小,边界丢失的细节就越多
如图(a),它显示了一段边界,图(b)显示了以任意变量 r r r的一维函数 g ( r ) g(r) g(r)描述的线段,该函数是这样获得的:先将该线段的两个端点连接,然后旋转该直线,直至其为水平线段,此时所有的点的坐标也旋转同样的角度
把 g ( r ) g(r) g(r)归一化为单位面积,并把它当作直方图来处理,换句话说, g ( r i ) g(r_i) g(ri)现在作为值 r i r_i ri出现的概率来处理,此时,r为一个随机变量,故n阶矩为
u n ( r ) = ∑ i = 0 K − 1 ( r i − m ) n g ( r i ) u_n(r)=\sum_{i=0}^{K-1}(r_i-m)^ng(r_i) un(r)=i=0∑K−1(ri−m)ng(ri)
式中, m = ∑ i = 0 K − 1 r i g ( r i ) m = \sum_{i=0}^{K-1}r_ig(r_i) m=i=0∑K−1rig(ri)
K是边界上的点数, u n ( r ) u_n(r) un(r)直接与 g ( r ) g(r) g(r)的形状相关。例如,二阶矩 u 2 ( r ) u_2(r) u2(r)度量曲线关于r的均值扩展程度,而三阶矩 u 3 ( r ) u_3(r) u3(r)度量曲线关于均值的对称性
拓扑学研究未受任何变形影响的图形的特质,前提是该图形未被撕裂或粘连。
例如,图(a)显示了一个带有两个孔洞的区域。如果一个拓扑描述子由该区域内的孔洞数量来定义,那么这种性质明显不受拉伸或旋转变换的影响。
另一个对区域描述有用的拓扑特性是连通分量的数量。如图4(b)显示了一个具有3个连通分量的区域。
图形中孔洞的数量 H 和连通分量的数量 C ,可用于定义欧拉数 E :E = C - H
欧拉数也是一种拓扑特性。例如,图所示的区域有分别等于 0 和 −1 的欧拉数。
描绘区域的一种总要方法是量化该区域的纹理内容
出现处理中用于描述区域纹理的三种主要方法是:
描述纹理的最简单方法之一是使用一副图像或一个区域的灰度级直方图的统计矩。令Z是表示灰度的一个随机变量,并令 p ( z i ) , i = 0 , 1 , 2 , … , L − 1 p(z_i),i=0,1,2,\dots,L-1 p(zi),i=0,1,2,…,L−1为相应的直方图,其中L是不同灰度级的数量,关于其均值的Z的第n阶矩为
u n ( z ) = ∑ i = 0 L − 1 ( z i − m ) n p ( z i ) u_n(z)=\sum_{i=0}^{L-1}(z_i-m)^np(z_i) un(z)=i=0∑L−1(zi−m)np(zi)
m是z的均值(平均灰度)
m = ∑ i = 0 L − 1 z i p ( z i ) m=\sum_{i=0}^{L-1}z_ip(z_i) m=i=0∑L−1zip(zi)
注意 u 0 = 1 , u 1 = 0 u_0=1,u_1=0 u0=1,u1=0二阶矩[方差 σ 2 ( z ) = u z ( z ) \sigma^2(z)=u_z(z) σ2(z)=uz(z)]在纹理描述中特别重要。它是灰度对比度的度量,可用于建立相对平灰度的描述子,例如度量
R ( z ) = 1 − 1 1 + σ 2 ( z ) R(z)=1-\frac{1}{1+\sigma^2(z)} R(z)=1−1+σ2(z)1
对于恒定灰度区域为0(该区域方差为0),而对于较大的 s i g m a 2 ( z ) sigma^2(z) sigma2(z)值,其接近于1,因为对灰度级图像方差值增大而增大的。
三阶矩是直方图偏斜度的度量,而四阶矩是直方图相对平坦度的度量,五阶矩和更高阶矩不容易与直方图形状联系起来,但它们的确提供了纹理内容的进一步量化辨别。
使用直方图计算得到的纹理度量不懈怠像素彼此之间的相对位置的信息,但是这个信息很重要,所以我们使用一种方法叫共生矩阵
令Q是定义两个像素彼此相对位置的一个算子,并考虑一副具有L个可能灰度级的图像f,令G为一个矩阵,其元素 g i j g_{ij} gij是灰度为 z i z_i zi和 z j z_j zj的像素对出现在f中有Q所指定的位置处的次数,按照这种方法形成的矩阵成为灰度共生矩阵
结构法的基本思想是,一个简单的“纹理基元”可借助一些规则用于形成更复杂的纹理模式,这些规则限制基元(或这些基元)的可能排列的数量。
对纹理描述有用的傅里叶频谱的三个特征: