[SciPy-User] helmert implementation (7 parameters - geometric transformation)

Massimo Di Stefano massimodisasha at yahoo.it
Thu Mar 4 17:18:00 EST 2010


Hi Charles,

apologize me, i had only now a chance to answer your mail.

i'm really gratefull for your help,
now the code works perfectly and i'm really really happy for this !

i tried it with some points and all works fine :-)

reading it i also learned some functions like : 

np.newaxis
linalg.lstsq

you gived me an awesome help, thanks!!!

i've a question about the code,
what does :

#
res = rhs - np.dot(A, sol)
#



in the code i added the equation to apply the transformation to an input file with coordinates to be converted :

XYZ = np.loadtxt(str(inputf))
XYZsize = XYZ.shape[0]
ENZglob = np.zeros((XYZsize,3),float)
for i in np.arange(XYZsize):
   X = sol[0] + (1 + sol[6]) * ( XYZ[i,0] - sol[5] * XYZ[i,1]  + sol[4] * XYZ[i,2] ) 
   Y = sol[1] + (1 + sol[6]) * ( sol[5] * XYZ[i,0] + XYZ[i,1] - sol[3] * XYZ[i,2] ) 
   Z = sol[2] + (1 + sol[6]) * ( -sol[4] * XYZ[i,0] + sol[3] * XYZ[i,1] + XYZ[i,2] ) 
   ENZglob[i,:] = np.hstack((X,Y,Z))
np.savetxt(output,ENZglob)



thanks again!!!

regards,

Massimo.

Il giorno 03/mar/2010, alle ore 02.02, scipy-user-request at scipy.org ha scritto:

> I've attached a script for the computation. Two things of note: the angles
> in the pdf results are in degrees, the value of ? is pretty much in the
> noise (the condition number of the matrix is 10^10), and the fit you get
> with my version differs from the data by about 7mm. Note that the Helmert
> parameters result from a linearization of the rotation matrix, see
> Gauss-Newton for more about linearization and least squares, but in this
> case I think the limiting factor is the accuracy of the coordinates, not the
> linearization.




More information about the SciPy-User mailing list