2017-11-01 6 views
0

最小二乗誤差値を得るために2つの2次元点集合を整列させるための最良の変換行列を見つける方法。このコードは私がやったことですが、これは正しくありません:tform * src。2つの2次元データ点の最良の変換行列を見つける

import numpy as np 
from skimage import transform as tf 
from sklearn.metrics import mean_squared_error 
# estimate transformation parameters 
src = np.array([0, 0, 10, 10]).reshape((2, 2)) 
dst = np.array([12, 14, 1, -20]).reshape((2, 2)) 
tform = tf.estimate_transform('similarity', src, dst) 
print(src) 
print(dst) 
print(tform.params) 
msq=mean_squared_error(tform*src,dst) 
+0

のための正しい答えを見つけることができます。行列を変換の後ろに置くには、 'tform.params'にアクセスする必要があります。 –

+0

by print(tform.params)私は3 * 3の行列を得ましたこの行列を使って2次元データを乗算するにはどうしたらいいですか? – user8523104

+0

'skimage.transform.warp(image、tform.inverse)'はその変換に従って画像を修正します。 –

答えて

0

最終的に私は正しい呼び出しは `TFORM(SRC)`である私の質問

import numpy as np 
from skimage import transform as tf 
from sklearn.metrics import mean_squared_error 
# estimate transformation parameters 
src = np.array([0,0 , 1,0 , 1,1 , 0,1]).reshape((4, 2)) 
dst = np.array([3,1 , 3,2 , 2,2 , 2,1]).reshape((4, 2)) 
tform = tf.estimate_transform('similarity', src, dst) 
#tform is the transformation matrix for these data to align them 
print(src) 
print(dst) 
print(tform.params) 

mt = tf.matrix_transform(src, tform.params)#mt is the same dst 
mean_squared_error(mt,dst) #should be zero 
print('{:.10f}'.format(mean_squared_error(mt,dst))) 
関連する問題