图像仿射变换共有“旋转”、“平移”、“错切(shear)”、“缩放”、“翻转”5种。本文结合keras-retinanet的实现进行分析。之所以采用keras-retinanet进行分析,是因为该实现较为典型,比较容易理解。

keras-retinanet官方地址:https://github.com/fizyr/keras-retinanet.git

以上五种仿射变换位于utils/transform.py中。仿射变换在代码中被用于目标检测任务的图像倍增。(PS:其实只有平移、缩放、翻转可以用于目标检测任务,因为旋转与错切后物体的boundingbox可能变大,我认为这可能造成boundingbox回归任务不准确)

1.旋转,相较于opencv实现的图片旋转,retinanet中自带的图片实现更为简单,更多的应该是从效率角度考虑。使用numpy实现可以同时处理多组图片。但opencv的图片旋转更为复杂,除了围绕图片中心旋转外,还可以围绕图片任意一点旋转,并调整缩放比例。

def rotation(angle):""" Construct a homogeneous 2D rotation matrix.Argsangle: the angle in radiansReturnsthe rotation matrix as 3 by 3 numpy array"""return np.array([[np.cos(angle), -np.sin(angle), 0],[np.sin(angle),  np.cos(angle), 0],[0, 0, 1]])

其实仅需要2*2矩阵既可以解决,使用3*3矩阵为将旋转矩阵表示为齐次形式。

2.平移

def translation(translation):""" Construct a homogeneous 2D translation matrix.# Argumentstranslation: the translation 2D vector# Returnsthe translation matrix as 3 by 3 numpy array"""return np.array([[1, 0, translation[0]],[0, 1, translation[1]],[0, 0, 1]])

3.错切

def shear(angle):""" Construct a homogeneous 2D shear matrix.Argsangle: the shear angle in radiansReturnsthe shear matrix as 3 by 3 numpy array"""return np.array([[1, -np.sin(angle), 0],[0,  np.cos(angle), 0],[0, 0, 1]])

4.缩放

def scaling(factor):""" Construct a homogeneous 2D scaling matrix.Argsfactor: a 2D vector for X and Y scalingReturnsthe zoom matrix as 3 by 3 numpy array"""return np.array([[factor[0], 0, 0],[0, factor[1], 0],[0, 0, 1]])

5.翻转

翻转同样是用scaling实现的,直接与“+1/-1”相乘即可以实现翻转。

def random_flip(flip_x_chance, flip_y_chance, prng=DEFAULT_PRNG):""" Construct a transformation randomly containing X/Y flips (or not).Argsflip_x_chance: The chance that the result will contain a flip along the X axis.flip_y_chance: The chance that the result will contain a flip along the Y axis.prng:          The pseudo-random number generator to use.Returnsa homogeneous 3 by 3 transformation matrix"""flip_x = prng.uniform(0, 1) < flip_x_chanceflip_y = prng.uniform(0, 1) < flip_y_chance# 1 - 2 * bool gives 1 for False and -1 for True.return scaling((1 - 2 * flip_x, 1 - 2 * flip_y))

图片仿射变换原理与实现相关推荐

  1. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )

    文章目录 一. 哈夫曼编码开关 二. 哈夫曼编码原理 三. libjpeg-turbo 函数库 四. libjpeg-turbo 函数库下载 [Android 内存优化]图片文件压缩 ( Androi ...

  2. 【Android 内存优化】Android 原生 API 图片压缩原理 ( Bitmap_compress 方法解析 | Skia 二维图形库 | libjpeg 函数库 | libpng 函数库 )

    文章目录 一. 图片质量压缩方法 二. Skia 二维图形库 三. libjpeg.libpng 函数库引入 在博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供的 ...

  3. 视频分解图片原理;图片合成视频原理

    (1)加载视频 (2)读取视频信息 (3)解码视频,拿到单帧信息 帧率:视频每秒钟展示多少张图片:帧率高我们看到的图片才是连续的:帧率低我们看到的图片就相当于非连续的: 宽度:高度 接下来是视频保存成 ...

  4. php 匹配图片路径_php正则匹配图片路径原理与方法

    下面我来给大家介绍在php正则匹配图片路径原理与实现方法,有需要了解的朋友可进入参考参考. 提取src=里面的图片地址还不足够,因为不能保证那个地址一定是绝对地址,完全的地址,如果那是相对的呢?如果地 ...

  5. python图像切割成多边形_python通过opencv实现图片裁剪原理解析

    这篇文章主要介绍了python通过opencv实现图片裁剪原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 图像裁剪的基本概念 : 图像裁剪是 ...

  6. Google 以图搜图 - 相似图片搜索原理 - Java实现

    前阵子在阮一峰的博客上看到了这篇<相似图片搜索原理>博客,就有一种冲动要将这些原理实现出来了. Google "相似图片搜索":你可以用一张图片,搜索互联网上所有与它相 ...

  7. 以图搜图 - Google 相似图片搜索原理 - Java实现

    转自:http://blog.csdn.net/luohong722/article/details/7100058 前阵子在阮一峰的博客上看到了这篇<相似图片搜索原理>博客,就有一种冲动 ...

  8. 相似图片搜索原理二(phash—c++实现)

    前段时间介绍过相似图片搜索原理一(ahash) http://blog.csdn.net/lu597203933/article/details/45101859,它是基于内容检索最简单的一种:这里介 ...

  9. 图像仿射变换原理3:仿射变换类型及变换矩阵详解

    ☞ ░ 老猿Python博文目录:https://blog.csdn.net/LaoYuanPython ░ 仿射变换博文传送门(带星号的为付费专栏文章): *图像仿射变换原理1:齐次坐标来龙去脉详解 ...

最新文章

  1. ETSI MEC — 面向边缘计算的 5G 增强技术探讨
  2. 全卷积神经网路【U-net项目实战】论文中U-Net网络实现
  3. C++用FindFirstFile、FindNext递归遍历硬盘的文件
  4. 苹果造车消息带动激光雷达股上涨 新能源整车概念下跌
  5. android统计库,android jacoco 统计多模块
  6. 设计模式09-组合模式
  7. idea json转对象(Java实体类)
  8. Java基础学习总结(70)——开发Java项目常用的工具汇总
  9. 图像拼接算法(zz)
  10. msi z170 网卡 linux,z170+skylake黑苹果安装笔记
  11. 雷达作用距离、干扰距离、侦查距离
  12. c 语言全局变量的声明及用法,《c语言全局变量的用法》
  13. 实时错误‘429’:ActiveX控件不能创建对象
  14. 央视国际节目定价发布接口规范C2
  15. calibre如何使用邮件推送电子书
  16. 4. 上新了Spring,全新一代类型转换机制
  17. 读取excel文件并使用matplotlib绘图(含柱状图、柱状图加数值的显示和直方图)
  18. 蓝牙信标Beacon_信息推送,室内定位,室内导航
  19. 〖Python自动化办公篇⑭〗- Excel 文件自动化 - 写入图表
  20. 【思维导图】计算机网络第三章数据链路层

热门文章

  1. 记录下移动,联通,电信号段
  2. 分享我每天的健康养生好习惯
  3. ARM性能天梯图,各系列处理器分类比较
  4. Latex longtable宏包与自动续表
  5. 闯入七零八落的中国二次元社群
  6. 第二十一章 Chisel基础——黑盒
  7. 长沙毕业生如何选择IT培训学校?
  8. python写的小程序怎么封装_Promise实现微信小程序接口封装过程
  9. 揭纸形态化纸塑分离机 电分离牛皮纸袋纸塑分离设备
  10. 伪造html页面,跨站点请求伪造漏洞验证方法