Android:imageview处理 – Matrix的数学原理

2,156 views

Matrix的数学原理

在Android中,如果你用Matrix进行过图像处理,那么一定知道Matrix这个类。Android中的Matrix是一个3 x 3的矩阵,其内容如下:

Matrix的对图像的处理可分为四类基本变换:

Translate           平移变换

Rotate                旋转变换

Scale                  缩放变换

Skew                  错切变换

从字面上理解,矩阵中的MSCALE用于处理缩放变换,MSKEW用于处理错切变 换,MTRANS用于处理平移变换,MPERSP用于处理透视变换。实际中当然不能完全按照字面上的说法去理解Matrix。同时,在Android的文 档中,未见到用Matrix进行透视变换的相关说明,所以本文也不讨论这方面的问题。

针对每种变换,Android提供了pre、set和post三种操作方式。其中set用于设置Matrix中的值。

pre是先乘,因为矩阵的乘法不满足交换律,因此先乘、后乘必须要严格区分。先乘相当于矩阵运算中的右乘。

post是后乘,因为矩阵的乘法不满足交换律,因此先乘、后乘必须要严格区分。后乘相当于矩阵运算中的左乘。

一、 平移变换

如果用矩阵来表示的话,就可以写成:


三、 缩放变换

理论上而言,一个点是不存在什么缩放变换的,但考虑到所有图像都是由点组成,因此,如果图像在x轴和y轴方向分别放大k1和k2倍的话,那么图像中的所有点的x坐标和y坐标均会分别放大k1和k2倍,即用矩阵表示就是:

 matrix可以用作图片缩放、平移、旋转,用matrix values方式可以简单设置

float f[] = {scaleWidth,0.0F,deltaX*scaleWidth,0.0F,scaleHeight,deltaY*scaleHeight,0.0F,0.0F,1.0F};
matrix.setValues(f);
imageViewIndoor.setImageMatrix(matrix);

转载本站文章请注明,转载自:阿达基站路测的天空[http://blog.signalsitemap.com]

本文链接:Android:imageview处理 – Matrix的数学原理 | 阿达基站路测的天空

This entry was posted in Android and tagged . Bookmark the permalink.

Comments are closed.