当前位置:   article > 正文

skimage库的transform.SimilarityTransform()用法_trans.similaritytransform

trans.similaritytransform
【时间】2019.09.04
【题目】skimage库的transform.SimilarityTransform()用法

一、SimilarityTransform(图像变换的一种:相似变换)

相似变换:等距变换+均匀尺度缩放,所谓等距变换就是平移+旋转变换。

变换矩阵:

变换效应:角度、平行性和垂直性不发生变换。

二、transform.SimilarityTransform()用法

参考:help(tf.SimilarityTransform)

输入参数:

  • matrix : (3, 3) array, optional , Homogeneous transformation matrix.

           可选,即上面所说的(3,3)齐次变换矩阵,具体看下面说明。

  • scale : float, optional(缩放因子,即s)
  • rotation : float, optional  Rotation angle in counter-clockwise direction as radians.

              (旋转角度θ,逆时针,以弧度表示角度)

  • translation : (tx, ty) as array, list or tuple, optional ,x, y translation parameters.

                   平移参数(tx, ty)

返回:

一个 skimage.transform._geometric.SimilarityTransform object 
(3,3)齐次变换矩阵:

      [[a0  b0  a1]
       [b0  a0  b1]
       [0   0    1]]
对比变换矩阵,可知:a0=s * cos(rotation),b0= s* sin(rotation),a1=tx,b1=ty.

这样最后的相似变换结果为:

 X = a0 * x - b0 * y + a1 =
   = s * x * cos(rotation) - s * y * sin(rotation) + a1

 Y = b0 * x + a0 * y + b1 =
   = s * x * sin(rotation) + s * y * cos(rotation) + b1
三、相关方法:

3.1 estimate(self, src, dst):从一组对应点(源点,目标点)估计变换矩阵
输入参数: 
 |      src : (N, 2) array
 |          Source coordinates.(源点坐标)
 |      dst : (N, 2) array
 |          Destination coordinates.(目标点坐标)
 返回:
 |      success : bool
 |          True, if model estimation succeeds.


3.2  inverse(self, coords) :从目标坐标逆推源坐标
 |      Apply inverse transformation.
输入参数:    

 |      coords : (N, 2) array
 |          Destination coordinates.(目标坐标)
返回: 
 |      coords : (N, 2) array
 |          Source coordinates.

3.3 residuals(self, src, dst):确定转换后的目标坐标的残差,确定每个源坐标到各个目标坐标的欧几里德距离。
输入参数:
 |      src : (N, 2) array
 |          Source coordinates.
 |      dst : (N, 2) array
 |          Destination coordinates.
返回:
 |      residuals : (N, ) array
 |          Residual for coordinate.
 |  

4、例子

4.1

  1. from skimage import transform as trans
  2. import numpy as np
  3. src = np.array([
  4. [38.2946, 51.6963],
  5. [73.5318, 51.5014],
  6. [56.0252, 71.7366],
  7. [41.5493, 92.3655],
  8. [70.7299, 92.2041] ], dtype=np.float32)
  9. dst = np.array([
  10. [38.2946, 51.6963],
  11. [73.5318, 51.5014],
  12. [56.0252, 71.7366],
  13. [41.5493, 92.3655],
  14. [70.7299, 92.2041] ], dtype=np.float32)
  15. tform = trans.SimilarityTransform()
  16. res =tform.estimate(dst, src)
  17. M = tform.params
  18. print(res)
  19. print(M)

【运行结果】:

4.2

  1. from skimage import io,data
  2. from skimage import transform as tf
  3. img = data.camera()
  4. io.imshow(img)
  5. tform = tf.SimilarityTransform(scale=1.5,rotation=np.deg2rad(10),translation=(10,12))
  6. img1 = tf.warp(img,tform)
  7. io.imshow(img1)

原图    相似变换后的图

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号