图像增强-几何及灰度变换
# Opencv-Python 02 几何及灰度变换、图像增强
# 1 简介
图像的几何及灰度变换操作较为常用,图像增强操作不仅仅只在深度学习中用作数据增广、在实际应用中图像增强技术也能改善图像质量,给人以更好的体验。在深度学习领域,我们常用平移、旋转、镜像等操作进行数据增广;在传统CV领域,由于某些拍摄角度的问题,我们需要对图像进行矫正处理,而几何变换正是这个处理过程的基础,因此了解和学习几何变换也是有必要的。
# 2 算法理论介绍
# 2.1 仿射变换形式
需要一个仿射变换矩阵,与原坐标(v.w) 做仿射变换(点乘)后,得到变换后的坐标(x,y)。常用的变换矩阵及作用如下
# 2.2 坐标系变换
变换中心,对于缩放、平移可以以图像坐标原点(图像左上角为原点)为中心变换,这不用坐标系变换,直接按照一般形式计算即可。而对于旋转和偏移,一般是以图像中心为原点,那么这就涉及坐标系转换了。
图像坐标的原点在图像左上角,水平向右为 X 轴,垂直向下为 Y 轴。数学课本中常见的坐标系是以图像中心为原点,水平向右为 X 轴,垂直向上为 Y 轴,称为笛卡尔坐标系。
因此,对于旋转和偏移,就需要3步(3次变换):
- 将输入原图图像坐标转换为笛卡尔坐标系;
- 进行旋转计算。旋转矩阵前面已经给出了;
- 将旋转后的图像的笛卡尔坐标转回图像坐标。
# 2.3 反向映射
前向映射就是根据原图用变换公式直接算出输出图像相应像素的空间位置,那么这会导致一个问题:可能会有多个像素坐标映射到输出图像的同一位置,也可能输出图像的某些位置完全没有相应的输入图像像素与它匹配,也就是没有被映射到,造成有规律的空洞(黑色的蜂窝状)。更好的一种方式是采用 反向映射(Inverse Mapping):扫描输出图像的位置(x,y),通过
(为T的逆矩阵)计算输入图像对应的位置 (v,w),通过插值方法决定输出图像该位置的灰度值。
# 2.4 插值
采用反向映射后,需通过插值方法决定输出图像该位置的值,因此需要选择插值算法。通常有最近邻插值、双线性插值,双三次插值等,OpencV默认采用双线性插值,我们也就采用双线性插值。
上次更新: 2021/08/17, 18:07:06
- 02
- README 美化05-20
- 03
- 常见 Tricks 代码片段05-12