【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)
相关推荐
weixin_468466854 小时前
从“看懂”到“做到”:视觉-语言-动作模型如何让机器人真正执行指令
人工智能·ai·机器人·大语言模型·前沿科技
朋友圈自动点赞工具4 小时前
科学AI插件化:从蛋白质结构到古籍修复
人工智能
龙粤GEO4 小时前
实体Entity在GEO中代表什么含义
人工智能
拜小白5 小时前
【论文解读】《DeepPanoContext:用全局场景关系图 + 可微关系优做全景 3D 场景理解
深度学习·计算机视觉·全景图
剑雨巍巍6 小时前
AI Agent面试之基础概念
人工智能
微帧Visionular6 小时前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
武子康6 小时前
MultiNet6 空闲崩溃:`EXCVADDR=0x8` 后又出现 `CORRUPT HEAP`
人工智能·后端·agent
云智慧AIOps社区6 小时前
智能巡检机器人应用场景解析:机房巡检、园区安防、管廊巡视与展厅导览
人工智能·机器人·具身智能·智能巡检机器人·企业级智能巡检机器人·机房巡检机器人·导览机器人
EnCi Zheng6 小时前
Agent 如何进行工具调用:从一次 Function Calling 到生产级工具编排的完整链路
大数据·人工智能·agent·ai编程·工具调用
赛博守夜人6 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全