opencv图像增强python_用python opencv numpy和sklearn进行数据增强

在没有其他的方式进行搜集图片时,数据增强是一种增加图片多样性的非常好的方式。在机器学习中特别是深度神经网络,数据是非常重要的,数据甚至可以提升网络一个量级。在训练的时候,我们需要成千上万张图片,甚至上千万的图片。

搜集这些图片,是非常繁琐的事情,但是有非常重要。没有好的数据可以说模型也就没啥用了。这里就有了不同的数据增强的方式。其中比较常用的数据增强的方式是:翻转,拉平,裁剪,对比度等等。这样可以将原来比较少的图片增加到可观的数量。

即使是世界上最强大的模型,如果没有了数据,那它啥也不是

在本文中进行介绍将200多张图片,通过数据增强的方式增加到2000多张。使用的工具是numpy,opencv,sklearn以及python等工具。即使是刚入门的新手可以轻松使用。图片中包括一些rgb图像,也有一些灰度图。灰度图和rgb图像最大的不同是图像的通道数不同,rgb3通道,灰度图单通道。

numpy是一个使用起来非常简单的矩阵库,可以对矩阵进行各种操作,我们的图片就是一个矩阵,所以使用numpy对图像进行处理也非常简单。

下面是我们的一些操作:

翻转:我们要进行翻转图片,首先就要对图片的行和列进行翻转,即:第一列和最后一列进行交换,然后整个矩阵执行这个操作。numpy中有个方法可以实现:fliplr() 实现对矩阵进行水平翻转。如果是列进行翻转,numpy也有个函数实现:flipud(),下面是效果:

旋转:旋转实现我们使用的是sklearn库,sklearn可以对图像进行添加噪声,滤波等操作。如果是顺时针旋转,我们只要给函数一个负值,如果给函数一个正值,图片会进行逆时针旋转。下面是实现的效果。

变化:我们可以通过改变图像上的一些数值例如上,下,左,右,进而改变图片中的某些信息的位置。例如我们根据下面的公式去调整图中信息的位置。

\( X = x + dx \)

\( Y = y + dy \)

这时就会原来的位置 \( x,y \) 就会改变为新的位置 \( X,Y \)

添加噪声:我们使用sklearn库中的random_noise(),对图片进行随机添加噪声,这样做的好处是使图像的噪声达到正则化的目的,这个可以解决一些过拟合问题。

滤波:这里滤波使用的是高斯滤波,使用的库时opencv库,函数为gaussian_blur(),我们通过改变滤波核的大小,进行修改滤波的结果。

现在我们使用所有的方法进行图像增强,我们首先将图片的名字存储到一个数组里,然后随机从数组里取出一张图片,对这个图片进行随机操作,操作方式是按照上面的操作方式进行。就是随机变换。直到变换的图片达到2000张。

下面是我们的代码,我们对每一种操作都进行了函数定义,然后通过主函数进行调用。

我们来看下主函数,读取完图片后然后随机的进行图片变换

这里有两个路径,一个是读取原图片的路径,一个是保存图片的路径。

一旦外部while循环从图像数组中选择了一个随机图像,我们将读取该图像。从随机库中随机选取适用于读取图像的变换次数。这个外循环将运行,直到计数(I)达到2000(要生成的图像数)。

如果上述操作完成,我们的图像就增加到了2000张,即目标完成。这里有下载图片链接 图片 这里还有整个项目的 代码

声明:本文为原创,作者为 lijingle,转载时请保留本声明及附带文章链接:https://www.lijl888.com/archives/1330

感谢您的支持

感谢您的支持

感谢您的支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值