计算机视觉PPT完整全套教学课件_第1页
计算机视觉PPT完整全套教学课件_第2页
计算机视觉PPT完整全套教学课件_第3页
计算机视觉PPT完整全套教学课件_第4页
计算机视觉PPT完整全套教学课件_第5页
已阅读5页,还剩409页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章计算机视觉概述1全套PPT课件第1章计算机视觉概述.pptx第2章Python与OpenCV运行环境.pptx第3章图像预处理.pptx第4章图像特征提取.pptx第5章图像分类.pptx第6章神经网络基础.pptx第7章卷积神经网络的基本概念.pptx第8章目标检测.pptx第9章其他深度学习网络.pptx第10章人脸表情识别研究.pptx目录1.1计算机视觉的研究目标及相关历史1.21.3计算机视觉的发展计算机视觉的任务1.4计算机视觉与其他学科的关系计算机视觉

1.1计算机视觉的研究目标及相关历史一、人类视觉系统与计算机视觉系统图像(或视频)感应装置解释设备感知结果桥,水,树,花,绿色等结果:春天的花园,人类视觉系统:计算机视觉系统:计算机视觉

计算机视觉(Computer

Vision,

CV):是一门研究如何让计算机实现人类视觉系统功能的学科。

简单说,就是给计算机安装上眼睛(摄像机)和大脑(算法),让计算机像人一样去看、去感知环境。计算机视觉的主要的目标:让计算机通过数值矩阵认识图片并完成特定的任务。计算机视觉

二、计算机视觉历史回顾生物视觉的发展计算机视觉

机器视觉的发展计算机视觉

人类视觉神经的启迪计算机视觉

1.2计算机视觉的发展

BlockworldLarry

Roberts,1963通过计算机程序从数字图像中提取诸如立方体、稧状体、棱柱体等多面体的三维结构,并对物体形状及物体的空间关系进行描述。计算机视觉

计算机视觉

1970DavidMarr提出了计算视觉理论计算机视觉

视觉神经系统认知过程第一阶段抽取原始图像的边缘、纹理、线条、边界等基本特征,这些特征的集合称为基元图第二阶段在以观测者为中心的坐标中,由输入图像和基元图恢复场景信息(深度、法线方向、轮廓等),这些信息包含了深度信息,但不是真正的物理三维表示,因此,称为二维半图第三阶段在以物体为中心的坐标系中,由基元图、二维半图提升到三维表达计算机视觉

卷积神经网络-20

世纪

80

年代卷积神经网络技术的实现,使计算机视觉的研究迈上了一个新台阶-CNN由许多神经网络层组成。卷积和池化这两种不同类型的层通常是交替的。网络中每个滤波器的深度从左到右增加。最后通常由一个或多个全连接层组成-生物视觉中的“局部感受野”是卷积神经网络的理论基础计算机视觉

-深度学习技术发展计算机视觉

-CNN和深度神经网络才流行起来的原因一是CPU和GPU的计算能力不断加强,尤其是GPU的并行能力对于神经网络中的计算很有帮助。二是大数据,无论是什么样的机器学习算法,没有足够的数据量都容易overfitting,而现在有了足够大的有标记的数据库。计算机视觉

图像分类挑战:1000个对象类1431167张图片

互联网技术的飞速发展为深度学习技术的应用提供了海量的数据

2010-2014基于ImageNet上的图像分类竞赛

0.26

0.16

0.12

0.07计算机视觉

1.3计算机视觉的任务图像分类计算机视觉

目标检测计算机视觉

图像语义分割计算机视觉

图像生成计算机视觉

视频分类计算机视觉

1.4计算机视觉与其它学科的联系第2章Python与OpenCV运行环境2目录2.1Python环境配置2.22.3OpenCV环境配置OpenCV视觉库模块功能计算机视觉

2.1Python语言计算机视觉

单击编辑标题Python是一门计算机编程语言。◆结合了解释性、编译性、互动性和面向对象的高层次计算机编程语言;◆1989年荷兰Guido发明了一种面向对象的解释型编程语言开放源代码;◆python设计哲学:优雅、明确、简洁。计算机视觉

一、基本概念◆Python解释器是将python源码高级语言解析为二进制机器语言的工具。通常说安装python就是指安转python解释器。计算机视觉

◆正如在电脑上编辑文档需要用Word、处理数据需要用Excel、做演示文稿需要用PPT、修图需要用PS一样,编写代码也需要特定的工具。而这个用来编写代码的工具就叫做编辑器。Python的编辑器有很多,有Python解释器自带的IDLE、基于iPython的JupyterNotebook、也有如PyCharm、Spyder、WingIDE等主要针对Python代码编辑的编辑器;还有很多编辑器,如SublimeText、vSCode、Vim等适合各种编程语言的编辑器。◆Python最大的优点之一就在于其丰富的库,pip(packageinstallerforPython)就是库管理工具,通过pip就可以安装、卸载、更新众多的库。Pythonpip,pip(最大的优点之一就在于其丰富的库的包安装程序)就是库管理工具,通过pip就可以安装、卸载、更新众多的库。◆安装python涉及到python解释器、代码编辑器和pip包管理工具者3个工具计算机视觉

二、Python解释器版本◆Python2已停止更新的最高版本是Python2.7;◆推荐选择Python3的较新版本;◆寻找Python3的教程和代码;◆旧的Python2.7的代码转换成3的版本:运用第三方工具(Python2.x和Python3.x不兼容)。一般说的安装Python就是指安装Python解释器,因此Python解释器必须安装。目前,Python有两个流行的版本Python2和Python3。三、安装Python解释器+第三方编辑器Pycharm计算机视觉

在Windows上安装Python解释器。◆Python安装包下载地址:/downloads/◆选择Python3.9.x的版本,点击Download计算机视觉

◆点进去之后,滚动到下面,选择Windowsinstaller(64-bit)的版本◆这也是官方推荐(Recommended)的◆说明:以Windowsx86-64开头的是64位的Python安装程序,目前主流◆步骤4:点击前面的Version超链接下载计算机视觉

◆勾选AddPython3.9toPATH,这样可以将Python命令工具所在目录添加到系统Path环境变量中,以后开发程序或者运行Python命令会非常方便◆选择自定义安装◆Python支持两种安装方式,默认安装和自定义安装:默认安装会勾选所有组件,并安装在C盘;自定义安装可以手动选择要安装的组件,并安装到其它盘符。计算机视觉

计算机视觉

◆选择好你常用的安装目录,点击“Install”,等待几分钟就可以完成安装计算机视觉

◆安装完成以后,打开Windows的命令行程序(命令提示符),在窗口中输入python命令(注意字母p是小写的),如果出现Python的版本信息,并看到命令提示符>>>,就说明安装成功了计算机视觉

◆运行python命令启动的是python交互式编程环境,我们可以在>>>后面输入代码,并立即看到执行结果◆按下Ctrl+Z快捷键,或者输exit()命令即可退出交互式编程环境,回到Windows命令行程序计算机视觉

Python解释器3.4以后的版本自带pip包管理工具,且自带代码编辑器IDLE,因此安装了3.4之后的版本的解释器就相当于安装了3个工具。◆IDLE的全称是IntegratedDevelopmentandLearningEnvironment是Python自带的集成开发和学习环境◆Windows开始◆搜索IDLE◆打开窗口计算机视觉

◆在实际开发中,通常不能只包含一行代码,当需要编写多行代码时,可以单独创建一个文件保存这些代码,在全部编写完成后一起执行◆

File->NewFile”菜单项,将打开一个新窗口,在该窗口中,可以直接编写Python代码◆py是Python文件的扩展名◆在菜单栏中选择“Run->RunModule”菜单项计算机视觉

但是,由于Python解释器自带的IDLE不好使用,只适合少量代码编辑。因此,一般会再安装一个第三方的编辑器,如pycharm,vscode等。PyCharm安装,

PyCharm是由JetBrains开发的IDE◆

Python安装包下载地址:/products.html◆

选择PyCharm进入计算机视觉

◆PyCharm有两个版本◆

专业版(收费)Professional◆

社区版(免费)Community◆

社区版功能上少一点,不过我们学习足够了计算机视觉

◆选中下载下来的文件,点击右键◆

选择“以管理员身份运行计算机视觉

可以保持默认的安装目录◆

如果需要更改,点击Browse选择一个自己喜欢的安装位置◆

点击Next计算机视觉

勾选CreateDesktopShortcut创建一个桌面快捷方式,其他的选项可以忽略不选◆点击Next计算机视觉

◆安装完毕后,可以不直接RunPyCharm◆

等一会用桌面的快捷方式图标运行◆

点击Finish计算机视觉

桌面上的快捷方式点击右键◆

选择“以管理员身份运行计算机视觉

Customize是个性化IDE的界面◆

可以调节字号大小◆

显示界面的颜色(黑色或白色)计算机视觉

◆新建工程Project◆

为新工程起名pythonProject001◆

设定解释器interpreter计算机视觉

◆点击右键New◆

新建PythonFile计算机视觉

◆输入测试程序◆运行查看结果计算机视觉

四、安装anaconda+第三方编辑器Pycharm◆anaconda有两个好处,一是集成了很多常用的,尤其是和数据分析相关的第三方库以及python3.7版本解释器以及很多编辑器(如jupyter、Spyder等)﹔二是可以创建虚拟环境,兼容python2.x和python3.x,因此更加方便,因此很多人会选择安装anaconda(安装anaconda就不用按照第上面方法操作了),只要安装了anaconda,也就相当于集齐了安装python需要的3个工具,而且更多。◆为什么还要安装pycharm呢(只要安装了anaconda,完全可以不安装pycharm),只是因为anaconda虽然有很多编辑器〈(如jupyter、Spyder等),但是pycharm是专门针对python的,非常方便,行业应用多,因此,作为长期学习工作考虑,有必要安装学习。计算机视觉

安装Anaconda官网下载地址:(选择Windows64bit)https:///products/individual

计算机视觉

双击下载好的exe文件进行安装,点击next,点击iagree,选择justforme点击next,点击browse选择安装目录,勾选红色框点击install等待完成,点击next,点击skip,取消两个勾选框点击finish;计算机视觉

按win+R,输入cmd进入终端,输入python,如果出现Python版本信息说明安装成功(如果看不到尝试先进入安装目录在输入python)。计算机视觉

在计算机视觉项目的开发中,OpenCV(OpenSourceComputerVisionLibrary)作为最大众的开源库,拥有了丰富的常用图像处理函数库,采用C/C++语言编写,可以运行在Linux、Windows、Mac等操作系统上,能够快速的实现一些图像处理和识别的任务。此外,OpenCV还提供了java、python、cuda等的使用接口、机器学习的基础算法调用,从而使得图像处理和图像分析变得更加易于上手,让开发人员更多的精力花在算法的设计上。2.2OpenCV视觉库计算机视觉

OpenCV的应用领域OpenCV是一个用于图像处理、分析、机器视觉方面的开源函数库,该库也包含了比较常用的一些机器学习算法。或许,很多人知道图像识别、机器视觉在安防领域有所应用。但很少有人知道,在航拍图片、街道图片(例如googlestreetview)中,要严重依赖于机器视觉的摄像头标定、图像融合等技术。近年来,在入侵检测、特定目标跟踪、目标检测、人脸检测、人脸识别、人脸跟踪等领域,OpenCV可谓大显身手,而这些,仅仅是其应用的冰山一角。如今,来自世界各地的各大公司、科研机构的研究人员,共同维护支持着OpenCV的开源库开发。这些公司和机构包括:微软,IBM,索尼、西门子、google、intel、斯坦福、MIT、CMU、剑桥。计算机视觉

计算机视觉

OpenCV-python安装前面安装好anaconda后,可以在anaconda下创建一个opencv-python环境首先,打开anacondanavigator,然后创建一个环境来放opencv-python。先点击下面的create,然后创建一个新环境。2.2OpenCV视觉库计算机视觉

选择python版本,这里选择的是Python3.6。也可以根据需要和习惯来选择合适的python版本。环境名字可以自己命名,但是尽量写自己能看懂的...这里已经创建了一个叫opencv-python的环境,为了演示,这里创建一个叫Pytorch_envs的环境。然后会自动开始下载一些相关包。计算机视觉

之后,打开anacondaprompt。先激活环境:activateopenCV(这里打开的是已经创建好的openCV环境,前面只做过程讲解)完成到这一步代表OpenCV环境框架搭建完成计算机视觉

安装numpy:pipinstallnumpy安装OpenCV-Python:pipinstallopencv-python安装imutils:pip

installimutils安装scipy:pipinstallscipy安装完opencv-python后命令行打开python交互式环境:importcv2成功,便说明成功安装了opencv-python计算机视觉

2.3OpenCV视觉库模块OpenCV的CV模块包含基本的图像处理函数和高级的计算机视觉算法。ML是机器学习库,包含一些基于统计的分类和聚类工具。HighGUI包含图像和视频输入/输出的函数。CXCore包含OpenCV的一些基本数据结构和相关函数。计算机视觉

计算机视觉

OpenCV图像基本操作1.图像的读、写、显示(1)图像读取cv2.imread(文件名,显示控制参数),第一个参数是图像文件名,第二个参数是要告诉函数应该如何读取这幅图像。cv2.IMREAD_COLOR:读入一副彩色图像,图像的透明度会被忽略,这是默认参数。cv2.IMREAD_GRAYSCALE:以灰度模式读入图像。(2)图像显示dWindow(窗口名),创建指定名称的窗口。cv2.imshow(窗口名,图像名),在指定的窗口显示图像。cv2.destroyWindow(窗口名),删除指定窗口。cv2.destroyAllWindow(),删除所有窗口。cv2.waitKey([delay]),键盘绑定函数,当decay>0时,等待delay毫秒;当decay<0时,等待键盘单击;当decay=0时,无限等待。计算机视觉

#OpenCV读入图像,matplotlib显示importcv2ascvfrommatplotlibimportpyplotaspltimg=cv.imread("D:\opencv\lenna.jpg")b,g,r=cv.split(img)img2=cv.merge([r,g,b])plt.subplot(121),plt.imshow(img),plt.xticks([]),plt.yticks([])plt.subplot(122),plt.imshow(img2),plt.xticks([]),plt.yticks([])plt.show()(a)未经通道变换(b)经过通道变换计算机视觉

(3)图像保存cv2.imwrite(文件名,图像名),第一个参数是保存的文件名,第二个参数是要保存的图像。图像读、显示、写示例#OpenCV图像读取、显示和保存importcv2img=cv2.imread('D:/opencv/bird.jpg')dWindow("Image")cv2.imshow("Image",img)cv2.waitKey(0)cv2.destroyAllWindows()cv2.imwrite('D:\\opencv\\bird2.jpg',img)

计算机视觉

2图像几何变换(1)图像的平移平移对应的齐次坐标矩阵表示形式为:以图像沿x方向移动100像素、y方向移动50像素为例,实现程序如下:。#图像平移importcv2importnumpyasnpimportmatplotlib.pyplotaspltimg=cv2.imread('D:/opencv/flower.jpg')M=np.float32([[1,0,100],[0,1,50]])#变换矩阵rows,cols=img.shape[:2]#warpAffine有三个参数,原始图像、变换矩阵、变换后的图像大小res=cv2.warpAffine(img,M,(rows,cols))b,g,r=cv2.split(img)img=cv2.merge([r,g,b])b,g,r=cv2.split(res)res=cv2.merge([r,g,b])plt.subplot(121)plt.imshow(img)plt.subplot(122)plt.imshow(res)plt.show()

计算机视觉

(2)图像的缩放对应的齐次坐标矩阵表示形式为:图像的扩大与缩小有专门函数,cv2.resize()在函数cv2.resize()中,有几种不同的插值(interpolation)方法可供选择,在缩小时推荐cv2.INTER_ARER方法,扩大时推荐cv2.INTER_CUBIC和cv2.INTER_LINEAR方法,默认情况下采用cv2.INTER_LINEAR方法。以图像宽度不变、高度放大一倍为例,缩放程序示例如下:#图像缩放importnumpyasnpimportcv2ascvfrommatplotlibimportpyplotaspltimg=cv.imread("D:/opencv/flower.jpg")height,width=img.shape[:2]Scaling_img=cv.resize(img,(1*width,2*height),interpolation=cv.INTER_CUBIC)dWindow("Image")cv.imshow('Scalingimage',Scaling_img)cv.imshow('Imputimage',img)cv.waitKey(0)cv.destroyAllWindows()

计算机视觉

(3)图像的旋转对应的齐次坐标矩阵表示形式为:cv2.getRotationMatrix2D(),用来获得旋转变换矩阵。这个函数需要三个参数,旋转中心,旋转角度,旋转后图像的缩放比例。以图像旋转45度为例,实现程序如下:#图像旋转importcv2importnumpyasnpimportmatplotlib.pyplotaspltimg=cv2.imread('D:/opencv/flower.jpg')rows,cols=img.shape[:2]#获得旋转变换矩阵M,参数一是旋转中心,参数二旋转角度,参数三缩放比例M=cv2.getRotationMatrix2D((cols/2,rows/2),45,1)#获得M后,调用cv2.warpAffine函数得到旋转后的图像res=cv2.warpAffine(img,M,(cols,rows))b,g,r=cv2.split(img)img=cv2.merge([r,g,b])b,g,r=cv2.split(res)res=cv2.merge([r,g,b])plt.subplot(121),plt.imshow(img)plt.subplot(122),plt.imshow(res)plt.show()计算机视觉

(4)图像的翻转垂直(以X轴为对称轴)翻转对应的齐次坐标矩阵表示形式为OpenCV中提供了函数cv2.flip(src,flipCode)来实现图像的翻转,scr为原图像,flipCode为翻转代码:flipCode=0,以X轴为对称轴翻转;flipCode>0,以Y轴为对称轴翻转;flipCode<0,同时沿X、Y轴翻转。水平、垂直、水平垂直翻转示例#图像翻转importcv2importnumpyasnpfrommatplotlibimportpyplotaspltimage=cv2.imread('D:/opencv/flower.jpg')#FlippedHorizontally水平翻转h_flip=cv2.flip(image,1)#FlippedVertically垂直翻转v_flip=cv2.flip(image,0)#FlippedHorizontally&Vertically水平垂直翻转hv_flip=cv2.flip(image,-1)plt.figure(figsize=(8,8))plt.subplot(221),plt.imshow(image[:,:,::-1]),plt.title('original')plt.subplot(222),plt.imshow(h_flip[:,:,::-1]),plt.title('horizontalflip')plt.subplot(223),plt.imshow(v_flip[:,:,::-1]),plt.title('verticalflip')plt.subplot(224),plt.imshow(hv_flip[:,:,::-1]),plt.title('h_vflip')#调整子图间距plt.subplots_adjust(top=0.9,bottom=0.2,left=0.10,right=0.95,hspace=0.4,wspace=0.05)plt.show()

计算机视觉

(5)图像的剪裁取原图像x方向100:350像素、y方向100:350像素的图像,代码如下#图像剪裁importcv2ascvimportnumpyasnpimg=cv.imread("D:/opencv/flower.jpg")img2=img[100:350,100:350]cv.imshow('image',img2)cv.waitKey(0)

计算机视觉

(6)图像的仿射图像旋转加上拉伸形成图像仿射变换。仿射变换需要确定变换矩阵MOpenCV提供一种根据变换前后三个点(左上角,左下角,右上角)的对应关系来自动求解变换矩阵M的函数,M=cv2.getAffineTransform(pos1,pos2),参数pos1和pos2分别为变换前后三个点的位置。得到M后,使用函数cv2.warpAffine()即可进行仿射变换。width=imgInfo[1]mode=imgInfo[2]#原图中的三个点matSrc=np.float32([[0,0],[0,height-1],[width-1,0]])#对应的变换后的三个点matDst=np.float32([[50,50],[100,height-50],[width-200,100]])#获得仿射变换矩阵M=cv.getAffineTransform(matSrc,matDst)#得到变换后的图像dst=cv.warpAffine(img,M,(height,width))cv.imshow('image',dst)cv.waitKey(0)

#图像仿射变换importcv2ascvimportnumpyasnpimg=cv.imread("D:/opencv/flower.jpg")imgInfo=img.shapeheight=imgInfo[0]计算机视觉

3.图像颜色变换(1)图像通道拆分与合并常见的彩色图像有R、G、B三个通道,OpenCV中提供函数cv2.split()将彩色图像拆分为R、G、B三个通道,相应地,提供cv2.merge()函数,实现三通道的合并。#图像通道拆分importnumpyasnpimportcv2ascvfrommatplotlibimportpyplotaspltimg=cv.imread("D:/opencv/flower.jpg")b,g,r=cv.split(img)dWindow("Image")cv.imshow('ChannelB',b)cv.imshow('ChannelG',g)cv.imshow('ChannelR',r)cv.waitKey(0)cv.destroyAllWindows()R通道图像G通道图像

B通道图像计算机视觉

(2)图像的反转图像反转特别适用于增强嵌入图像暗色区域中的白色或灰色细节,灰度值范围在[0,L-1]的图像,其反转图像可由公式s=L-1-r获得,其中,r为原图像像素灰度值,s为反转后的像素灰度值。计算机视觉

第3章图像预处理3目录计算机视觉

3.13.23.3空域滤波频域滤波直方图修正计算机视觉

图像预处理方法:直方图修正,空域滤波和频域滤波图像预处理的主要目的:是消除图像中的无关信息,恢复有用的、真实的信息,可以提高特征抽取、图像分割、匹配和识别的可靠性。计算机视觉

3.1直方图直方图是一个二维坐标系,横轴表示整幅图像上灰度值的变化范围,纵轴表示每个灰度值的统计个数。直方图能够反映灰度图像的灰度分布特征。原始图像直方图计算机视觉

灰度直方图定义:nk:灰度值等于rk的像素数量(计数值)rh(r)计算机视觉

直方图的性质直方图描述了每个灰度级具有的像素的个数,但它不能为这些像素在图像中的空间位置提供任何线索。因此,任何一幅特定的图像具有唯一的直方图,但反之并不成立。极不相同的图像可以有相同的直方图。例如,在图像中移动物体一般对直方图没有影响。直方图的性质总结如下。不同图像具有相同直方图计算机视觉

3.1.1直方均衡化许多图像的灰度值是非均匀分布的,其中灰度值集中在一个小区间内的图像是很常见的.直方图均衡化是一种通过重新均匀地分布各灰度值来增强图像对比度的方法.一般来说,直方图修正能提高图像的主观质量,因此在处理艺术图像时非常有用.计算机视觉

3.1.2均衡化实现流程:

计算机视觉

例:一幅大小为64×64的灰度图像有8个灰度级(L=8),所示为该图像的灰度分布信息,对该图像进行直方图均衡化处理原图像灰度级k像素数量nkk=0790k=11023k=2850k=3656k=4329k=5245k=6122k=781图像灰度级k归一化灰度级rk像素数量nkk=0r0=0

7900.190.19k=1r1=1/710230.250.44k=2r2=2/78500.210.65k=3r3=3/76560.160.81k=4r4=4/73290.080.89k=5r5=5/72450.060.95k=6r6=6/71220.030.98k=7r7=1810.021表3-1表3-2计算机视觉

计算机视觉

直方图均衡化的优缺点:

直方图均衡化方法对于背景和前景都太亮或者太暗的图像非常有用,尤其是可以改善X光图像中由于曝光过度或曝光不足而导致的骨骼结构显示不清晰的情况,该方法的主要优势就是它是一个相当直观的技术且是可逆操作。

该方法的缺点是,对处理的数据不加选择,这样可能会增加背景无用信息的对比度,并且降低有用信息的对比度;变换后图像的灰度级减少,导致某些细节消失。计算机视觉

3.1.3直方规定化

直方图均衡化实现了图像灰度的均衡分布,对提高整幅图像的对比度有明显作用。但是,在实际应用中,有时候需要对某些特定的灰度区间进行增强。这时,可以使用直方图规定化的方法,按需要灵活地对直方图的分布进行调整。

直方图规定化,也叫做直方图匹配,用于将图像变换为某一特定的灰度分布。因此,规定化操作可以有目的的增强某个灰度区间。在执行规定化操作时,首先要知道变换后的灰度直方图,这样才能确定变换函数。计算机视觉

(1)计算原图像和规定化图像中各灰度级概率分布和;(2)计算原直方图和规定化直方图的累积率分布sk和vk;(3)对于原图像中的灰度级i,计算|si-vj|,使得|si-vj|最小时j的取值,即为i在规定化直方图中对应的灰度级,由此确定映射关系为i→j;直方图规定化的实现步骤:计算机视觉

(b)规定化直方图(a)原始图像直方图序号步骤灰度分布1图像灰度级k012345672原图像各灰度级像素nk7901023850656329245122813原直方图p(nk)0.190.250.210.160.080.060.030.024原直方图累积概率sk0.190.440.650.810.890.950.9815规定化直方图p(zk)0000.150.20.30.20.156规定化直方图累积概率vk0000.150.350.650.851序号步骤灰度分布1原图像灰度级k012345672原直方图累积概率sk0.190.440.650.810.890.950.9813规定化直方图累积vk0000.150.350.650.8514345667775确定映射关系6变换后的直方图0000.190.250.210.240.11原始图像灰度分布信息和规定化信息确定规定化的映射关系(c)规定化变换后的直方图计算机视觉

直方规定化的特点:直方图规定化就是修改一幅图像的直方图,使得其概率分布逼近目标直方图的概率分布。当需要具有特定直方图的图像时,可按照预先设定的某个形状人为的调整图像的直方图。使用直方图规定化的方法,需先根据经验知识,计算最合适的规定直方图,与原始图像一起作为输入,输出为规定化之后的图像,从而达到特定的图像增强效果。直方图均衡化与直方图规定化对比直方图均衡化:自动增强;效果不易控制;得到的是全局增强的结果。直方图规定化:有选择地增强;须给定需要的直方图;可得到局部增强的结果。计算机视觉

3.2空间域滤波图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作;如低通滤波器会滤除信号中的高频成分,从而达到去噪的效果。滤波方法:空间域法和频率域法.空间域方法主要是在空间域内对图像像素直接运算处理。频率域方法就是在图像的某种变换域,对图像的变换值进行运算,如先对图像进行付立叶变换,再对图像的频谱进行某种计算(如滤波等),最后将计算后的图像逆变换到空间域。计算机视觉

其中,M是邻域N内的像素点总数。在像素点[i,j]处取3X3邻域,得:(1)均值滤波器每一个像素值用其局部邻域内所有值的均值置换3.2.1空间平滑域滤波计算机视觉

均值滤波器的实现:进行卷积模板的等权值卷积运算实现。计算机视觉

903X3窗口7X7窗口邻域N的大小控制着滤波程度,对应大卷积模板的大尺度邻域会加大滤波程度.作为去除大噪声的代价,大尺度滤波器也会导致图像细节的损失.计算机视觉

(2)高斯平滑滤波高斯滤波器是一类根据高斯函数的形状来选择权值的线性平滑滤波器.高斯平滑滤波器对去除服从正态分布的噪声是很有效的.

一维零均值高斯函数为:

其中,高斯分布参数σ决定了高斯滤波器的宽度.计算机视觉

高斯滤波器可认为是一种线性加权的均值滤波器。高斯滤波模板处于掩膜中心位置的像素权值较大,距离掩膜中心较远的像素权值较小,这是为了减小平滑处理中的模糊现象。需要注意的是,该掩膜所有系数的和为16,那么掩膜中心位置的滤波响应可表示为:计算机视觉

#对高斯噪声图像进行高斯平滑滤波,模板大小为3*3,σ=3img_Gaussian_blur=cv.GaussianBlur(img_Gaussian_noise,(3,3),sigmaX=3)#openCv高斯模糊函数show(np.hstack([img_Gaussian_noise,img_Gaussian_blur]))原图、添加了高斯噪声的图像、3×3高斯模板处理后的图像、7×7高斯模板处理后的图像计算机视觉

均值滤波和高斯滤波运算的主要问题:有可能模糊图像中的尖锐不连续部分.按亮度值大小排列像素点选排序像素的中间值作为点的新值。中值滤波器:中值滤波器的基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,该方法在去除脉冲噪声、椒盐噪声的同时又能保留图像边缘细节,这是因为它不依赖于邻域内那些与典型值差别很大的值。例如,取函数窗,计算以点为中心的函数窗像素中值步骤如下:(3)中值滤波器计算机视觉

计算机视觉

#对椒盐噪声图像进行中值滤波,模板大小为3×3img_median_blur=cv.medianBlur(img_salt_pepper_noise,3)#openCv中值模糊函数show(np.hstack([img_salt_pepper_noise,img_median_blur]))左图为原图,中间为添加椒盐噪声的图像,右图为3×3模板中值滤波后的图像计算机视觉

3.2.2空域锐化滤波与平滑滤波器的作用相反,图像锐化的目的是突出图像中的细节.抑制图像中灰度平坦区域。如果说平滑滤波是一种低通滤波器的话,锐化滤波则属于高通滤波器。(1)基于一阶微分的图像锐化近似一阶微分图像梯度算子Roberts算子Prewitt算子Sobel算子计算机视觉

Roberts算子计算机视觉

Prewitt算子检测竖直边缘检测水平边缘Prewitt算子,近似一阶微分卷积模版:去噪+增强边缘

Gx=(z7+z8+z9)-(z1+z2+z3)Gy=(z3+z6+z9)-(z1+z4+z7)梯度值:

|f||Gx|+|Gy|计算机视觉

Sobel算子Sobel算子,近似一阶微分去噪+增强边缘,给四邻域更大的权重Sobel算子对于象素的位置的影响做了加权,因此效果更好。Gx-220-110-110000-1-1-2112Gyz2z8z5z3z9z6z1z7z4Sobel算子为:

Gx=(z7+2z8+z9)-(z1+2z2+z3)Gy=(z3+2z6+z9)-(z1+2z4+z7)梯度值:|f||Gx|+|Gy|计算机视觉

Sobel例子#Sobel算子锐化importnumpyasnpimportmatplotlib.pyplotaspltimportcv2ascv#定义sobel算子defsobel(img):h,w=img.shapenew_img=np.zeros([h,w])x_img=np.zeros(img.shape)y_img=np.zeros(img.shape)sobel_y=np.array([[-1,-2,-1],[0,0,0],[1,2,1]])sobel_x=np.array([[-1,0,1],[-2,0,2],[-1,0,1]])foriinrange(h-2):forjinrange(w-2):x_img[i+1,j+1]=abs(np.sum(img[i:i+3,j:j+3]*sobel_x))y_img[i+1,j+1]=abs(np.sum(img[i:i+3,j:j+3]*sobel_y))new_img[i+1,j+1]=np.sqrt(np.square(x_img[i+1,j+1])+np.square(y_img[i+1,j+1]))returnnp.uint8(new_img)

img=cv.imread('lenna.png',0)img_sobel=sobel(img)show(np.hstack([img,img_sobel]))计算机视觉

在数字图像上计算二阶微分拉普拉斯算子0-10-14-10-10-1-1-1-18-1-1-1-1(2)基于二阶微分的图像锐化90度旋转各向同性的滤波45度各向同性的滤波因为数字图像是离散形式,则有:拉普拉斯算子的数字近似3*3卷积模版计算机视觉

#Laplace算子锐化importnumpyasnpimportmatplotlib.pyplotaspltimportcv2ascv#定义Laplace算子defLaplace_op(img,n):#n表示采用n邻域Laplace算子h,w=img.shapenew_image=np.zeros((h,w))ifn==4:filter=np.array([[0,1,0],[1,-4,1],[0,1,0]])elifn==8:filter=np.array([[1,1,1],[1,-8,1],[1,1,1]])foriinrange(h-2):forjinrange(w-2):new_image[i+1,j+1]=abs(np.sum(img[i:i+3,j:j+3]*filter))returnnp.uint8(new_image)

img=cv.imread('lenna.png',0)lap4_image=Laplace_op(img,4)lap8_image=Laplace_op(img,8)show(np.hstack([img,lap4_image,lap8_image]))计算机视觉

拉普拉斯算子的特点拉普拉斯算子的运算结果是标量只有幅值,只使用一个模版便可计算得到方向属性丢失实际中几乎不单独使用拉普拉斯算子:二次求导数,对噪声非常敏感通常配合滤波器同时使用计算机视觉

LaplacianofGaussian(LoG)首先用Gauss函数对图像进行平滑,抑制噪声然后对经过平滑的图像使用Laplacian算子利用卷积的性质LoG算子等效于:

Gaussian平滑+Laplacian二阶微分计算机视觉

二维边缘微分滤波器LoG算子:高斯拉普拉斯高斯高斯的导数计算机视觉

计算机视觉

Canny边缘检测器J.Canny,“AComputationalApproachtoEdgeDetection”,IEEETrans.onPAMI,8(6),1986.CSDivision,UniversityofCalifornia,BerkeleyBID:TheBerkeleyInstituteofDesignJohnCannyCanny的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是:好的检测(Gooddetection)

-算法能够尽可能多地标识出图像中的实际边缘。好的定位(Goodlocalization)-标识出的边缘要尽可能与实际图像中的实际边缘尽可能接近。低的错误检测率(Lowfalsepositives)

-图像中的边缘只能标识一次,并且可能存在的图像噪声不应标识为边缘。计算机视觉

Canny边缘检测算法算法基本过程:计算图像梯度梯度非极大值抑制双阈值提取边缘点幅值大小M(x,y)方向Theta(x,y)NMS:Non-MaximaSuppression计算机视觉

Canny边缘检测算子主要包括以下几个步骤:①高斯平滑滤波,采用高斯平滑滤波对原图像进行降噪处理。②计算梯度幅值和方向:③非极大值抑制,沿梯度方向,对梯度幅值进行非极大值抑制。④双阈值边缘筛选,设置两个阈值,分别为低阈值和高阈值。计算机视觉

计算图像梯度:高斯函数的一阶导数-11-11(2)使用一阶有限差分计算偏导数的两个阵列:(1)求图像与高斯平滑滤波器卷积:11-1-1相当于与模版进行卷积运算:代表对图像的平滑程度计算机视觉

计算图像梯度:高斯函数的一阶导数(3)幅值和方位角:M代表梯度幅值的大小,在存在边缘的图像位置处,M的值变大,图像的边缘特征被“增强”计算机视觉

非极大值抑制NMS非极大值抑制(NMS:Non-MaximaSuppression)主要思想:由梯度幅值图像M(x,y),仅保留极大值。(严格地说,保留梯度方向上的极大值点。)得到的结果为N(x,y),具体过程:初始化N(x,y)=M(x,y)对于每个点,在梯度方向和反梯度方向各找n个像素点。若M(x,y)不是这些点中的最大点,则将N(x,y)置零,否则保持N(x,y)不变。计算机视觉

非极大值抑制NMS

在梯度方向的沿线上检测该点是否为局部极大值简化的情形,只使用4个方向:{0,45,90,135}

得到的结果N(x,y)包含边缘的宽度为1个像素计算机视觉

对NMS结果进行二值化对上述得到的N(x,y)使用阈值进行二值化使用大的阈值,得到:少量的边缘点许多空隙使用小的阈值,得到:大量的边缘点大量的错误检测计算机视觉

使用双阈值检测边缘两个阈值T1,T2:T2>>T1由T1得到E1(x,y),低阈值边缘图:更大的误检测率由T2得到E2(x,y),高阈值边缘图:更加可靠边缘连接:E1E1E1E1E2E2E2计算机视觉

边缘连接将E2(x,y)中相连的边缘点输出为一幅边缘图像E(x,y)对于E(x,y)中每条边,从端点出发在E1(x,y)中寻找其延长的部分,直至与E(x,y)中另外一条边的端点相连,否则认为E1(x,y)中没有它延长的部分将E(x,y)作为结果输出E1E1E1E1E2E2E2计算机视觉

Canny算子:流程原始图像原始图像经过Gauss平滑计算机视觉

Canny算子:流程梯度幅值图像梯度幅值经过非极大值抑制计算机视觉

Canny算子:流程低阈值边缘图像高阈值边缘图像Canny输出边缘图像计算机视觉

使用Canny算子需要注意的问题Canny算子的优点:参数较少计算效率得到的边缘连续完整参数的选择:Gauss滤波的尺度双阈值的选择(LOW=HIGH*0.4)计算机视觉

渐增高斯滤波模版的尺寸计算机视觉

渐增双阈值的大小,保持low=high*0.4计算机视觉

3.3频域滤波3.3.1离散傅里叶变换一维连续函数f(x)的傅里叶变换可记为F(u),f(x)和F(u)被称为一个傅里叶变换对,记为:离散离散傅里叶变换

u=0时,u=1时,傅里叶变换的每一项是由的所有值(x=0,1,2,...,M-1)的和组成的。DFT变换逆变换获得原函数f(x):计算机视觉

二维DFT可表示为:逆DFT变换公式为:x和y为空间域变量,u和v为频率域变量。计算机视觉

傅里叶变换具有平移性和对称性,这对于其在图像处理中的应用非常重要平移性:图像f(x,y)在空域与指数函数相乘对应于F(u,v)在频域的移位当时则有:计算机视觉

对称性该性质可简化频域滤波器的设计复杂度计算机视觉

3.3.2频域滤波步骤(1)将原始图像f(x,y)乘以(-1)x+y;(2)对进行DFT,将图像变换至频率域,得到F(u,v);(3)构建频域滤波器H(u,v),并与F(u,v)相乘,完成滤波,得到G(u,v);(4)将G(u,v)进行逆DFT变换,得到滤波后的图像;(5)将滤波后图像乘以(-1)x+y以消除在步骤(1)中对图像的处理,得到最终图像。计算机视觉

3.3.3频域平滑滤波器傅里叶变换后,低频成分对应图像中灰度变化平缓区域,高频成分对应图像中灰度尖锐变换部分,如边缘和噪声。频域平滑滤波器可通过抑制图像傅里叶变换中的高频部分、保留低频部分来实现,因此,平滑滤波器也称为低通滤波器。频域滤波公式:F(u,v)为待滤波图像的傅里叶变换,H(u,v)为要构建的滤波器,G(u,v)表示滤波结果。计算机视觉

(1)理想低通滤波器D(u,v)为点(u,v)到滤波器中心的距离,D0是一个给定的非负数,也称为截止频率。(a)原图及其频谱图(b)滤波器(D0=30)及其及滤波后图像(c)滤波器(D0=50)及其及滤波后图像计算机视觉

(2)巴特沃斯低通滤波器n阶巴特沃斯低通滤波器可表示为:D(u,v)为点(u,v)到滤波器中心的距离,D0是截止频率,n是巴特沃斯低通滤波器的阶数。巴特沃斯低通滤波(n=2,D0=30)计算机视觉

(3)高斯低通滤波器高斯低通滤波器的二维表示形式为:D(u,v)为点(u,v)到滤波器中心的距离,D0是截止频率。高斯低通滤波(D0=30)计算机视觉

3.3.4频域锐化滤波器与平滑滤波器相对,锐化滤波器保留图像频率域的高频成分,也称为高通滤波器。(1)理想高通滤波器理想高通滤波器(IHPF)的定义如下:理想高通滤波(D0=30)计算机视觉

(2)巴特沃斯高通滤波器n阶巴特沃斯高通滤波器可用表示为:巴特沃斯高通滤波(n=2,D0=30)第4章特征提取4目录4.1HOG特征4.24.3SIFT特征哈希特征4.1HOG特征HOG即方向梯度直方图(HistogramofOrientedGradient),HOG特征是一种在计算机视觉和图像处理中用于物体检测的特征描述子,即用图像梯度信息来识别物体。它通过对图像的每个单元进行梯度方向直方图计算来构成特征向量。HOG特征结合SVM分类器已被广泛应用于图像识别中,思路就是用提取出的HOG特征训练分类器。其优点是对于目标相同但大小、方向不同的图像,可以利用相同的HOG特征模式来检测,而不管目标的位置和呈现方式。HOG特征在行人检测应用中获得了极大的成功,由于HOG是在图像的局部方格单元上操作,所以它对图像的几何和光学形变都能保持很好的不变性,只要行人大体上能够保持直立的姿势,可以容许行人有一些细微的肢体动作,这些细微的动作可以被忽略而不影响检测效果。HOG特征提取步骤

步骤4:将图像划分成若干个单元cells,例如每个cell为8x8像素。步骤5:统计每个cell的梯度直方图,即可形成每个cell的描述子。假设采用9个bin的直方图来统计这8*8个像素的梯度信息,其中,9个bin的向量代表的是角度0,20,40,60.....160(不考虑方向的正负)。也就是将cell的梯度方向0-360度分成9个方向块需要注意的是,如果有一个角度在160-180度之间,这里不考虑方向的正负,角度0和180度可用同一个bin表示,角度为165度,梯度值为85,要把梯度值按照比例放到0和160的bin里面去。把这8*8的cell里所有像素点的梯度值分别累加到9个bin里面去,就构建了一个9-bin的直方图步骤6:将几个cell组成一个block(例如3x3个cell/block),一个block内所有cell的特征描述子串联起来便得到该block的HOG特征描述子。计算block的时候,是把整张图像遍历一遍的过程,窗口移动步长可以设定为1个cell。步骤7:将图像内所有block的HOG特征描述子串联起来就可以得到该图像的HOG特征描述子,这个就是最终可供分类使用的特征向量。例子:64x128的图像而言,每8x8个像素组成一个cell,每2x2个cell组成一个block,总共有多少个特征?因为每个cell有9个特征,所以每个块内有4x9=36个特征,以1个cell为步长,那么,水平方向将有7个扫描窗口,垂直方向将有15个扫描窗口。也就是说,64x128的图像,总共有36x7x15=3780个特征。4.2SIFT特征SIFT(ScaleInvariantFeatureTransform)即尺度不变特征变换,是一种基于尺度空间的、对图像缩放、旋转甚至仿射变换保持不变性的图像局部特征描述算子。SIFT算子最早由D.G.Lowe于1999年提出,并于2004年完善。SIFT算法具有以下优点:(1)SIFT特征是图像局部特征,基于物体上的一些局部外观的兴趣点而与图像的大小和旋转无关,对于光线、噪声、视角改变的容忍度相当高。(2)独特性,SIFT特征高度显著而且相对容易提取,适用于在海量特征数据中进行快速、准确的匹配。使用SIFT特征描述对于部分物体遮挡的检测率也相当高。(3)多量性,即使是很少几个物体也可以产生大量的SIFT特征。(4)高速性,经优化的SIFT匹配算法甚至可以达到实时性。(5)可扩展性,可以很方便地与其他形式的特征向量进行联合。SIFT算法实现SIFT算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。算法主要包括以下几个步骤:步骤1:尺度空间的极值检测,搜索所有尺度空间上的图像,通过高斯微分函数来识别潜在的对尺度不变的兴趣点。步骤2:特征点定位,在每个候选位置上,通过拟合模型来确定位置尺度,关键点的选取依据它们的稳定程度。步骤3:特征方向赋值,基于图像局部梯度方向,分配给每个关键点位置一个或多个方向,后续的所有操作都是对于关键点的方向、尺度和位置进行变换,从而提供这些特征的不变性。步骤4:特征点描述,在每个特征点的邻域内,在选定的尺度上测量图像的局部梯度,这些梯度被变换成一种表示,这种表示允许比较大的局部形状的形变和光照变换。1DoG尺度空间构造

(1)尺度左边为sigma=1尺度下的图像,中间为sigma=3尺度下的图像,右边为sigma=5的图像,尺度越大,图像越模糊图像金字塔能够很好的显示图像多尺度空间的特征,SIFT算法中的图像金字塔共有o组,每组有S层,下一组的图像由上一组图像降采样得到。为原图的1/2.(2)图像金字塔(3)高斯金字塔构建为了能够检测到不同尺度下的特征点,对于一幅图像I,建立其高斯尺度金字塔。金字塔由若干组(Octave)构成,每组都是“复合”结构,又由若干层(Interval)不同尺度的图像组成。

前面已经有了高斯金字塔和DoG算子,根据下图可以进一步计算高斯差分金字塔。在高斯尺度金字塔中,每组包含6层图像,经过高斯差分之后每组为5层图像。(3)高斯差分金字塔图像差分运算就是对两个图像做一个相减的运算,寻找两幅图像不一样的地方。一种非常简单的图像特征提取方法,就是用原始图像减去经过高斯模糊后的图像,能够得到特征信息。从信号理论的角度来讲,模糊后的图像保留的是低频信息,原始图像减去低频信息留下高频信息。

中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。

一个点如果在DoG尺度空间本层以及上下两层的26个邻域中是最大值或最小值,就认为该点是图像在该尺度下的一个特征点。(1)粗略寻找2关键点搜索与定位由于DoG值对噪声和边缘较敏感,因此,在上面DoG尺度空间中检测到的局部极值点还需要进一步检验才能精确定位为特征点。(2)细化寻找第一步:寻找极值并去除较小的极值对关键点进行3D二次函数拟合,然后求拟合函数的极值点,作为真正的极值点。

(3)消除边缘噪声

(3)消除边缘噪声3方向赋值

前面已经获取了特征关键点的位置、尺度和方向参数,这些特征点已经对上述参数的变化保持了不变性。下一步,就是要生成一种能够描述这些特征的描述子。

4关键点描述子生成(2)旋转主方向将坐标轴旋转为关键点的方向,以确保旋转不变性那么旋转角度后的新坐标为:

(3)生成描述子

16*16邻域的sift特征点

5SIFT特征匹配两幅图中,给出了SIFT特征匹配的实例,可以看出,两幅图中,猫耳的方向是不同的,采用SIFT特征可成功匹配。由此可见,SIFT具有旋转不变性。Hash算法是在工程领域中度量两张图像相似度最常用的算法之一。Hash算法通过获取图像的Hash值,比较两张图像Hash值的汉明(HammingDistance)距离来度量图像是否相似。两张图像越相似,其Hash值的汉明距离越小。Hash算法可分为三种,分别是平均哈希算法(aHash)、感知哈希算法(pHash)和差异哈希算法(dHash)。下面将对这三种算法进行详细介绍。4.3哈希特征1平均哈希算法(aHash)4.3.1平均哈希算法(aHash)

实例:图像aHash值的计算过程17110413112612616013999147105119153208153147571519910716217519440159144101124531764355159136112127791375615617515041213771087314520710647116691521341329792581298913620448771011111010011110100111011010100110101011101000110000111000101100计算灰度图所有像素的均值a=121.33,将上述矩阵中大于或等于a的元素置为1,小于a的元素置为0,可得右图。将右图所示矩阵向量化,可得Lena图的aHash为:1011111010011110100111011010100110101011101000110000111000101100。(5)计算汉明距离:得到aHash值后,就可以比较两张图像的aHash值之间的汉明距离,通常认为汉明距离小于10的一组图像为相似图像。Lena原图的aHash值:1011111010011110100111011010100110101011101000110000111000101100

Lena噪声图的aHash值:1011111000011110100111011010100110101011101000110000111000101100

Barbara图的aHash值:1010010100101001011110010111111010100110001100000110010100000110

Lena原图和噪声图aHash值之间的汉明距离:1

Lena原图和Barbara图aHash值之间的汉明距离:35(a)Lena原图(b)加入噪声的Lena图(c)Barbara图感知哈希算法是基于DCT(离散余弦变换)来得到图片的hash值,其算法步骤为:(1)缩放图像:将图像大小统一缩放为32x32共1024个像素点。(2)图像灰度化:将缩放后的标准图像转为灰度图像。(3)DCT变换:对灰度图像做离散余弦变换,得到对应的32×32数据矩阵。(4)缩小DCT:取上一步32×32数据矩阵左上角的8×8子区域G来替代整幅图像,这部分呈现了图片中的最低频率。(5)计算像素均值:对8×8矩阵G,计算其所有元素的平均值,假设其值为a。(6)计算pHash值:遍历G中的每个像素,如果第i行j列元素G(i,j)≥a,则置G(i,j)为1,否则,置G(i,j)为0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论