【动手学计算机视觉】第四讲:图像预处理之图像增广(上)

简介: 近几年深度学习的大规模成功应用主要的就是得益于数据的累积和算例的提升,虽然近几年很多研究者竭力的攻克半监督和无监督学习,减少对大量数据的依赖,但是目前数据在计算机视觉、自然语言处理等人工智能技术领域依然占据着非常重要的地位。甚至可以说,大规模的数据是计算机视觉成功应用的前提条件。但是由于种种原因导致数据的采集变的十分困难,因此图像增广技术就在数据的准备过程中占据着举足轻重的角色,本文就概括一下常用的图像增广技术并编程实现相应手段。

01

介绍

图像增广(image augmentation)技术通过对训练图像做一系列随机改变,来产生相似但又不同的训练样本,从而扩大训练数据集的规模。图像增广的另一种解释是,随机改变训练样本可以降低模型对某些属性的依赖,从而提高模型的泛化能力。

目前常用的图像增广技术有如下几种:

  • 镜像变换
  • 旋转
  • 缩放
  • 裁剪
  • 平移
  • 亮度修改
  • 添加噪声
  • 剪切
  • 变换颜色

在图像增广过程中可以使用其中一种手段进行扩充,也可以使用其中的几种方法进行组合使用,由于概念比较简单,容易理解,所以接下来就边实现,边详细阐述理论知识。

02

几何变换

首先以水平镜像为例,假设在原图中像素的坐标为

69.png,在镜像变换之后的图像中的坐标为72.png,原图像坐标和镜像变换后的坐标之间的关系式:

73.png

其w为图像的宽度。

那么两张图像的关系就是:

74.png

它的逆变换就是

75.png

从原图到水平镜像的变换矩阵就是:


76.png

同理,可知,垂直镜像变换的关系式为:

77.png

其h为图像高度。

通过上述可以知道,平移变换的数学矩阵为:

78.png

其d_x、d_y分别是像素在水平和垂直方向移动的距离。

同理可以推广到旋转变换上,加上原像素的坐标为79.png,该像素点相对于原点的角度alpha,假设有一个半径r的圆,那么原像素的坐标可以表示为:


80.png


加上旋转后的像素坐标为81.png,旋转角度theta,那么可以表示为:

82.png

通过展开、化简可得,

83.png

把上述公式写成数学矩阵形式为:

84.png

因此旋转变换的矩阵为:

85.png

其他的几何变换方式和上述提到的核心思想大同小异,因此,就不再详细展开,感兴趣的可以在网上搜集一下,或者看一下数字图像处理相关的书籍,关注这些内容的讲解有很多。


03

编程实践

编程实践过程中主要用到opencv、numpy和skimage。

读取图像:

1# 1. 读取图像
2img = cv2.imread("./data/000023.jpg")
3cv2.imshow("Origin", img)
4cv2.waitKey()

86.jpg

初始化一个矩阵,用于存储转化后的图像,

generate_img = np.zeros(img.shape)

1.水平镜像

遍历图像的像素,用前文提到的数学关系式进行像素的转化,

for i in range(h):
for j in range(w):
     generate_img[i, w - 1 - j] = img[i, j]
cv2.imshow("Ver", generate_img.astype(np.uint8))
cv2.waitKey()

备注:初始化的图像数据类型是numpy.float64,用opencv显示时无法正常显示,因此在显示时需要用astype(np.uint8)把图像转化成numpy.uint8数据格式。

相关文章
|
2月前
|
机器学习/深度学习 编解码 自动驾驶
计算机视觉之图像到图像的翻译
图像到图像的翻译(Image-to-Image Translation)是指将一种图像从一种表示转换为另一种表示的过程。该任务的目标是在保证图像语义信息的前提下,将图像风格、颜色或其他视觉特征进行转换。该技术在计算机视觉领域具有广泛应用,例如图像风格迁移、图像修复、图像增强、超分辨率、语义分割等。
47 4
|
6月前
|
编解码 边缘计算 自然语言处理
2024年5月计算机视觉论文推荐:包括扩散模型、视觉语言模型、图像编辑和生成、视频处理和生成以及图像识别等各个主题
五月发布的计算机视觉领域重要论文涵盖了扩散模型、视觉语言模型、图像生成与编辑及目标检测。亮点包括:1) Dual3D提出双模式推理策略,实现高效文本到3D图像生成;2) CAT3D利用多视图扩散模型创建3D场景,仅需少量图像;3) Hunyuan-DiT是多分辨率的中文理解扩散Transformer,可用于多模态对话和图像生成;4) 通过潜在扩散模型从EEG数据重建自然主义音乐,展示复杂音频重建潜力。此外,还有关于视觉语言模型和图像编辑的创新工作,如BlobGEN用于合成具有控制性的图像。
237 3
|
4月前
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
|
5月前
|
算法 计算机视觉 Python
openCV 3计算机视觉 Python语言实现 笔记 第三章 使用OpenCV 3处理图像
openCV 3计算机视觉 Python语言实现 笔记 第三章 使用OpenCV 3处理图像
|
6月前
|
机器学习/深度学习 自动驾驶 算法
【计算机视觉+自动驾驶】二、多任务深度学习网络并联式、级联式构建详细讲解(图像解释 超详细必看)
【计算机视觉+自动驾驶】二、多任务深度学习网络并联式、级联式构建详细讲解(图像解释 超详细必看)
290 1
|
6月前
|
机器学习/深度学习 计算机视觉 Python
【Python计算机视觉】项目实战之图像增强imguag对关键点变换、标注框变化(附源码 超详细必看)
【Python计算机视觉】项目实战之图像增强imguag对关键点变换、标注框变化(附源码 超详细必看)
198 0
|
算法 vr&ar 计算机视觉
[笔记]Python计算机视觉编程《二》 基本的图像操作和处理
[笔记]Python计算机视觉编程《二》 基本的图像操作和处理
|
6月前
|
机器学习/深度学习 计算机视觉
AIGC核心技术——计算机视觉(CV)预训练大模型
【1月更文挑战第13天】AIGC核心技术——计算机视觉(CV)预训练大模型
606 3
AIGC核心技术——计算机视觉(CV)预训练大模型
|
11月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
121 0
|
2月前
|
人工智能 测试技术 API
AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签
本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。

热门文章

最新文章