【OpenCV】(七)—— 滤波

OpenCV 中的滤波操作用于去除图像噪声,实现图像的平滑处理,改善图像质量或提取有用的信息。使用一张有噪声的图像作为示例

均值滤波

均值滤波是一种简单的线性滤波技术,通过将像素点周围邻域内的所有像素值取平均来达到平滑图像的效果,可以用来减少噪声。opencv中均值滤波使用方法blur,其函数原型如下:

复制代码
cv2.blur(src, ksize[, dst[, anchor[, borderType]]]) -> dst

参数说明

  • src: 输入图像。
  • ksize: 滤波器窗口的大小,格式为 (宽度, 高度)。例如,(5, 5) 表示一个 5x5 的滤波器窗口。
  • dst: 输出图像。如果未指定,则默认与输入图像具有相同的类型和大小。
  • anchor: 锚点位置,默认为 (-1, -1),表示锚点位于滤波器窗口的中心。
  • borderType: 边界填充方式,默认为cv2.BORDER_DEFAULT。常见的边界填充方式有:
    • cv2.BORDER_CONSTANT: 用常数值填充边界。
    • cv2.BORDER_REFLECT: 用镜像反射的方式填充边界。
    • cv2.BORDER_REPLICATE: 用边界像素值重复填充边界。
    • cv2.BORDER_WRAP: 用环绕方式填充边界。
py 复制代码
# 均值滤波 类似于平均卷积
blur = cv2.blur(img,(3,3))
cv_show('blur',blur)

运行结果:

高斯滤波

高斯滤波也是一种平滑滤波器,但它使用的是高斯权重矩阵,这样可以使滤波效果更加自然,对边缘信息的保留也更好。相当于选取一个像素点,其周围像素距离越近权重越高。高斯滤波在opencv中使用方法gaussian实现,其函数原型如下:

复制代码
cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]]) -> dst

参数说明

  • src: 输入图像。
  • ksize: 滤波器窗口的大小,格式为 (宽度, 高度)。例如,(5, 5) 表示一个 5x5 的滤波器窗口。
  • sigmaX: 高斯核在 X 方向上的标准差。如果设置为 0,OpenCV 会根据 ksize 自动计算。
  • dst: 输出图像。如果未指定,则默认与输入图像具有相同的类型和大小。
  • sigmaY: 高斯核在 Y 方向上的标准差。如果未指定,则默认等于 sigmaX
  • borderType: 边界填充方式,默认为cv2.BORDER_DEFAULT。常见的边界填充方式有:
    • cv2.BORDER_CONSTANT: 用常数值填充边界。
    • cv2.BORDER_REFLECT: 用镜像反射的方式填充边界。
    • cv2.BORDER_REPLICATE: 用边界像素值重复填充边界。
    • cv2.BORDER_WRAP: 用环绕方式填充边界。
py 复制代码
#高斯滤波,相当于在均值滤波的基础上添加了权重,离中心点越近,权重越高,1 为标准差
gaussian = cv2.GaussianBlur(img,(5,5),1)
cv_show('gaussian',gaussian)

中值滤波

中值滤波是非线性的滤波方法,主要用于去除椒盐噪声。它的工作原理是用邻域内所有像素值的中位数替换中心像素值。中值滤波在opencv中使用medianBlur方法,其函数原型如下:

复制代码
cv2.medianBlur(src, ksize[, dst]) -> dst

参数说明

  • src: 输入图像。
  • ksize: 滤波器窗口的大小,必须是大于 1 的奇数。例如,5 表示一个 5x5 的滤波器窗口。
  • dst: 输出图像。如果未指定,则默认与输入图像具有相同的类型和大小。
py 复制代码
# 中值滤波,围绕中心点的数据中从大到小排序,取中值
median = cv2.medianBlur(img,5)
cv_show('median',median)

上述三种方法各有不同,让我们将这些结果放到一起进行对比观察一下,因为opencv所有的图像信息都是numpy数组,在此处使用numpy进行拼接展示

py 复制代码
# 对比展示所有图片
res = np.hstack((blur,gaussian,median))
cv_show("res",res)
相关推荐
放羊郎4 分钟前
图像颜色空间对比(Opencv)
opencv·计算机视觉·rgb·灰度图像·bgr
羊小猪~~12 分钟前
深度学习基础--CNN经典网络之InceptionV1研究与复现(pytorch)
网络·人工智能·pytorch·深度学习·神经网络·机器学习·cnn
硅谷秋水33 分钟前
AutoEval:现实世界中通才机器人操作策略的自主评估
人工智能·机器学习·计算机视觉·机器人
weixin_4578858238 分钟前
DeepSeek的神经元革命:穿透搜索引擎算法的下一代内容基建
人工智能·算法·搜索引擎·deepseek·虎跃办公
大模型真好玩40 分钟前
不写一行代码! VsCode+Cline+高德地图MCP Server 帮你搞定和女友的出行规划(附原理解析)
人工智能·python·mcp
GetcharZp1 小时前
SAM2全面解析:Meta新一代“分割一切”大模型,图像视频一键精准分割!
计算机视觉·llm
zskj_zhyl1 小时前
数据驱动的温暖守护:智慧康养平台如何实现 “千人千面” 的精准照护?
人工智能·科技·生活
视觉语言导航1 小时前
ICRA-2025 | 视觉预测助力机器人自主导航!NavigateDiff:视觉引导的零样本导航助理
人工智能·机器人·具身智能
Seon塞翁1 小时前
2025年Q1 AI 学习应用总结
人工智能·学习
jndingxin1 小时前
OpenCV 图形API(30)图像滤波-----腐蚀操作函数erode()
人工智能·opencv