原点矩、中心距、Hu矩

最早接触矩是在《概率论与数理统计》中,下面给出书中的对于矩的定义:

设$X$为随机变量,$c$为常数,$k$为正整数。则量$E[(X - c)^k]$称为$X$关于$c$点的$k$阶矩。

有两种特殊的情况:

(1). 当$c= 0$时,$\alpha_{k} = E(X^k)$称为$X$的$k$阶原点矩;

(2). 当$c = E(X)$时,$\mu_{k} = E[(X-EX)^k]$称为$X$的$k$阶中心矩。

明显,一阶原点矩为期望,一阶中心距$\mu_1 = 0$,二阶中心矩$\mu_2$为随机变量$X$的方差$Var(X)$。

在统计学上,高于四阶的矩极少使用,三、四阶矩有些应用,但也不多。$\mu_3$可用于衡量分布是否有偏,$\mu_4$用于衡量分布(密度)在均值附近的陡峭程度。

在图像处理中,无论是原点矩还是中心矩,不能同时具备尺度、旋转和平移不变性,中心矩仅具备平移不变性,而归一化中心矩不仅具备平移不变性,还具有尺度不变性。而Hu矩是利用二阶和三阶归一化中心矩构造出的7个不变矩,在1962年,Hu.M.K证明了它们的旋转、尺寸和平移不变性。

下面给出图像中,各类矩的计算方式:

(p+q)阶原点矩定义为: $$ \alpha_{pq} = \iint{x^p y^q f(x,y)dxdy} $$

(p+q)阶中心距定义为: $$ \mu_{pq} = \iint{(x-\widetilde{x})^p (y - \widetilde{y})^q f(x,y)dxdy} $$

(p+q)阶归一化原点矩定义为: $$ \xi_{pq} = \frac{\alpha_{pq}}{\alpha_{00}} $$

(p+q)阶归一化中心矩定义为: $$ \eta_{pq} = \frac{\mu_{pq}}{\alpha_{00}} $$

Hu矩定义为:

$$ \begin{array}{l} \phi_1 = \eta_{20} + \eta_{02} \\ \phi_2 = (\eta_{20} - \eta_{02})^2 + 4\eta_{11}^2 \\ \phi_3 = (\eta_{20} - 3 \eta{12})^2 + 3(\eta_{21} - \eta_{03})^2 \\ \phi_4 = (\eta_{30} + \eta_{12})^2 + (\eta_{21} + \eta_{03})^2 \\ \phi_5 = (\eta_{30} + 3\eta_{12})(\eta_{30} + \eta_{12})[(\eta_{30} + \eta_{12})^2 - 3(\eta_{21}+\eta_{03})^2] + (3\eta_{21}-\eta_{03})(\eta_{21} + \eta_{03})[3(\eta_{30}+\eta_{12})^2 - (\eta_{21}+\eta_{03})^2] \\ \phi_6 = (\eta_{20} - \eta_{02})[(\eta_{30}+\eta_{12})^2 - (\eta_{21} + \eta_{03})^2] + 4\eta_{11}(\eta_{30} + \eta_{12})(\eta_{21} + \eta_{03}) \\ \phi_7 = (3\eta_{21}-\eta_{03}) (\eta_{30} + \eta_{12})[(\eta_{30}+\eta_{12})^2 - 3(\eta_{21}+\eta_{30})^2] + (3\eta_{21}-\eta_{30})(\eta_{21}+\eta_{30})[3(\eta_{30}+\eta_{12})^2 - (\eta_{21}+\eta_{30})^2] \end{array} $$

区域特征

这里所谓的区域广义上指二值图像中的前景部分。

最简单的特征是区域的面积,可用零阶原点矩表示: $$ \alpha_{00} = A = \sum_{(x,y) \in R} 1 = \sum_{i = 1}^{n}(ce_i - cs_i + 1) $$

其中,$n$表示行程数,$cs_i$、$ce_i$表示第$i$个行程的开始和结束列位置。

而要获得区域的重心位置,则需要使用到归一化原点矩: $$ (x_g, y_g) = (\xi_{10}, \xi_{01}) = \left( \frac{\sum_{R}x}{\alpha_{00}}, \frac{\sum_{R}y}{\alpha_{00}} \right) $$

值得注意的是,虽然重心计算过程都是使用像素精度的数据,但是它是一个亚像素精度的特征。

二阶中心矩的使用可以确定区域的方位和范围。例如区域的椭圆参数:长轴$r_1$,短轴$r_2$以及相对于横轴的夹角$\theta$。

$$ \begin{array}{l} r_1 = \sqrt{2(\eta_{20} + \eta_{02} + \sqrt{(\eta_{20}-\eta_{02})^2 + 4\eta_{11}^2})} \\[2ex] r_2 = \sqrt{2(\eta_{20} + \eta_{02} - \sqrt{(\eta_{20}-\eta_{02})^2 + 4\eta_{11}^2})}\\[2ex] \theta = -\frac{1}{2}\arctan{\frac{2\eta_{11}}{\eta_{02}-\eta_{20}}} \end{array} $$

通过椭圆特征可以推导出一个非常有用的特征——各向异性,它可用来描述区域细长程度: $$ anisometry = \frac{r_1}{r_2} $$

与此相关的还有蓬松度(Bulkiness)结构因子(Structure Factor)

$$ \begin{align} \text{bulkiness} &= \frac{\pi * r_1 * r_2}{\alpha_{00}}\\ \text{sturcture factor} &= anisometry * bulkiness - 1 \end{align} $$

另外,还有的区域特征如下:

  1. 凸性(convexity),区域面积和该区域凸包面积的比值,用于描述区域的紧凑程度,取值在$0$和$1$之间: $$ convexity = \frac{\alpha_{00}}{S_{convex hull}} $$

  2. 轮廓长度(L), 区域轮廓线段的欧几里得距离和;

  3. 紧性(compactness),与凸性意义类似。所有圆形区域的紧性特征值都为1,其他区域紧性特征值更大。 $$ compactness = \frac{L^2}{4*\pi*\alpha_{00}} $$

  4. 圆度(circularity),描述区域近视于圆形的程度

$$ circularity = \min(1, \frac{\alpha_{00}}{{max\_dist}^2 * \pi}) $$

其中, max_dist为轮廓上到中心的最远距离。这个特征值对于越小的区域近视误差越大。该特征对于大的凸起、孔及未连接区域的响应较大。

  1. 轮廓点到中心点平均距离及方差
$$ \begin{align} m_R &= \frac{1}{K}\sum_{k= 0}^{K-1}||(x_k, y_k) - (\bar{x}, \bar{y})|| \\[2ex] \sigma_R^2 &= \frac{1}{K}\sum_{k=0}^{K-1}[||(x_k, y_k) - (\bar{x}, \bar{y})|| - m_R]^2 \end{align} $$

其中,$K$表示轮廓点个数;

通过这两个属性能推出以下特征:

$$ \begin{align} roundness &= 1 - \frac{\sigma_R}{m_R} \\ sides &= 1.4111 * \left( \frac{m_R}{\sigma_R}\right)^{0.4724} \end{align} $$

另外, $\frac{m_R}{\sigma_R}$有以下三个性质:

(1). 数值越大,形状越趋于圆形;

(2). 从数字图像获得的值与连续图像中获得的值一致;

(3). 与方向和面积无关。

灰度值特征

有了区域R后,可以结合原始图像直接提取到区域R中的灰度信息;例如,最大灰度值最小灰度值

$$ \begin{align} g_{min} &= \min_{(x,y) \in R}f(x,y)\\ g_{max} &= \max_{(x,y) \in R}f(x,y) \end{align} $$

这两个值方便后续对每个单独区域进行归一化处理操作。

平均灰度值可以对区域内的亮度进行一个度量,结合灰度值方差,可以对区域内的灰度值进行变换:

$$ \begin{align} \bar{g_i} &= \frac{1}{\alpha_{00}^i}\sum_{(x,y) \in R_i}f(x,y)\\[2ex] s^2 &= \frac{1}{\alpha_{00}^i - 1}\sum_{(x,y) \in R_i}[f(x,y) - \bar{g_i}]^2 \end{align} $$

这里$\alpha_{00}^i$是指第$i$个区域的面积。

灰度直方图累计直方图也属于灰度值特征。基于直方图可计算出中值灰度值灰度各向异性:

$$ \begin{align} g_{median} &= \min{\{g:c_g \geq 0.5\}} \\[2ex] \text{entropy} &= -\sum_{0}^{255}p_i * \log_2{(p_i)} \\[2ex] \text{gray_anisotropy} &= \frac{\sum_{0}^{g_{median}}p_i * \log_2{(p_i)}}{entropy} \end{align} $$

与区域矩类似,灰度值矩同样能计算出灰度值面积、重心以及椭圆参数等;不同的在于,使用灰度值特征,可以将图像视作一个模糊集合,不必对每个像素是否属于某个物体做硬性判断,而是用模糊隶属关系值确定此像素属于此物体的百分比程度。模糊集理论可参考《数字图像处理》一书中的介绍。下面给出两个基于模糊集计算的特征:fuzzy_perimeterfuzzy_entropy

fuzzy_perimeter用于确定像素点与其相邻像素点隶属程度差异;

fuzzy_entropy用于度量与白色图像或者黑色图像近视程度。

$$ \begin{array}{l} \begin{aligned} fuzzy_{perimeter} = \sum_{x = 1}^{M-1}\sum_{y =1}^{N-1}|u_X(f(x,y))-u_X(f(x,y+1))| \\ + \sum_{x = 1}^{M-1}\sum_{y =1}^{N-1}|u_X(f(x,y))-u_X(f(x+1,y))| \end{aligned} \\[4ex] fuzzy_{entropy} = \frac{1}{MN\ln2}\sum_{l}T_e(l)h(l) \end{array} $$

其中:

$$ \begin{array}{l} u_X(x) = \begin{cases} 0 , & x \leq a \\ 2\left(\frac{x-a}{c-a}\right)^2, & a < x < b \\ 1-2\left(\frac{x-a}{c-a}\right)^2, & b< x \leq c \\ 1, & c \leq x \end{cases} \\[2ex] T_e(l) = -u(l)\ln u(l) - (1 - u(l))\ln(1-u(l)) \\[2ex] h(l)\text{为图像直方图取值} \end{array} $$

轮廓特征

Blob除了使用行程编码的区域描述,还可以使用轮廓控制点进行描述。而基于轮廓控制点则可快速的获得凸包、最小外接圆和任意方向的最小外接矩形等。当然,利用轮廓控制点计算矩也是我们关心的问题,而其中最为关心的问题就是轮廓是否存在面积,显然面积必须是围绕一个区域的轮廓才存在这些矩特征,也就是说轮廓必须是闭合的且不能自相交。基于轮廓控制点计算矩的方式如下:

$$ \begin{array}{l} \alpha_{00} = \frac{1}{2}\sum_{i=1}^{n}(x_{i-1}y_i-x_iy_{i-1})\\ \alpha_{10} = \frac{1}{6\alpha_{00}}\sum_{i=1}^{n}(x_{i-1}y_i-x_iy_{i-1})(x_{i-1}+x_i)\\ \alpha_{01} = \frac{1}{6\alpha_{00}}\sum_{i=1}^{n}(x_{i-1}y_i - x_iy_{i-1})(y_{i-1}+y_i) \\ \alpha_{20} = \frac{1}{12\alpha_{00}}\sum_{i=1}^{n}(x_{i-1}y_i-x_iy_{i-1})(x_{i-1}^2 + x_{i-1}x_i+x_i^2)\\ \alpha_{02} = \frac{1}{12\alpha_{00}}\sum_{i=1}^{n}(x_{i-1}y_i-x_iy_{i-1})(y_{i-1}^2+y_{i-1}y_i+y_i^2)\\ \alpha_{11} = \frac{1}{24\alpha_{00}}\sum_{i=1}^{n}(x_{i-1}y_i-x_iy_{i-1})(2x_{i-1}y_{i-1}+x_{i-1}y_i+x_iy_{i-1}+2x_iy_i) \end{array} $$

基于轮廓矩,同样可以获得轮廓面积、重心以及椭圆属性等其他特征。