版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机视觉基础知识图像模糊/平滑/滤波目录CONTENTS均值滤波中值滤波高斯滤波双边滤波方框滤波非局部平均去噪01均值滤波均值滤波效果均值滤波是典型的线性滤波算法每个像素的值是由该像素周围的像素值的平均值决定通常可以取周围的8个像素(3*3),或者周围的15个像素(4*4)周围的像素使用的越多,经过滤波之后的图像会越模糊。图为3*3,5*5,7*7时候的滤波效果。均值滤波滤波函数blur(src,ksize,dst=None,anchor=None,borderType=None),各参数含义如下:src,输入图像,它可以有任意数量的独立处理的通道,但是深度应该是CV_8U、CV_16U、CV_16S、CV_32F或CV_64F;dst,输出图像,与src的大小和类型相同;ksize,模糊内核大小,例如3*3或者5*5。anchor,锚点,默认值点(-1,-1),表示锚点位于内核中心。borderType,边界的填充模式,经过模糊运算之后的图像比原始图像要小,为了得到与原始图像相同大小的输出图像,需要填充边界元素。均值滤波边界的填充模式cv.BORDER_CONSTANT,值为0,表示用常量填充,例如iiiiii|abcdefgh|iiiiiii,需要指定’i’,这就是边沿像素用i填充。cv.BORDER_REPLICATE,值为1,表示重复边界,例如aaaaaa|abcdefgh|hhhhhhh,边界元素的值使用相邻元素的值填充。cv.BORDER_REFLECT,
值为2,反射复制边界像素,例如fedcba|abcdefgh|hgfedcb,边界元素的值使用相邻的元素镜像的值填充。cv.BORDER_WRAP,值为3,使用另一边的像素来补偿填充,例如cdefgh|abcdefgh|abcdefg,使用另外一面的值来填充。均值滤波边界的填充模式cv.BORDER_REFLECT_101,值为4,以边界为对称轴反射复制像素,例如gfedcb|abcdefgh|gfedcba,边界两边的值是对称的。cv.BORDER_TRANSPARENT,值为5,填充之后边界两边的值是连续的,例如uvwxyz|abcdefgh|ijklmno。cv.BORDER_REFLECT101,值为4,与BORDER_REFLECT_101相同,cv.BORDER_DEFAULT,值为4,与BORDER_REFLECT_101相同,为默认填充方式cv.BORDER_ISOLATED,值为16,不看ROI之外部分。均值滤波把两张图合在一起为了对比两张图片,可以把两张图片显示在相同的窗口中如果两张图片的大小和深度相同,可以使用np.hstack把两张图片合在一起函数的参数是要合并的多张图片imgs=np.hstack([img,img2])img和img2有相同的高度。均值滤波#引入库importcv2importnumpyasnp#读取图像img=cv2.imread("images\lena.jpg")img2=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#滤波img3=cv2.blur(img2,(3,3))img4=cv2.blur(img2,(5,5))img5=cv2.blur(img2,(7,7))#合并图像blurred=np.hstack([img2,img3,img4,img5])#显示图像cv2.imshow("blurredimage",blurred)#关闭窗口cv2.waitKey(0)cv2.destroyAllWindows()02中值滤波中值滤波效果中值滤波法是一种非线性平滑技术每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。中值滤波滤波函数medianBlur(src,ksize[,dst]),主要参数如下:src是原始图像;ksize参数表示滤波窗口尺寸,必须是奇数并且大于1。例如ksize是5,中值滤波器就会使用5×5的范围来计算,即对像素的中心值及其5×5邻域组成了一个数值集,对其进行处理计算,找出中位数,把该中位数作为计算结果。dst是输出图像。中值滤波#引入库importcv2importnumpyasnp#读取图像img=cv2.imread("images\lena.jpg")img2=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#滤波img3=cv2.medianBlur(img2,3)img4=cv2.medianBlur(img2,5)img5=cv2.medianBlur(img2,7)#合并图像blurred=np.hstack([img2,img3,img4,img5])#显示图像cv2.imshow("blurredimage",blurred)#关闭窗口cv2.waitKey(0)cv2.destroyAllWindows()03高斯滤波高斯滤波效果高斯模糊实质上就是一种均值模糊高斯模糊是按照加权平均的,距离越近的点权重越大,距离越远的点权重越小。每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波滤波函数GaussianBlur(src,ksize,sigmaX[,dst[,sigmaY[,borderType]]])src是原始图像,原始图像可以具有任意数量的通道,这些通道可以独立处理,但深度应为CV_8U,CV_16U,CV_16S,CV_32F或CV_64F;ksize表示高斯内核大小,ksize.width和ksize.height可以不同,但它们都必须为正数和奇数,也可以为零,然后根据sigma计算得出;sigmaX表示X方向上的高斯核标准偏差;sigmaY表示Y方向上的高斯核标准差,如果sigmaY为零,则将其值等于sigmaX,如果两个sigma都为零,则分别从ksize.width和ksize.height计算得出,为了完全控制滤波结果,建议指定所有ksize,sigmaX和sigmaY;borderType表示编辑填充类型,与其它滤波函数中的作用相同;高斯滤波#引入库importcv2importnumpyasnp#读取图像img=cv2.imread("images\lena.jpg")img2=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#滤波img2=cv2.GaussianBlur(img,(3,3),0)#合并图像blurred=np.hstack([img2,img3,img4,img5])#显示图像cv2.imshow("blurredimage",blurred)#关闭窗口cv2.waitKey(0)cv2.destroyAllWindows()04双边滤波双边滤波效果可以在保证边界清晰的情况下有效的去掉噪声。它的构造比较复杂,既考虑了图像的空间关系,也考虑图像的灰度关系。双边滤波同时使用了空间高斯权重和灰度相似性高斯权重,确保了边界不会被模糊掉。该滤波器的速度比较慢。双边滤波滤波函数cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace[,dst[,borderType]])src表示要进行滤波的图像;d是领域的直径;sigmaColor表示灰度相似性权重,参数越大,则在邻域中的像素值相差较大的像素点也会用来平均;sigmaSpace表示空间高斯权重,参数越大,则虽然离得较远,可是,只要值相近就会互相影响;borderType表示填充模型,与其它滤波函数中borderType的用法相同;dst表示滤波之后的结果。双边滤波importcv2importnumpyasnpimportmatplotlib.pyplotasplt#读取图像img=cv2.imread('lena.jpg',0)#添加随机噪声foriinrange(2000):temp_x=np.random.randint(0,img.shape[0])temp_y=np.random.randint(0,img.shape[1])img[temp_x][temp_y]=255#调用bilateralFilterblur=cv2.bilateralFilter(img,9,70,120)#画图plt.subplot(1,2,1),plt.imshow(img,'gray')plt.subplot(1,2,2),plt.imshow(blur,'gray')#显示图像plt.show()05方框滤波方框滤波概述方框滤波是一种非常有用的线性滤波最简单的均值滤波就是盒子滤波归一化的情况。一切需要求某个邻域内像素之和的场合,都有可以使用方框滤波,比如:均值滤波、引导滤波、计算Haar特征等等。方框滤波的优势是快,它可以使复杂度为O(MN)的求和,求方差等运算降低到O(1)或近似于O(1)的复杂度,与邻域尺寸无关,类似积分图。左侧是归一化后的结果,右侧是没有归一化的结果,大部分区域显示白色方框滤波滤波函数dst=cv.boxFilter(src,ddepth,ksize[,dst[,anchor[,normalize[,borderType]]]])src,表示输入图像;ddepth,表示输出图像的数据类型(深度);ksize,表示卷积核大小;dst,表示输出图像;anchor,表示内核的基准点(锚点);normalize,表示是否将卷积核按照其他区域进行归一化的标志,默认值为True;borderType,表示像素边界填充的方式,与其它滤波算法中用法相同。方框滤波#导入库importcv2importmatplotlib.pyplotasplt
#读取图像img=cv2.imread('images\lena.jpg')
#进行方框滤波box1=cv2.boxFilter(img,-1,(3,3),normalize=True)#当normalize=False表示对加和后的9个点,不进行求平均的操作,如果加和后的值255,使用255表示box2=cv2.boxFilter(img,-1,(3,3),normalize=False)
#画图plt.subplot(1,2,1)plt.imshow(box1,'gray')plt.subplot(1,2,2)plt.imshow(box2,'gray')
#显示图像plt.show()06非局部平均去噪滤波非局部平均去噪滤波非局部平均去噪非局部平均去噪,全称是:Non-LocalMeans使用自然图像中普遍存在的冗余信息来去噪声。它利用了整幅图像来进行去噪,以图像块为单位在图像中寻找相似区域,再对这些区域求平均,能够比较好地去掉图像中存在的高斯噪声。算法会消耗更多的时间,但是结果很好。对于彩色图像,要先转换到CIELAB颜色空间,然后对L和AB成分分别去噪。非局部平均去噪滤波滤波函数:4个cv2.fastNlMeansDenoising(),使用单个灰度图像;cv2.fastNlMeansDenoisingColored(),使用彩色图像;cv2.fastNlMeansDenoisingMulti(),用于在短时间内捕获的图像序列,针对灰度图像;cv2.fastNlMeansDenoisingColoredMulti(),用于图像序列,针对彩色图像。非局部平均去噪滤波处理彩色图像fastNlMeansDenoisingColored(src,dst,h=3,hColor=3,templateWindowSize=7,searchWindowSize=21)h,表示过滤器的强度,h值高可以很好的去除噪声,但也会把图像的细节抹去,默认值为3;hColor,与h相同,但是用于彩色图像,默认值为3templateWindowSize,模板窗口的大小,是奇数,默认值为7;searchWindowSize,搜索窗口的大小,是奇数,默认值是21。非局部平均去噪滤波#导入库importcv2importnumpyasnp
#读取图像im
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论