在图像的复合变化过程中,通常会用到Matrix矩阵,一般的过程是先构造仿射变换矩阵,然后对图像进行仿射变换,如:围绕点(100100)旋转30(sin 30 = 0.5 cos 30 = 0.866),则构造过程如下:

float f[]= { 0.866F, -0.5F, 63.4F,0.5F, 0.866F,-36.6F,0.0F, 0.0F, 1.0F };

matrix = new Matrix();

matrix.setValues(f);

 

今天在项目中遇到一个问题,就是已知仿射变换矩阵matrix,求旋转中心。网上搜了半天也没有找到答案,没办法,自己推导吧,结果如下:

设图像围绕点(a, b)进行旋转角度为r degree,得到matrix的平移变量为TT,则:

 

 

上述公式没有考虑特殊情况,如:r90 degree等,需要自己完善。

如果不是刚体变换,需要再加上尺度变化因子即可。