计算机视觉应用开发课件:图像基础_第1页
计算机视觉应用开发课件:图像基础_第2页
计算机视觉应用开发课件:图像基础_第3页
计算机视觉应用开发课件:图像基础_第4页
计算机视觉应用开发课件:图像基础_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

图像基础图像相关名词概述位图01任务通道02任务图像相关名词概述1颜色模式03任务布局04任务学习目标了解图像的基本构成了解图像的通道含义

了解图像中不同的颜色模式了解图像的布局方式1位图1位图位图图像(bitmap),亦称为点阵图像或栅格图像,是由称作像素(图片元素)的单个点组成的。这些点可以进行不同的排列和染色以构成图样。当放大位图时,可以看见赖以构成整个图像的无数单个方块。位图的特点是可以表现色彩的变化和颜色的细微过渡,产生逼真的效果,缺点是在保存时需要记录每一个像素的位置和颜色值,占用较大的存储空间。1位图图像中像素点占的bit位数,就是图像的深度。比如:单色位图:每个像素最多可以表示2种颜色,只需要使用长度为1的二进制位来表示,因此每个像素占1/8B。16色位图:每个像素最多可以表示16种颜色,所以只需要长度为4的二进制表示,因此每个像素占1/2B。256色位图:每个像素最多可以表示256种颜色,所以只需要长度为8的二进制表示,因此每个像素占1B。依次轮推,通常将计算机中存储单个像素点所用的bit位称作图像的深度。BMP图像大小计算公式:大小=分辨率×位深度/8。2通道2通道图像通常分为单通道,三通道,四通道。单通道:就是通常所说的灰度图,每个像素点只有一个值表示,如果图像的深度为8,那么图像像素值在0(黑)~255(白)之间。三通道:就是通常所说的彩色图,每个像素点由三个值表示,如果图像深度为8,那么图像像素值由红(0~255)、绿(0~255)、蓝(0~255)叠加表示,色彩更加艳丽。四通道:也就是在三通道图像基础上加上透明程度,0是完全透明,255是完全不透明。3颜色模式颜色模式通过赋予C的不同维度不同的含义,可以用来描述不同的颜色空间。颜色模式,是将某种颜色表现为数字形式的模型,或者说是一种记录图像颜色的方式。本单元主要讲述两个常用的颜色模式:RGB,HSV。3颜色模式RGB模式是工业界的一种颜色标准,通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及通道之间相互的叠加来得到各式各样的颜色。R、G、B分别代表红、绿、蓝三个通道的颜色,这个标准几乎囊括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。HSV(Hue,Saturation,Value)是由A.R.Smith在1978年创建的一种根据颜色直观特性(色调H,饱和度S,明度V)得到的颜色空间。在HSV颜色空间下,相比于RGB更容易跟踪某种颜色的物体,常用于分割指定颜色的物体。34布局4向图片添加文字图像布局一般分为CHW和HWC两种布局方式。其中:C:channel,图像的通道数;H:height,图像的高度;W:width,图像的宽度。在实际运用中经常会用到这两种布局的转换,转换方式也非常简单,只需使用数组的transpose((2,0,1))方法即可。ThankYOU!图像基础概述01任务图像的读写与保存02任务图像基础1图像绘制03任务向图片添加文字04任务学习目标了解OpenCV掌握图像的读写与保存学会绘制线段,矩阵,圆,椭圆,矩阵,多边形等。向图片添加文字1概述1概述在学习图像操作前,我们先了解一下OpenCV。为什么呢?OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV用C++语言编写,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和MacOS。在以后的学习中,关于图像操作部分(主要是数据预处理环节),我们大部分使用OpenCV实现。OpenCV的安装命令“pipinstallopencv-python”,使用时通过“importcv2”导入就行了。2图像的读写与保存2图像的读写与保存图像是由众多的像素值构成的,我们如何去操作图像呢?答案就是将图像转化为数组。OpenCV提供了这样的方法。我们使用cv2.imread()方法读取图片,返回数组格式。图像的读写与保存对于cv2.imread(filename,flags)函数参数如下:参数filename:图片的路径和文件名。如果图片放在当前文件夹下,直接写文件名就行了,如“lena.jpg”,否则需要给出绝对路径或相对路径,如“img/lena.jpg”。参数flags:图片的读取方式,省略则为默认值。读取方式有三种,分别为:

cv2.IMREAD_COLOR:彩色图(1),默认值;cv2.IMREAD_GRAYSCALE:灰度图(0);cv2.IMREAD_UNCHANGED:包含透明通道的彩色图(-1)。2图像的读写与保存在实际应用中,通常对图像进行一系列操作后要显示一下处理后的结果。首先需要新建一个空白窗口用作图像显示,再调用图片显示命令在窗口中显示出图片。dWindow(window_name,默认参数)

的功能就是新建一个显示窗口,可以指定窗口的类型。具体的参数为:参数window_name是窗口的名字;默认参数为cv2.WINDOW_AUTOSIZE,表示窗口大小自适应图片,也可以设置为cv2.WINDOW_NORMAL,表示窗口大小可调整。图片比较大的时候,可以考虑用后者。在一般使用的时候,可以跳过此步,直接使用imshow()方法。22图像的读写与保存OpenCV中可以使用cv2.imshow()方法显示图片,同时窗口会自适应图片大小。imshow(window_name,image)方法也有两个参数,第一个参数window_name是窗口的名字,第二个参数image是要显示的图片内容的数组形式。该方法执行后会弹出一个窗口,窗口的名字就是上面定义的window_name。如果想要设置窗口的显示时间,则需要使用waitKey()方法,参数为设置的毫秒数,0代表永久显示(除非手动关掉窗口)。显示完成后,还需要释放窗口占用的资源,这里使用cv2.destroyAllWindows()方法,该方法会释放所有窗口占用的资源,如果要释放指定窗口的资源,可以使用cv2.destroyWindow(window_name)方法,参数window_name为要释放的窗口的名字。2图像的读写与保存如果想把处理后的图片结果保存到本地,可以使用cv2.imwrite(filename,img[,paras])方法,参数filename是保存的路径,参数img是保存的图片内容,paras表示不同编码格式的参数,一般为nparray多维数组形式。3图形绘制图形绘制在实际运用中,我们会在图片上添加一些图形,比如目标检测时在物体周围画个矩形框,人脸识别中将人脸的关键点用点(圆形)标出来。OpenCV常用的形状绘制方法:3线段的绘制是使用cv2.line(img,pt1,pt2,color[,thickness[,lineType[,shift]]])方法,参数img为输入的图像(绘制图像的每个方法的第一个参数都是输入的图像),参数pt1、pt2、color、thickness、lineType(可省略)依次为起点的坐标、终点的坐标、颜色、线条的粗细和线条的类型。参数shift代表坐标精确到小数点后第几位。图形绘制矩形的绘制是使用cv2.rectangle(img,pt1,pt2,color[,thickness[,lineType[,shift]]])方法。画矩形的方法可分为两种,一种是确定四个顶点的坐标,另一种只确定两个对角顶点的坐标。rectangle()方法基于后者。参数img为输入的图像,参数pt1、pt2为绘画矩形的两个对角顶点坐标,参数color、thickness、lineType(可省略)依次为颜色、线条的粗细和线条的类型。3圆形的绘制使用cv2.circle(img,center,radius,color[,thickness[,lineType[,shift]]])方法,参数img为输入的图像,参数center、radius、color、thickness、lineType(可省略)依次为圆形的原点、圆形的半径、颜色、线条的粗细和线条的类型。如果thickness变量的值为负,则代表要画一个实心圆。

图形绘制椭圆的绘制与圆形绘制相似,利用cv2.ellipse(image,centerCoordinates,axesLength,angle,startAngle,endAngle,color[,thickness[,lineType[,shift]]])方法实现椭圆的绘制。其中参数img为输入的图像,centerCoordinates、axesLength、angle、startAngle、endAngle、color、thickness、lineType分别为椭圆的中心坐标、元组(椭圆的长轴长度,短轴长度)、旋转角度、椭圆弧的起始角度、椭圆弧的终止角度、边界线的颜色、线条的粗细和线条的类型。3对于多边形的绘制,需要先创建包含顶点坐标的数组,再调用cv2.polylines(img,pts,isClosed,color[,thickness[,lineType[,shift]]])进行绘制。其中参数img为输入的图像,参数pts、isClosed、color、thickness、lineType分别为多边形上点的数组、标志、多边形颜色、多边形线的粗细、多边形线的类型。标志代表绘制的多边形是否闭合,若为True,

则画若干个闭合多边形,

若为False,

则画一条连接所有点的折线。4向图片添加文字4向图片添加文字OpenCV中的cv2.putText(img,text,org,fontFace,fontScale,color,thickness=None,lineType)方法实现了添加文字的功能,参数img、text、org、fontFace、fontScale、color、thickness、lineType分别为添加文字的图片、添加的文字、左上角坐标、字体、字体大小、颜色、字体粗细和线条类型。ThankYOU!图像几何变换图像缩放01任务图像翻转02任务图像平移及旋转03任务学习目标掌握图像的缩放掌握图像的翻转掌握图像的平移及旋转方法1图像缩放1图像缩放

图像缩放,顾名思义,就是对图像进行整体放大或缩小的操作。图像缩放在数据预处理时经常会用作规范图像的大小(宽高),从而便于后面神经网络的处理。OpenCV中是利用cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)方法来对图像进行缩放操作,该方法可以按照指定的宽度,高度缩放图片,也可以按照比例缩放图片。其中参数src、dsize、dst、fx、fy、interpolation分别为原图片、输出图像尺寸、目标图像、沿水平轴的比例因子、沿垂直轴的比例因子、插值方法。1图像缩放按照比例缩放:如果想让图片的宽和高均放大了一倍,则使用这种方式,需指定第二个参数dsize为None,接着指定fx和fy的值,表示要将宽和高放大或缩小的倍数。interpolation参数代表插值方式,默认为INTER_LINEAR双线性插值方式,通常可以不指定。2图像翻转2图像翻转图像翻转,即沿着某条线对图像进行翻转操作。图像翻转在数据集偏少的时候经常用来扩充数据集,从而增加拟合性。OpenCV中使用cv2.flip(src,flipCode,dst=None)方法实现图像的翻转,其中参数src为要翻转的图片,参数flipCode的值为0则垂直翻转(沿x轴);大于>0则水平翻转(沿y轴);小于0则代表水平垂直翻转,参数dst为目标图片。3图像平移及旋转图像平移及旋转图像平移,即让图片沿着x轴和y轴方向进行平移操作。首先需要具体了解一下图片中x轴和y轴是怎么确定的。整个坐标系是以图像的左上角为原点,向右为x轴,向下为y轴。OpenCV中利用cv2.warpAffine(src,M,dsize[,flags[,borderMode[,borderValue]]])方法来实现图像平移。首先需要定义平移矩阵M,矩阵M中是一个2行3列的放射变换矩阵,定义了x轴和y轴的平移量。参数src、dsize、flags、borderMode、borderValue分别为输入图像、输出图像的大小、插值法INTE_LINEAR(默认)、填充模式(当borderMode=BORDER_CONSTANT时为值填充)。33图像平移及旋转图像旋转使用的也是OpenCV中的cv2.warpAffine()方法,不同的是还需要使用其中的cv2.getRotationMatrix2D(center,angle,scale)方法来计算旋转矩阵。与图像翻转的区别是图像旋转是在同一水平面进行的,其中center为旋转中心,angle为旋转角度,负数表示顺时针旋转,scale为缩放比例。ThankYOU!阈值分割固定阈值分割01任务自适应阈值分割02任务Ostu阈值03任务图像轮廓04任务学习目标掌握固定阈值分割,自适应阈值分割,Otsu阈值分割基于阈值分割画出图像轮廓1固定阈值分割1固定阈值分割固定阈值化分割是一种传统的最常用的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术。它特别适用于目标和背景占据不同灰度级范围的图像。OpenCV中使用cv2.threshold(src,thresh,maxval,type[,dst])来实现固定阈值分割,其中ret是returnvalue缩写,代表当前的阈值。函数有4个参数:参数src:要处理的原图,一般是灰度图;参数thresh:设定的阈值;参数maxval:最大阈值,一般为255;1固定阈值分割参数type:阈值的方式,dst为目标图片,包含以下五种类型(cv2.THRESH_BINARY、cv2.THRESH_BINARY_INV、cv2.THRESH_TRUNC、cv2.THRESH_TOZERO、cv2.THRESH_TOZERO_INV)。cv2.THRESH_BINARY:超过阈值部分的,取最大值maxval,否则就是0;cv2.THRESH_BINARY_INV:与BINARY的情况刚刚相反;cv2.THRESH_TRUNC:大于阈值的部分,设置为阈值,否则不变;cv2.THRESH_TOZERO:大于阈值的部分不改变,否则设置为0;cv2.THRESH_TOZERO_INV:TOZERO的反转。2自适应阈值分割2自适应阈值分割固定阈值是将整幅图片都应用一个阈值进行分割,它并不适用于明暗分布不均的图片。自适应阈值分割通俗地讲就是图片的每个局部都会通过处理得到一个阈值,这个区域就用这个阈值来进行分割。每个区域都有不同的阈值来处理,这样就适用于处理颜色分布不均的图片。OpenCV中使用cv2.adaptiveThreshold(src,maxValue,adaptiveMethod,thresholdType,blockSize,C,dst=None)自适应阈值方法每次取图片的小部分来计算阈值,这样图片不同区域的阈值就不尽相同。其函数的参数分别为:参数src:要处理的原图;参数maxValue:最大阈值,一般为255;2自适应阈值分割参数adaptiveMethod:小区域阈值的计算方式(ADAPTIVE_THRESH_MEAN_C:小区域内取均值,ADAPTIVE_THRESH_GAUSSIAN_C:小区域内加权求和,权重是高斯核);参数thresholdType:阈值方式;参数blockSize:小区域的面积,如11就是11×11的小块;参数C:每个邻域计算出的值需要再减去c得到阈值;参数dst:最终阈值等于小区域计算出的阈值再减去此值。3Ostu阈值分割3Ostu阈值在前面固定阈值中选取了一个阈值为127进行阈值分割,那如何知道选的这个阈值效果好不好呢?答案是:不断尝试,所以这种方法在很多文献中都被称为经验阈值。Otsu阈值法就提供了一种自动高效的二值化方法。Otsu算法也称最大类间差法,有时也称之为大津算法,由大津于1979年提出,被认为是图像分割中阈值选取的最佳算法。其算法计算简单,不受图像亮度和对比度的影响,因此在数字图像处理上得到了广泛的应用。它是按图像的灰度特性,将图像分成背景和前景两部分。因方差是灰度分布均匀性的一种度量,背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大分割意味着错分概率最小。Otsu阈值分割方法,选择使得类间方差最大的值作为阈值,设图像的归一化直方图为p,亮度阶为k(例如元素值取0~255,则k=256),则设3Ostu阈值Otsu阈值分割方法,选择使得类间方差最大的值作为阈值,设图像的归一化直方图为p,亮度阶为k(例如元素值取0~255,则k=256),则设

,,,期望为,,,则类间方差为4图像轮廓4图像轮廓图像阈值分割主要是针对图片的背景和前景进行分离,而图像轮廓也是图像中非常重要的一个特征信息,通过对图像轮廓的操作,就能获取目标图像的大小、位置、方向等信息。画出图像轮廓的基本思路是:先用阈值分割划分为两类图像,再去寻找轮廓。OpenCV中使用cv2.findContours(image,mode,method)函数来寻找图像轮廓,其中参数image、mode、method分别为输入的图像、轮廓搜索模式(决定了轮廓的提取方式)、轮廓近似方法(决定了如何表达轮廓)。mode轮廓的检索模式有:cv2.RETR_EXTERNAL表示只检测外轮廓;cv2.RETR_LIST表示检测的轮廓不建立等级关系;cv2.RETR_CCOMP表示建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层;cv2.RETR_TREE表示建立一个等级树结构的轮廓。4图像轮廓method轮廓的近似办法有:cv2.CHAIN_APPROX_NONE表示存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1;cv2.CHAIN_APPROX_SIMPLE表示压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息;cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS表示使用teh-Chinlchain近似算法。4图像轮廓cv2.findContours()函数的输出信息contours、hierarchy分别为返回的轮廓和图像的拓扑信息(轮廓层次)。如果想要显示出图像轮廓,还需要使用OpenCV中的cv2.drawContours(image,contours,contourIdx,color,thickness=None,lineType=None,hierarchy=None,maxLevel=None,offset=None)函数来绘制出图像轮廓,其中image、contours、contourIdx、color分别为输入的图像、绘制的轮廓、轮廓填充和轮廓的颜色。ThankYOU!图像统计图像直方图01任务绘制直方图02任务直方图均衡化02任务学习目标学习如何绘制直方图掌握直方图均衡化了解直方图概念1图像直方图1图像直方图图像直方图反映了图像中的灰度分布规律。它描述每个灰度级具有的像元个数,但不包含这些像元在图像中的位置信息。任何一幅特定的图像都有唯一的直方图与之对应,但不同的图像可以有相同的直方图。如果一幅图像有两个不相连的区域组成,并且每个区域的直方图已知,则整幅图像的直方图是两个区域直方图的和。根据直方图的形态可以大致推断图像质量的好坏。由于图像包含有大量的像元,其像元灰度值的分布应符合概率统计分布规律。假定像元的灰度值是随机分布的,那么其直方图应该是正态分布。图像的灰度值是离散变量,因此直方图表示的是离散的概率分布。若以各灰度级的像元数占总像元数的比例值为纵坐标轴做出图像的直方图,将直方图中各条形的最高点连成一条外轮廓线,纵坐标的比例值即为某灰度级出现的概率密度,轮廓线可近似看成图像相应的连续函数的概率分布曲线。

1图像直方图⼀幅数字图像在范围[0,G]内总共有L个灰度级,其直⽅图定义为离散函数:,其中:

是第

级亮度,

是灰度级为

的图像中的像素数,

在实际处理中,图像直方图的x轴区间一般是[0,255],对应的是8位位图的256个灰度级;y轴对应的是具有相应灰度级的像素点的个数。虽然8位的图像都具有256个灰度级(每一个像素可以有256个灰度值),但是属于不同灰度级的像素数量是很不一样的。有时为了便于表示,也会采用归一化直方图。在归一化直方图中,x轴仍然表示灰度级;y轴不再表示灰度级出现的次数,而是灰度级出现的频率。2绘制直方图2绘制直方图计算直方图的方式有两种,一种是使用OpenCV函数,一种是使用Numpy函数。OpenCV中利用cv2.calcHist(images,channels,mask,histSize,ranges[,hist[,accumulate]])来计算直方图,其中images、channels、mask、histSize、ranges分别为原图像(图像格式为uint8或float32)、通道类型、掩模图像、BIN的数目、像素值范围。Numpy中有两个函数都可以计算直方图,分别为np.histogram(a,bins=10,range=None,weights=None,density=False)和np.bincount(x,weights=None,minlength=0)。在np.histogram()方法中参数a是待统计数据的数组,参数bins指定统计的区间个数,参数range是一个长度为2的元组,表示统计范围的最小值和最大值,默认值None,即表示范围由数据的范围决定,参数weights为数组的每个元素指定了权值,np.histogram()会对区间中数组所对应的权值进行求和,参数density为True时,返回每个区间的概率密度;若为False,则返回每个区间中元素的个数。在np.bincount()方法中,参数x为输入数组,参数weights为权重数组,参数minlength为输出阵列的最小BIN数。3直方图均衡化3直方图均衡化直方图均衡化是图像灰度变换中有一个非常有用的方法。图像的直方图是对图像对比度效果上的一种处理,旨在使得图像整体效果均匀,黑与白之间的各个像素级之间的点分布更均匀一点。通过这种方法,亮度可以更好地在直方图上分布。直方图均衡化(histogramequlization)的目标是创建一幅在整个亮度范围内具有相同亮度分布的图像,输入直方图H[p]和亮度范围[p0,pk],直方图均衡化的目标是找到一个单调的像素亮度变换q=T(p),使输出直方图G[q]在整个输出亮度范围[q0,qk]内是均匀的,增强了靠近直方图极大值附近的亮度的对比度,减小了极小值附近的对比度。在对图像做进一步处理之前,直方图均衡化通常是对图像灰度值进行归一化的一个非常好的方法,并且可以增强图像的对比度,原先图像灰色区域的细节变得清晰。3直方图均衡化直方图均衡化的步骤如下:对于k(256)个亮度级、大小为M×N的图像,创建长为k的数组H,初始化为0;形成图像直方图H;形成累计直方图Hc,Hc[p]=Hc[p-1]+H[p],Hc[0]=H[0];设置

;重新扫描图像,根据查找表获得变换结果。在OpenCV中,可以使用cv2.equalizeHist()函数来实现直方图均衡化,返回值即为均衡化后的图像。

ThankYOU!图像滤波图像滤波01任务线性滤波02任务非线性滤波02任务学习目标掌握线性滤波的常用方法掌握非线性滤波的常用方法掌握图像滤波的基本概念1图像滤波1图像滤波图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,同时会造成图像一定程度上的模糊,这也叫做平滑或者低通滤波。无论是均衡化直方图和图像滤波,都一定程度上降低了图像阈值分割的难度,直方图增强图像内的对比度,图像滤波消除图像内的噪声干扰。进行平滑时,邻域内不同位置的像素被赋予不同的权值,对图像进行平滑的同时能够更多的保留图像的总体灰度分布特征。图像滤波是图像预处理中的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。1图像滤波图像滤波的两个目的是提取特征(抽出对象的特征作为图像识别的特征模式)和清除噪声(为适应图像处理的要求,消除图像数字化时所混入的噪声)。滤波处理的两个基本要求为无损信息(不能损坏图像的轮廓及边缘等重要信息)和图像清晰(使图像清晰视觉效果好)。图像平滑的两类目的:模糊+消除噪音。平滑滤波是低频增强的空间域滤波技术。空间域的平滑滤波,一般采用简单平均法进行,就是求邻近像元点的平均亮度值。邻域的大小与平滑的效果直接相关,邻域越大平滑的效果越好,但邻域过大,平滑会使边缘信息损失的越大,从而使输出的图像变得模糊,因此需合理选择邻域的大小。1图像滤波噪声一般可以分为高斯噪声和椒盐噪声,那高斯噪声和椒盐噪声有什么区别呢?高斯噪声是指噪声服从高斯分布,即某个强度的噪声点个数最多,离这个强度越远噪声点个数越少,且这个规律服从高斯分布。高斯噪声是一种加性噪声,即噪声直接加到原图像上,因此可以用线性滤波器滤除。

椒盐噪声类似把椒盐撒在图像上,因此得名,是一种在图像上出现很多白点或黑点的噪声,如电视里的雪花噪声等。椒盐噪声可以认为是一种逻辑噪声,用线性滤波器滤除的结果不好,一般采用中值滤波器滤波可以得到较好的结果。

图像滤波可大致分为两类:线性滤波和非线性滤波。2线性滤波2线性滤波

线性滤波器的原始数据与滤波结果是一种算术运算,即用加减乘除等运算实现,如均值滤波器(模板内像素灰度值的平均值)、高斯滤波器(高斯加权平均值)等。由于线性滤波器是算术运算,有固定的模板,因此滤波器的转移函数是可以确定并且是唯一的(转移函数即模板的傅里叶变换)。1.均值滤波均值滤波是最简单的一种滤波操作,输出图像的每一个像素是核窗口内输入图像对应像素的平均值(所有像素加权系数相等)。OpenCV中利用cv2.blur(img,ksize)来实现均值滤波,其中参数img为原图像,ksize为核的大小。2线性滤波

2.高斯滤波高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到,通常用它来减少图像噪声以及降低细节层次。这种模糊技术生成的图像,其视觉效果就像是经过一个毛玻璃在观察图像,这与镜头焦外成像效果以及普通照明阴影中的效果都明显不同。高斯平滑也用于计算机视觉算法中的预处理阶段,以增强图像在不同比例大小下的图像效果(参见尺度空间表示以及尺度空间实现)。从数学的角度来看,图像的高斯模糊过程就是图像与正态分布做卷积。由于正态分布又叫高斯分布,所以这项技术就称为高斯模糊。图像与圆形方框模糊做卷积将会生成更加精确的焦外成像效果。由于高斯函数的傅立叶变换是另外一个高斯函数,所以高斯模糊对于图像来说就是一个低通滤波器。2线性滤波数值图像处理中,高斯滤波主要可以使用两种方法实现。⼀种是离散化窗口滑窗卷积,另⼀种方法是通过傅里叶变化。最常见的就是滑窗实现,只有当离散化的窗口非常大,使用滑窗计算量非常大的情况下,可能会考虑基于傅里叶变化的实现方法。离散化窗口滑窗卷积时主要利用的是高斯核,高斯核的大小为奇数,因为高斯卷积会在其覆盖区域的中心输出结果。高斯卷积的公

温馨提示

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

评论

0/150

提交评论