我试图通过名为phai的向量中的旋转角度,缩放,剪切和位移值的参数vactror来构造仿射变换矩阵。 矢量组织如下:
phai=[rotationAngle, scalingCoefX, scalingCoefY, shearingCoefX, shearingCoefY, translationCoefX, translationCoefY]';
为了构造仿射变换矩阵,我应用以下代码:
rotation=[cos(phai(1)) sin(phai(1)) 0; -sin(phai(1))cos(phai(1)) 0; 0 0 1];
scaling=[phai(2) 0 0; 0 phai(3) 0; 0 0 1];
shearingY=[1 0 0; phai(5) 1 0; 0 0 1];
shearingX=[1 phai(4) 0; 0 1 0; 0 0 1];
translation=[1 0 0; 0 1 0; phai(6) phai(7) 1];
T=rotation*scaling*shearingY*shearingX*translation;
T = maketform('affine',T);
然后将结果应用于图像(c)我执行:
c=imtransform(c,T);
由于实现要求,我必须定义200个不同的参数值组合。因此,phai通常是200x7矩阵,其中每行包含7个不同仿射参数值的值。
执行时间为:200 phai的总时间为48.375s,自我时间为0.452s。
我的问题是:这段代码是否代表了仿射变换的正确实现?执行时间是否可以接受?在代码是对的情况下,有没有建议加快执行?
非常感谢