图像空间域分析之图像统计特征

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011178262/article/details/84674376


我们可以将一幅数字图像视为一个 二维函数 I ( x , y ) I(x,y) ,其中x和y是空间坐标,在x-y平面中的任意空间坐标 ( x , y ) (x,y) 上的 幅值 I x y I_{xy} 称为该点 图像的灰度、亮度或强度

I x , y = I ( x , y ) I_{x,y} = I(x,y)

下面以 I x y I_{xy} 作为随机变量,分析二维数字图像的 统计特征。

数学期望

数学期望(Expectation) 就是随机变量 以概率为权数的加权平均值,以 级数 的形式表示为

E ( X ) = k = 1 x k p k E(X) = \sum_{k=1}^{\infty} x_k p_k

一幅数字图像的数学期望为其 灰度平均值,即所有像元灰度值的算数平均值

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)

方差

方差(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 ) \sqrt{D(X)} 为随机变量的 标准差(standard deviation),或 均方差(mean square deviation),记为 σ ( X ) \sigma(X)

扫描二维码关注公众号,回复: 5632474 查看本文章

二维数字图像的 灰度方差 反应的是图像中各个像素的灰度值与整个图像平均灰度值的离散程度,与图像的 对比度 有关。如果图片对比度小,那方差就小;如果图片对比度很大,那方差就大。

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]

协方差(矩阵)与相关系数

随机变量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}

协方差矩阵 可表示为

Σ = [ σ 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}

其中, σ i j = c o v ( X i , X j ) \sigma_{ij} = cov(X_i, X_j)

随机变量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)} }

数字图像 I A I_A I B I_B 的协方差为

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} ]

图像的相关系数表征的是两个不同波段图像的所含信息的重叠程度,相关系数越大,重叠度越高,反之越低。

ρ 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} }

下面计算 lena图像 灰度图高斯模糊图 的相关系数
image_gray.pngimage_gauss.png

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 k k 阶原点矩,简称 k k 阶矩 E [ X k ] E[X^k]

  • X X k k 阶中心矩 E [ X E ( X ) ] k E[X-E(X)]^k

  • X X Y Y k + l k+l 阶混合矩 E [ X k Y l ] E [ X^k Y^l ]

  • X X Y Y k + l k+l 阶混合中心矩 E { [ X E ( X ) ] k [ Y E ( Y ) ] l } E \{ [X-E(X)]^k [Y-E(Y)]^l \}

显然, X X 的数学期望 E ( X ) E(X) X X 的一阶原点矩,方差 D ( X ) D(X) X X 的二阶中心矩,协方差 c o v ( X , Y ) cov(X,Y) X X Y Y 的 1+1阶混合中心矩

图像矩

图像的矩(Image Moments)主要表征了图像区域的几何特征,又称为 几何矩

Raw Moments

二维灰度图像 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 \}

零阶矩

M 00 = x y I ( x , y ) M_{00} = \sum_{x} \sum_{y} I(x,y)

  • 当图像为二值图时, M 00 M_{00} 就是这个图像上白色区域的总和;因此, M 00 M_{00} 可以用来求二值图像(轮廓、连通域)的面积

一阶矩

M 10 = x y x I ( x , y ) M_{10} = \sum_{x} \sum_{y} x \cdot I(x,y)

M 01 = x y y I ( x , y ) M_{01} = \sum_{x} \sum_{y} y \cdot I(x,y)

  • 当图像为二值图时, I I 只有 0 和 1 两个值, M 10 M_{10} 就是图像上所有白色区域 x坐标值 的累加
  • 一阶矩可以用来求图像的 质心(Centroid),这种方法对噪声不太敏感:

( 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)

  • 一阶矩还可以用来求 图像块几何中心的方向,即几何中心 O O 与 质心 C C 连接的 方向向量 O C \vec{OC} 的方向(计算中 x , y x,y 均以几何中心 O O 为原点):

θ = a r c t a n ( M 01 M 10 ) \theta = arctan( \frac{M_{01}}{M_{10}} )

通过 取以关键点kp为几何中心的图像块 计算其 一阶矩 进而计算 该点方向,示例代码如下:

int m01 = 0;
int m10 = 0;
for(int y=-half_patch_size; y<half_patch_size; ++y){
  for(int x=-half_patch_size; x<half_patch_size; ++x){
    m01 += y * image.at<uchar>(kp.pt.y+y, kp.pt.x+x);
    m10 += x * image.at<uchar>(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)

M 02 = x y y 2 I ( x , y ) M_{02} = \sum_{x} \sum_{y} y^2 \cdot 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)

Central Moments

μ 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 \}

利用二阶中心矩可以求图像的方向,图像的 协方差矩阵

c o v [ I ( x , y ) ] = [ μ 20 μ 11 μ 11 μ 02 ] cov[I(x,y)] = \begin{bmatrix} \mu_{20}&#x27; &amp; \mu_{11}&#x27; \\ \mu_{11}&#x27; &amp; \mu_{02}&#x27; \end{bmatrix}

求得图像方向为

θ = 1 2 a r c t a n ( 2 μ 11 μ 20 μ 02 ) \theta = \frac{1}{2} arctan(\frac{2\mu_{11}&#x27;}{\mu_{20}&#x27;-\mu_{02}&#x27;})

其中

μ 20 = μ 20 μ 00 = M 20 M 00 x c 2 \mu_{20}&#x27; = \frac{\mu_{20}}{\mu_{00}} = \frac{M_{20}}{M_{00}} - x_c^2

μ 02 = μ 02 μ 00 = M 02 M 00 y c 2 \mu_{02}&#x27; = \frac{\mu_{02}}{\mu_{00}} = \frac{M_{02}}{M_{00}} - y_c^2

μ 11 = μ 11 μ 00 = M 11 M 00 x c y c \mu_{11}&#x27; = \frac{\mu_{11}}{\mu_{00}} = \frac{M_{11}}{M_{00}} - x_c y_c

参考资料

猜你喜欢

转载自blog.csdn.net/u011178262/article/details/84674376