图像处理基础-旋转(rotation), 平移(shift), 缩放(scale), 错切(shear)

最近在学习data augmentation的一些方法,在训练模型时经常碰到训练数据不够的情况,尤其是图像方面的模型,例如CNN。这时候对数据进行增强可以大大扩充训练集的规模,对模型的最终的准确度和泛化能力都有很大的帮助,有时甚至是决定性的作用

今天先学习了下图像方面的增强方法,主要是对图像进行小幅度的旋转,平移,缩放和错切,这4个方面的变换可以组成任意的affine transformation。实际应用时就是把原有数据的不同尺寸的图片缩放到相同尺寸,并添加随机的小幅度旋转,平移和错切来生成大量额外训练数据。

  1. 旋转
    图像处理基础-旋转(rotation), 平移(shift), 缩放(scale), 错切(shear)
    图片画的不是特别好,请轻吐槽
    原有的点(X,Y)和坐标轴夹角 θ,旋转α角度后到达(X´,Y´), 记(X,Y)的模为L, 那么:

    Lcos(θ)=XLsin(θ)=YLcos(θ+α)=X´Lsin(θ+α)=Y´

    从三角公式可得:

    L(cos(θ)cos(α)sin(θ)sin(α))=X´L(sin(θ)cos(α)+cos(θ)sin(α))=Y´

    代入初始公式:
    Xcos(α)Ysin(α)=X´Ycos(α)+Xsin(α)=Y´

    最终得到:
    [X´Y´1]=[cos(α)sin(α)0sin(α)cos(α)0001][XY1]

  2. 平移
    平移比较简单

    X+Xt=X´Y+Yt=Y´

    写成类似形式
    [X´Y´1]=[10Xt01Yt001][XY1]

  3. 缩放
    缩放和平移类似,也比较简单
    XXzoom=X´YYzoom=Y´

    写成类似形式
    [X´Y´1]=[Xzoom000Yzoom0001][XY1]

    1. 错切
      图像处理基础-旋转(rotation), 平移(shift), 缩放(scale), 错切(shear)
      错切可以通过矩形变成平行四边形来理解,错切可以沿着任意一个坐标轴进行,图例是沿着Y轴进行错切
      X+sin(θ)Y=X´Ycos(θ)=Y´

      写成类似形式
      [X´Y´1]=[1sin(θ)00cos(θ)0001][XY1]

      欢迎大家批评指正!