基本介绍
图像增强技术的作用,简单点说,就是通过对图像进行加工处理,使图像能更好的在其他领域起作用,比如人脸识别,图像分类等人工智能领域,又或者是在通信领域,通过加工恢复图像在传输中丢失的某些东西。
那么什么又是图像增强呢?通过对图像进行一些加工,从简单的裁剪、变换灰度等到复杂的各种滤波公式去噪点等等 ,大致满足以下两点的都属于图像增强的一部分。
1.改变图像视觉效果,使其能更好的应用在某类场景中
2.突出图片某部分特征,满足某些特殊分析的需要。
在实现具体算法,我们总需要先思考大致的思路。学习图像增强技术也是如此,在学习这门新技术前,我们可以根据一些以往的经验先想想大概要做些什么。
图像的收集图像的输入图像的处理图像的输出图像的收集
这里主要涉及的是从视频中截取我们需要的图片。需要使用到的软件“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))#括号内填缩放后的大小
图像的输出
除了直接保存为图片形式外
我们在使用这些处理后的图片时,更多的要用到名为“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']
金融领域作为人工智能最佳落地场景之一,AI应用成果斐然
第九届ISO 26262会议,持续时间最长的关于ISO 26262技术的专家论坛
索尼WF-SP700N全无线运动降噪耳机体验 为运动而生
苹果计划收购英特尔旗下一部分智能手机调制解调器业务
IDC:国内Q1季度平板电脑销量受到疫情影响将下滑30.1%
图像处理技术入门
单片机有哪些类型的中断 单片机原理及应用
智能家电行业的定义和分类
不断发展的ICT技术助力新能源汽车产业链加速变革
人工智能潮流下一个席卷的就是智能手机市场了
没有这些连接器 工业自动化就无法实现
Mozilla表示Firefox在重磅新功能上会更加谨慎 避免推出后破坏使用体验
Apple Watch将添加颜色传感器,苏奥传感发布上半年业绩
高频磁环的识别,Introduction of high-frequency magnetic ring
双十一苏宁开出第10000店,遍及百城千县
AI竞争加剧,但追赶Nvidia并非易事
芯闻3分钟:被高通"卡住喉咙" 苹果5G手机将落后于安卓阵营
移动云构建强大竞争壁垒,实现三年内进入第一阵营目标
工信部:重点检查5G基站“1元中标”现象
MOS管简介:PART–0基础知识