I x , y = I ( x , y ) I_{x,y} = I(x,y) Ix,y=I(x,y)
下面以 I x y I_{xy} Ixy 作为随机变量,分析二维数字图像的 统计特征。
数学期望(Expectation) 就是随机变量 以概率为权数的加权平均值,以 级数 的形式表示为
E ( X ) = ∑ k = 1 ∞ x k p k E(X) = \sum_{k=1}^{\infty} x_k p_k E(X)=k=1∑∞xkpk
一幅数字图像的数学期望为其 灰度平均值,即所有像元灰度值的算数平均值
I ˉ = 1 M ⋅ N ∑ x = 1 M ∑ y = 1 N I ( x , y ) \bar{I} = \frac{1}{M \cdot N} \sum_{x=1}^{M} \sum_{y=1}^{N} I(x,y) Iˉ=M⋅N1x=1∑My=1∑NI(x,y)
方差(variance) 是对随机变量离散程度的度量。
D ( x ) = E [ X − E ( X ) ] 2 = E ( X 2 ) − [ E ( X ) ] 2 D(x) = E[X-E(X)]^2 = E(X^2) - [E(X)]^2 D(x)=E[X−E(X)]2=E(X2)−[E(X)]2
称 D ( X ) \sqrt{D(X)} D(X) 为随机变量的 标准差(standard deviation),或 均方差(mean square deviation),记为 σ ( X ) \sigma(X) σ(X)
二维数字图像的 灰度方差 反应的是图像中各个像素的灰度值与整个图像平均灰度值的离散程度,与图像的 对比度 有关。如果图片对比度小,那方差就小;如果图片对比度很大,那方差就大。
v a r ( I ) = 1 M ⋅ N ∑ x = 1 M ∑ y = 1 N [ I ( x , y ) − I ˉ ] var(I) = \frac{1}{M \cdot N} \sum_{x=1}^{M} \sum_{y=1}^{N} \left[ I(x,y) - \bar{I} \right] var(I)=M⋅N1x=1∑My=1∑N[I(x,y)−Iˉ]
随机变量X、Y的 协方差(covariance) 为
c o v ( X , Y ) = E { [ X − E ( X ) ] [ Y − E ( Y ) ] } = E [ X Y ] − E ( X ) E ( Y ) = ∑ i ∑ j [ x i − E ( X ) ] [ y j − E ( Y ) ] p i j \begin{aligned} cov(X,Y) &= E \{ [X-E(X)][Y-E(Y)] \} = E[XY] - E(X)E(Y) \\ &= \sum_{i} \sum_{j} [x_i-E(X)] [y_j-E(Y)] p_{ij} \end{aligned} cov(X,Y)=E{[X−E(X)][Y−E(Y)]}=E[XY]−E(X)E(Y)=i∑j∑[xi−E(X)][yj−E(Y)]pij
协方差矩阵 可表示为
Σ = [ σ 11 σ 12 … σ 1 n σ 21 σ 22 … σ 2 n ⋮ ⋮ ⋱ ⋮ σ n 1 σ n 2 … σ n n ] \Sigma = \begin{bmatrix} \sigma_{11} & \sigma_{12} & \ldots & \sigma_{1n} \\ \sigma_{21} & \sigma_{22} & \ldots & \sigma_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ \sigma_{n1} & \sigma_{n2} & \ldots & \sigma_{nn} \\ \end{bmatrix} Σ=⎣⎢⎢⎢⎡σ11σ21⋮σn1σ12σ22⋮σn2……⋱…σ1nσ2n⋮σnn⎦⎥⎥⎥⎤
其中, σ i j = c o v ( X i , X j ) \sigma_{ij} = cov(X_i, X_j) σij=cov(Xi,Xj)
随机变量X、Y的 相关系数(correlation coefficient) 或 标准协方差(standard covariance) 为
ρ X Y = c o v ( X , Y ) D ( X ) D ( Y ) \rho_{XY} = \frac{ cov(X,Y) }{ \sqrt{D(X)} \sqrt{D(Y)} } ρXY=D(X)D(Y)cov(X,Y)
数字图像 I A I_A IA 和 I B I_B IB 的协方差为
c o v ( I A , I B ) = 1 M ⋅ N ∑ x = 1 M ∑ y = 1 N [ I A ( x , y ) − I A ˉ ] [ I B ( x , y ) − I B ˉ ] cov(I_A, I_B) = \frac{1}{M \cdot N} \sum_{x=1}^{M} \sum_{y=1}^{N} [ I_A(x,y) - \bar{I_A} ] [ I_B(x,y) - \bar{I_B} ] cov(IA,IB)=M⋅N1x=1∑My=1∑N[IA(x,y)−IAˉ][IB(x,y)−IBˉ]
图像的相关系数表征的是两个不同波段图像的所含信息的重叠程度,相关系数越大,重叠度越高,反之越低。
ρ I A I B = ∑ x = 1 M ∑ y = 1 N [ I x y A − I A ˉ ] [ I x y B − I B ˉ ] ( ∑ x = 1 M ∑ y = 1 N [ I x y A − I A ˉ ] ) 1 / 2 ( ∑ x = 1 M ∑ y = 1 N [ I x y B − I A ˉ ] ) 1 / 2 \rho_{I_A I_B} = \frac {\sum_{x=1}^{M} \sum_{y=1}^{N} [ I^A_{xy} - \bar{I_A} ] [ I^B_{xy} - \bar{I_B} ]} { \bigg(\sum_{x=1}^{M} \sum_{y=1}^{N} [ I^A_{xy} - \bar{I_A} ]\bigg)^{1/2} \bigg(\sum_{x=1}^{M} \sum_{y=1}^{N} [ I^B_{xy} - \bar{I_A} ]\bigg)^{1/2} } ρIAIB=(∑x=1M∑y=1N[IxyA−IAˉ])1/2(∑x=1M∑y=1N[IxyB−IAˉ])1/2∑x=1M∑y=1N[IxyA−IAˉ][IxyB−IBˉ]
img = Image.open('lena.bmp').convert('L')
im = np.asarray(img)
im_blur = ndimage.gaussian_filter(im, 4)
a = np.corrcoef(im.flatten(), im_blur.flatten())
print a
计算得到其相关系数为 0.95346
X X X 的 k k k阶原点矩,简称 k k k阶矩: E [ X k ] E[X^k] E[Xk]
X X X 的 k k k阶中心矩: E [ X − E ( X ) ] k E[X-E(X)]^k E[X−E(X)]k
X X X 和 Y Y Y 的 k + l k+l k+l阶混合矩: E [ X k Y l ] E [ X^k Y^l ] E[XkYl]
X X X 和 Y Y Y 的 k + l k+l k+l阶混合中心矩: E { [ X − E ( X ) ] k [ Y − E ( Y ) ] l } E \{ [X-E(X)]^k [Y-E(Y)]^l \} E{[X−E(X)]k[Y−E(Y)]l}
显然, X X X 的数学期望 E ( X ) E(X) E(X) 是 X X X 的一阶原点矩,方差 D ( X ) D(X) D(X) 是 X X X的二阶中心矩,协方差 c o v ( X , Y ) cov(X,Y) cov(X,Y) 是 X X X 和 Y Y Y 的 1+1阶混合中心矩
图像的矩(Image Moments)主要表征了图像区域的几何特征,又称为 几何矩。
二维灰度图像 I I I 的矩定义为
M p q = ∑ x ∑ y x p y q I ( x , y ) , p , q ∈ { 0 , 1 , 2 , … } M_{pq} = \sum_{x} \sum_{y} x^p y^q I(x,y), \quad p,q \in \{ 0,1,2, \ldots \} Mpq=x∑y∑xpyqI(x,y),p,q∈{0,1,2,…}
零阶矩 为
M 00 = ∑ x ∑ y I ( x , y ) M_{00} = \sum_{x} \sum_{y} I(x,y) M00=x∑y∑I(x,y)
一阶矩 为
M 10 = ∑ x ∑ y x ⋅ I ( x , y ) M_{10} = \sum_{x} \sum_{y} x \cdot I(x,y) M10=x∑y∑x⋅I(x,y)
M 01 = ∑ x ∑ y y ⋅ I ( x , y ) M_{01} = \sum_{x} \sum_{y} y \cdot I(x,y) M01=x∑y∑y⋅I(x,y)
( x c , y c ) = ( M 10 M 00 , M 01 M 00 ) (x_c, y_c) = \bigg( \frac{M_{10}}{M_{00}}, \frac{M_{01}}{M_{00}} \bigg) (xc,yc)=(M00M10,M00M01)
θ = a r c t a n ( M 01 M 10 ) \theta = arctan( \frac{M_{01}}{M_{10}} ) θ=arctan(M10M01)
通过 取以关键点kp为几何中心的图像块 计算其 一阶矩 进而计算 该点方向,示例代码如下:
int m01 = 0;
int m10 = 0;
for(int y=-half_patch_size; y(kp.pt.y+y, kp.pt.x+x);
m10 += x * image.at(kp.pt.y+y, kp.pt.x+x);
}
}
kp.angle = std::atan2(m01, m10)/CV_PI*180.0;
二阶矩 为
M 20 = ∑ x ∑ y x 2 ⋅ I ( x , y ) M_{20} = \sum_{x} \sum_{y} x^2 \cdot I(x,y) M20=x∑y∑x2⋅I(x,y)
M 02 = ∑ x ∑ y y 2 ⋅ I ( x , y ) M_{02} = \sum_{x} \sum_{y} y^2 \cdot I(x,y) M02=x∑y∑y2⋅I(x,y)
M 11 = ∑ x ∑ y x ⋅ y ⋅ I ( x , y ) M_{11} = \sum_{x} \sum_{y} x \cdot y \cdot I(x,y) M11=x∑y∑x⋅y⋅I(x,y)
μ p q = ∑ x ∑ y ( x − x c ) p ( y − y c ) q I ( x , y ) , p , q ∈ { 0 , 1 , 2 , … } \mu_{pq} = \sum_{x} \sum_{y} (x-x_c)^p (y-y_c)^q I(x,y), \quad p,q \in \{ 0,1,2, \ldots \} μpq=x∑y∑(x−xc)p(y−yc)qI(x,y),p,q∈{0,1,2,…}
利用二阶中心矩可以求图像的方向,图像的 协方差矩阵 为
c o v [ I ( x , y ) ] = [ μ 20 ′ μ 11 ′ μ 11 ′ μ 02 ′ ] cov[I(x,y)] = \begin{bmatrix} \mu_{20}' & \mu_{11}' \\ \mu_{11}' & \mu_{02}' \end{bmatrix} cov[I(x,y)]=[μ20′μ11′μ11′μ02′]
求得图像方向为
θ = 1 2 a r c t a n ( 2 μ 11 ′ μ 20 ′ − μ 02 ′ ) \theta = \frac{1}{2} arctan(\frac{2\mu_{11}'}{\mu_{20}'-\mu_{02}'}) θ=21arctan(μ20′−μ02′2μ11′)
其中
μ 20 ′ = μ 20 μ 00 = M 20 M 00 − x c 2 \mu_{20}' = \frac{\mu_{20}}{\mu_{00}} = \frac{M_{20}}{M_{00}} - x_c^2 μ20′=μ00μ20=M00M20−xc2
μ 02 ′ = μ 02 μ 00 = M 02 M 00 − y c 2 \mu_{02}' = \frac{\mu_{02}}{\mu_{00}} = \frac{M_{02}}{M_{00}} - y_c^2 μ02′=μ00μ02=M00M02−yc2
μ 11 ′ = μ 11 μ 00 = M 11 M 00 − x c y c \mu_{11}' = \frac{\mu_{11}}{\mu_{00}} = \frac{M_{11}}{M_{00}} - x_c y_c μ11′=μ00μ11=M00M11−xcyc