当前位置: 首页 > news >正文

OpenCV(二十五):方盒滤波与均值滤波

滤波的基本概念

滤波的核心思想是:
对每个像素,以其邻域(通常为 k×k 窗口)为基础进行计算,使输出像素值更平滑或者更符合某种特定需求。

线性滤波的一般形式为:

在这里插入图片描述

其中 k(i,j) 为滤波核(kernel)。

归一化的意义

  1. 避免数值溢出

卷积核的所有元素之和被缩放到 1,不会把像素变得太大。

  1. 保持图像亮度不改变

例如均值滤波后,亮度不会“变亮”。

  1. 使滤波核有明确的物理意义

例如平均滤波核:

在这里插入图片描述

表示每个像素的权重是 1/9。

  1. 让不同大小的滤波窗口输出可比较

3×3、5×5 核都保持统一尺度,不会因为窗口大而输出更大值。

总结:

归一化 = 除以滤波窗口权重之和,使输出像素保持与输入同样的范围和尺度。

在 OpenCV 中:

  • normalize=True → 均值滤波
  • normalize=False → 求区域和(不缩放)

方盒滤波(Box Filter)原理

方盒滤波属于线性滤波的一种,它的滤波核为常数,因此又称 Box Kernel。其基本思想是:

在邻域窗口内对像素值求和,然后乘以一个归一化因子(可选择是否归一化)。

滤波核一般形式为:

在这里插入图片描述

若需要归一化,则:

在这里插入图片描述

OpenCV 中对应函数为:

cv2.boxFilter(src, ddepth, ksize, anchor=None,normalize=True, borderType=None)

参数说明:

参数含义
src输入图像
ddepth输出类型,-1 最常用
ksize滤波核大小
anchor内核中心,默认即可
normalize是否均值化
borderType边界处理方式

特点

优点:

  1. 速度快
    内部通过积分图(Integral Image)优化,可实现 O(1) 的均值计算。
  2. 能支持不归一化情况下的求和滤波
    normalize=False 时可用于快速求区域和。
  3. 灵活度高
    可指定目标深度 ddepth(如 CV_16S、CV_32F)。

缺点:

  1. 对边缘模糊明显
    因为所有邻域像素权重相同,不能保留边缘。
  2. 容易产生较大程度的模糊
    比高斯滤波更容易导致图像信息丢失。

均值滤波(Mean Filter / Blur)原理

均值滤波是方盒滤波的特例。其核心思想是:

取邻域窗口内所有像素的平均值作为输出像素。

数学形式:

在这里插入图片描述

OpenCV 函数:

cv2.blur(src, ksize)

其内部实际上调用的是带 normalize=True 的 boxFilter,因此结果与归一化的 boxFilter 完全一致

特点

优点:

  1. 简单高效,计算速度快
  2. 实现平滑效果明显
  3. 使用最广泛的基础平滑方法

缺点:

  1. 边缘模糊严重
  2. 去噪能力一般
  3. 无法区分噪声与细节信息(容易破坏边缘)

方盒滤波 vs. 均值滤波 对比

项目方盒滤波(boxFilter)均值滤波(blur)
本质区域像素求和(可归一也可不归一)归一化的 boxFilter
算法可使用积分图优化调用 boxFilter(normalize=True)
是否可控制归一化可以不可以(默认归一化)
速度快(本质同 boxFilter)
灵活性高(支持 ddepth)较低
常见用途ROI 求和、快速滤波普通平滑降噪

示例

import cv2
import numpy as npimg = cv2.imread('test.jpg')# 均值滤波
blur_img = cv2.blur(img, (5, 5))# 方盒滤波(与 blur 等效)
box_img = cv2.boxFilter(img, ddepth=-1, ksize=(5, 5), normalize=True)# 方盒滤波(不归一:仅求和)
box_sum = cv2.boxFilter(img, ddepth=-1, ksize=(5, 5), normalize=False)cv2.imshow('original', img)
cv2.imshow('mean blur', blur_img)
cv2.imshow('box filter', box_img)
cv2.imshow('box sum', box_sum)
cv2.waitKey(0)
cv2.destroyAllWindows()
http://www.dtcms.com/a/614064.html

相关文章:

  • Vscode 配置C++ Mingw调试、编译环境-无需修改系统PATH变量的VS Code配置方法
  • superset_config.py 配置文件的参数详解
  • 搭建本地deepseek大模型
  • 阳泉 网站建设合作网页设计心得体会2000字
  • 网站程序授权码电商网站经营性备案
  • 自动化测试任务或者定义AI AGENT(智能体)任务,通过使用它可以操作浏览器来执行特定操作,如访问网页、单击按钮、提取网页信息等。 ...
  • BFS 广度优先搜索算法
  • Jinja 模板引擎介绍文档
  • 深圳响应样式网站建设费用灵台县门户网
  • Excel工作簿自动销毁功能,使用时间到期后自动删除文件
  • Linux-信号2
  • 河南省两学一做网站官网建设的意义
  • 【Python TensorFlow】BiTCN-BiGRU双向时间序列卷积双向门控循环神经网络时序预测算法(附代码)
  • 公司网站策划书广州工商注册流程
  • C语言是一种编译器吗 | 探讨C语言及其编译原理
  • LeetCode热题100--39. 组合总和
  • 网站开发包含网站维护吗网站建设的技术保证怎么写
  • Java事件处理机制
  • 前端构建工具缓存策略,contenthash与chunkhash
  • 企业门户网站制作网站过期查询
  • 信阳网站优化免费的开源网站
  • Redis(125)Redis在社交网络中的应用有哪些?
  • 吴恩达新课程:Agentic AI(笔记10)
  • 随笔之工作方法的“高与低”
  • 栈+贪心
  • 快飞建站开发区网站建设方案
  • 基于MRI影像的脊髓区域检测与定位:YOLO11与SCcConv模型实战指南
  • 家乡网站怎么做设立网站
  • 快速上手大模型:深度学习5(实践:过、欠拟合)
  • 【ros2】ROS2 Python节点创建指南