四元数奇异值分解算法

来源:互联网 发布:java shiro视频教程 编辑:程序博客网 时间:2024/05/17 06:57

四元数由一个实部和三个虚部构成,三个虚部彼此正交。四元数P = w + xi + yj +z k, i ,j , k 均是虚数单位。也就是说, 四元数描述形式其实是标量加上矢量。另外规定了如下规则:i2 = j2 = k2 = ijk = - 1,ij = k, jk = i,ki = j ,ji = - k,kj = - i,ik = - j。因为一个四元数有4个部分,所以可以简单表示为P=(a0,a1,a2,a3),其中a1,a2,a3 为四元数对应的三个虚部,满足矢量运算法则。

一幅RGB 空间下的彩色图像可以用以下的四元数表示为:p = ri + gj + bk

其中,r 、g 、b 分别表示红、绿、蓝3 种颜色分量的亮度值,这种表示形式不同于以往的彩色图像描述方式,它能简洁并更好地表达彩色图像信息。  

异值分解理论是上世纪 70 年代首先提出的 ,并且已经在图像处理当中得到了广泛的应用。近年来,将奇异值分解理论引入到四元数中得到的四元数奇异值分解(QSVD)理论在彩色图像处理中受到越来越多的关注,这使得基于奇异值分解理论的原本应用于灰度图像的如图像压缩,图像增强和图像去噪等技术可以推广到彩色图像当中,保留了图像本身的信息结构造而不需要将彩色图像分解为三个分量分别进行处理.

 

     以下是N.Le Bihan提出的QSVD算法的代码实现:该算法首先将四元数矩阵映射为复数矩阵,再利用复数矩阵奇异值分解来获得四元数矩阵的奇异值。其中,复数矩阵的奇异值分解算法(CSVD)是我在网上google到的。

 

 

 

     SANGWINE从90年代开始研究四元数理论在图像处理中的应用,包括四元数域上的各种代数计算理论,傅立叶分析等。并在sourceforge上发布了Matlab工具包:Quaternion toolbox for Matlab®,里面集成了各种四元数代数运算的算法,有兴趣的朋友可以去看看。

 

参考文献

N.Le Bihan, Singular value decomposition of quaternion matrices: a new tool for vector-sensor signal processing, Signal Processing, 2004, 84, 1177-1199.

 

后记:当时找不到现成的代码,出于兴趣查了些资料,实现这个算法。后来由于研究方向改变,没有深入的去改进。希望通过这篇博文,可以找到喜欢四元数的朋友们。

原创粉丝点击