首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >入门|图像增强技术

入门|图像增强技术

作者头像
算法与编程之美
发布2019-07-17 17:03:45
1.3K0
发布2019-07-17 17:03:45
举报

欢迎点击「算法与编程之美」↑关注我们!

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

图像增强技术的作用,简单点说,就是通过对图像进行加工处理,使图像能更好的在其他领域起作用,比如人脸识别,图像分类等人工智能领域,又或者是在通信领域,通过加工恢复图像在传输中丢失的某些东西。

那么什么又是图像增强呢?通过对图像进行一些加工,从简单的裁剪、变换灰度等到复杂的各种滤波公式去噪点等等 ,大致满足以下两点的都属于图像增强的一部分。

  1. 改变图像视觉效果,使其能更好的应用在某类场景中。
  2. 突出图片某部分特征,满足某些特殊分析的需要。

在实现具体算法之前,我们总需要先思考大致的思路。学习图像增强技术也是如此,在学习这门新技术前,我们可以根据一些以往的经验先想想大概要做些什么:

  1. 图像的收集
  2. 图像的输入
  3. 图像的处理
  4. 图像的输出

图像的收集

这里主要涉及的是从视频中截取我们需要的图片。需要使用到的软件“ffmpeg”。

安装

通过网页搜索直接进入官网点击“Download”,选择自己电脑系统后,点击下方红色勾

选区域,进入下载界面,只用看自己电脑是64位/32位,点击下载。

下载好后,配置环境变量。

右键‘我的电脑’,--属性—高级系统设置—环境变量—用户变量—编辑‘path’—添加ffmpeg软件的文件夹下的bin文件的路径。

使用

通过‘cmd’命令行执行以下操作:

‘ffmpeg -i F -r K -f image2 image-%05d.jpg’

F:需要处理视频的地址。

K:填一个数字表示每秒截几张图,填类似1/1的形式表示一帧截一张图。

其他更详细用法可以自行百度,温馨提示:在哪个文件夹执行命令操作生成的图片就保存在哪个文件夹。

图像的输入

很多时候我们需要处理的是大量的图片,这就需要批量的处理文件。

#需要用到os和cv2库(安装请安装opencv,导入请导入cv2) imagelist=os.listdir(path)#读取path目录下所有文件的名字 for i in imagelist: if(i.endswith('.jpg' or '.png')): #如果文件以jpg或者png结尾 image=cv2.imread(path+'/'+i)#读取图片

图像的处理

图像增强技术的处理技术很多,先从一些简单操作开始。如图像的裁剪、旋转、镜像翻转和缩放等基本操作开始,主要使用cv2库。

#裁剪(crop) Image=cv2.imread(‘某张图片地址’) #读取图片 sp=image.shape #读取图像的形状信息并通过数组输出[图像的高,图像的宽,图像通道数] h=sp[0] w=sp[1] #截取图像某个区域,可配合random库随机截取,也可以自己设置截取范围 y1=int((1/3)*h) y2=int((2/3)*h) x1=int((1/3)*w) x2=int((2/3)*w) img=image[y1:y2,x1:x2] #将图片左上角视为原点,截取y1到y2、x1到x2的区域 #旋转(roating) h,w=image.shape[:2] center=(h//2,w//2)#旋转中心 #图片旋转 #degree旋转角度,size旋转后的大小,填1为等比例旋转。 M = cv2.getRotationMatrix2D(center, degree, size) #执行旋转操作,roated为旋转后的图片 roated = cv2.warpAffine(image, M, (w, h)) #镜像翻转(flip) image=cv2.imread(path) image=cv2.flip(image,1)#图片翻转 #缩放 image=cv2.imread(path) image=cv2.resize(image,(192,192))#括号内填缩放后的大小

图像的输出

除了直接保存为图片形式外

cv2.imwrite('保存地址',image)

我们在做使用这些处理后的图片时,更多的要用到名为‘npz‘的文件格式。

data=[]#该数组用于存储图片 label=[]#用于储存图片类型,看一个实例 pathone='D:\\imgCut\\Archive\\resize\\nosmoke'#无烟集图片地址 pathtwo="D:\\imgCut\\Archive\\resize\\smoke"#有烟集图片地址 #0代表无烟图片,1代表有烟图片 def saveZ(pathone,pathtwo): data=[] label=[] imagelist_one=os.listdir(pathone)#读取目录下所有文件的名字 imagelist_two=os.listdir(pathtwo) for i in imagelist_one: if(i.endswith('.jpg' or '.png')): #如果文件以jpg结尾 image=cv2.imread(pathone+'\\'+i) data.append(image)#将图片加入数组,这里存入的是图片本身而不是一个引用。 label.append(0) for i in imagelist_two: if(i.endswith('.jpg' or '.png')): #如果文件以jpg结尾 image=cv2.imread(pathtwo+'\\'+i) data.append(image) label.append(1) np.savez('arc.npz', data=data, label=label) #文件以npz形式储存,里面有两个数组data,label

之后我们就可以在其他地方直接调用这个文件里的数组

arc=np.load('arc.npz')#导入这个文件data=arc['data']#读取里面的data数组和label数组label=arc['label']

END

主 编 | 张祯悦

责 编 | 马原涛

where2go 团队


微信号:算法与编程之美

长按识别二维码关注我们!

温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档