OpenCV | 您所在的位置:网站首页 › 图像滤波计算方法 › OpenCV |
文章目录
一、图像处理——滤波1.1 均值模糊(低通滤波)、中值模糊(中值滤波)1.2 边缘保留滤波EPF
二、图像处理——噪点与滤波2.1 椒盐噪点(使用中值滤波去除)2.1 高斯滤波/模糊(去噪效果好)
三、高通过滤/滤波(边缘检测/高反差保留)四、其它滤波(Emboss,Motion,different,Sobel,Prewitt,LoG)
一、图像处理——滤波
过滤 :是信号和图像处理中基本的任务。其目的是根据应用环境的不同,选择性的提取图像中某些认为是重要的信息。过滤可以移除图像中的噪音、提取感兴趣的可视特征、允许图像重采样等等。 频域分析 :将图像分成从低频到高频的不同部分。低频对应图像强度变化小的区域,而高频是图像强度变化非常大的区域。 在频率分析领域的框架中,滤波器是一个用来增强图像中某个波段或频率并阻塞(或降低)其他频率波段的操作。低通滤波器是消除图像中高频部分,但保留低频部分。高通滤波器消除低频部分。 滤波(高通、低通、带通、带阻) 、模糊、去噪、平滑等。进行边缘保留滤波通常用到两个方法:高斯双边滤波和均值迁移滤波。 双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。 双边滤波器顾名思义比高斯滤波多了一个高斯方差 σ - d \sigma-d σ-d,它是基于空间分布的高斯滤波函数,所以在边缘附近,离的较远的像素不会太多影响到边缘上的像素值,这样就保证了边缘附近像素值的保存。但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净的滤掉,只能够对于低频信息进行较好的滤波双边滤波函数原型: """ bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]]) -> dst - src: 输入图像。 - d: 在过滤期间使用的每个像素邻域的直径。如果输入d非0,则sigmaSpace由d计算得出,如果sigmaColor没输入,则sigmaColor由sigmaSpace计算得出。 - sigmaColor: 色彩空间的标准方差,一般尽可能大。 较大的参数值意味着像素邻域内较远的颜色会混合在一起, 从而产生更大面积的半相等颜色。 - sigmaSpace: 坐标空间的标准方差(像素单位),一般尽可能小。 参数值越大意味着只要它们的颜色足够接近,越远的像素都会相互影响。 当d > 0时,它指定邻域大小而不考虑sigmaSpace。 否则,d与sigmaSpace成正比。 """ import cv2 def bi_demo(image): #双边滤波 dst = cv2.bilateralFilter(image, 0, 100, 5) cv2.imshow("bi_demo", dst) def shift_demo(image): #均值迁移 dst = cv2.pyrMeanShiftFiltering(image, 10, 50) cv2.imshow("shift_demo", dst) src = cv2.imread('./100.png') img = cv2.resize(src,None,fx=0.8,fy=0.8, interpolation=cv2.INTER_CUBIC) cv2.imshow('input_image', img) bi_demo(img) shift_demo(img) cv2.waitKey(0) cv2.destroyAllWindows()高斯模糊实质上就是一种均值模糊,只是高斯模糊是按照加权平均的,距离越近的点权重越大,距离越远的点权重越小。 通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。 我们可以从其函数表达式可知: |
CopyRight 2018-2019 实验室设备网 版权所有 |