参考资料:
- M. K. Hu, “Visual Pattern Recognition by Moment Invariants”, IRE Trans. Info. Theory, vol. IT-8, pp.179–187, 1962
- J. Flusser: “On the Independence of Rotation Moment Invariants”, Pattern Recognition, vol. 33, pp. 1405–1410, 2000.
- J. Flusser and T. Suk, “Rotation Moment Invariants for Recognition of Symmetric Objects”, IEEE Trans. Image Proc., vol. 15, pp. 3784–3790, 2006.
导论
昨晚概率论刚刚上到矩(moment),正好之前opencv的时候概念又看到过非常神秘的Hu矩(Hu moments)即8个由3阶以内中心矩构成的(平移、缩放和)旋转不变量。今天无聊时维基搜了一波,发现出乎意料地有趣。
Flusser的论文中,利用了复数,很轻松地便证明了矩的旋转不变性(复数nb!),并指出了Hu矩中第三组矩是冗余的,且在三阶以内有8个旋转不变量,Hu矩去掉冗余的一个后还少了一个。
矩
概率论中也有矩,设随机变量X的概率密度函数为f(x),则n阶原点矩为
μn=∫−∞∞xnf(x)dx
在图像处理中,矩的定义也是类似的,设图像为f(x,y)
Mpq=∫−∞∞∫−∞∞(x−xˉ)p(y−yˉ)qf(x,y)dxdy
并且一般把p+q叫做矩的阶数。只不过通常用到的是中心矩,这样得到的矩和图像的位置无关
μpq=∫−∞∞∫−∞∞(x−xˉ)p(y−yˉ)qf(x,y)dxdy
而且还是归一化的中心矩,这样使得矩和图像的大小也无关
ηpq=μ00(1+2i+j)μpq
接下来的问题是,能不能找到什么方法,使得矩和旋转也无关呢?
复矩
Flusser的方法非常地有趣,他先是定义了复矩(complex moment)
cpq=∫−∞∞∫−∞∞(x+iy)p(x−iy)qf(x,y)dxdy
其中i为虚数单位。复矩显然是普通的矩的多项式,利用二项式定理可以计算,不多解释。
如果令z=x+iy,且g(z)=f(x,y),则可以改写为
cpq=∫−∞∞∫−∞∞zpzˉqg(z)dS
显然可以看出,p和q交换后结果为原来的共轭,即cpq=cqp。如果p=q,则结果为实数,否则结果通常应该是复数,为了获得实数的结果,可以单独取实部和虚部。
旋转
在复数的情况下,旋转的定义非常简单,z绕原点逆时针旋转θ角的结果是
z′=eiθz
把g(z)旋转θ角,则新的复矩
cpq′=∫−∞∞∫−∞∞zpzˉqg(eiθz)dS=ei(q−p)θcpq
显然,对于若干个复矩的乘积,只要p−q一项加起来是0,则得到的乘积就是旋转不变量。
三阶及以下的旋转不变量的一组基(以乘法可以组成别的不变量)包括:
ψ1ψ2ψ3+iψ4ψ5+iψ6=c11=c21c12=c20c122=c30c123
其中后两行的结果通常为复数,前两行的结果保证为实数。c12也可以是c01,只要q−p=1即可。
一阶时c01=0,没有意义。
完备性
当c12c21=0时,可以证明别的不变量可以由他们组成,如
c20c02=c212c122c122c212c20c02=(c21c12)2∣c20c12∣2=ψ22ψ32+ψ42
同样的,
c30c03=c123c213c123c213c03c30=ψ23ψ52+ψ62
Hu矩
至此,可以发现,Hu的那组不变量其实并不是互相独立的。
I1I2I3I4I5I6I7=ψ1=ψ22ψ32+ψ42=ψ23ψ52+ψ62=ψ2=ψ5=ψ3=ψ6
但是根据下面关于旋转对称性的讨论,I2和I3在图像具有2重或3重旋转对称性时仍为非0值,并不是完全地没有意义。
Flusser的论文中说c20c122和c302c023是独立于{Ik∣k=1…7} 的,但是由上可以看出
Re(c20c122)Im(c20c122)c302c023=ψ3=ψ4=I2I42−I62=(c21c12)6(c30c123)2(c20c122)3
只不过涉及开方运算,比较复杂罢了。
镜像
那么将图像镜像后,获得的这些旋转不变量是否受影响呢?在复数中讨论这个问题也惊人地简单。
cpq∗=∫−∞∞∫−∞∞zpzˉqgˉ(z)dS=∫−∞∞∫−∞∞zˉpzqg(z)dS=cpq=cqp
也就是说,这些不变量中,实部在镜像变换中不受影响,而虚部在镜像变换中变为相反数。
旋转对称性
Flusser的另一篇论文里考虑了旋转对称性,这里复数的好处更是凸显。若f(x,y)具有N次旋转对称性,即旋转2π/N角度后与原图形重合,则此时非常多的旋转不变量都是0。
即若
g(z)=e2πi/Ng(z)
则
cpq=exp(N2πi(p−q))⋅cpq
除非p−q不是N的倍数,cpq总是为0。当要处理的图像具有旋转对称性时,由于之前选取基的时候总是有一项是p−q=1(这是作者构造这组基的技巧所在),则这组基中大部分的不变量在没有误差的情况下都应该是0!
这说明,如果想要利用矩的不变量来进行分析,一定要注意所选取图像的对称性,若选取的基和Flusser前面选的{ψk∣k=1…6)},那么对于任何具有旋转对称性的图像,所得到的结果除了ψ1全是0,实在是非常辣鸡。相比之下,Hu的那组还有很多量非0,仍有判断价值。