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

OpenCV--滤波器(一)

低通滤波器

  • 代码和笔记

代码和笔记

import cv2
import numpy as np"""
滤波器--用于图像处理的重要工具,它们可以根据图像中像素的邻域信息来修改像素值,以实现去噪、模糊、锐化、边缘检测等效果。低通滤波器(Low-pass Filter):
定义:允许低频信号通过,但减弱(或阻止)高频信号的滤波器。
原理:在频率域中,低通滤波器会移除高于某个截止频率(cut-off frequency)的所有频率分量。高通滤波器(High-pass Filter):
定义:允许高频信号通过,但减弱(或阻止)低频信号的滤波器。
原理:在频率域中,高通滤波器会移除低于某个截止频率的所有频率分量。
""""""
低通滤波器 平滑图像,去除图像中的高频噪声和细节
""""""
卷积操作
"""
img = cv2.imread('/img/cat.jpeg')
# 卷积核 必须是奇数,而且是float型  / 25相当于取了一个平均
# 根据卷积核的不同,可以进行锐化、轮廓等操作
kernel = np.ones((5, 5), np.float32) / 25# 卷积操作 -1位深 表示和原图一样
dst = cv2.filter2D(img, -1, kernel)cv2.imshow('img', img)"""
方盒滤波和均值滤波
作用:通过求取像素周围领域像素的平均值来平滑(使图像亮度平缓渐变,减小突变梯度,从而改善图像质量)图像
特点:算法简单,计算速度较快。然而,在去除噪声的同时,也会去除很多细节部分,导致图像变得模糊。
"""
# 方盒滤波
# 只需要设置卷积核大小 normalize=True(卷积核的系数a = 1/(W*H))等价于均值滤波, false时为a = 1
dst1 = cv2.boxFilter(img, -1, (5, 5), normalize=True)# 均值滤波
# 没有位深
dst2 = cv2.blur(img, (5, 5))"""
高斯波滤器
作用:通过高斯函数对像素邻域内的像素值进行加权平均,得到新的像素值。越在中间,比重占的越大。
特点:比均值滤波更平滑,边界保留更加好。能够有效地去除噪声,并保留图像中的细节部分。
"""
# (5, 5)卷积核的大小 X轴的标准差sigmaX, 越大平滑(模糊)越明显
dst3 = cv2.GaussianBlur(img, (5, 5), sigmaX=10)"""
中值滤波
作用:对像素邻域内的像素值进行排序,取中值作为该像素的新值。
特点:在边界保存方面好于均值滤波,特别适用于去除椒盐噪声。但在模板变大时,可能会存在一些边界的模糊。
"""
# 5卷积核的大小,这里要求是整数
dst4 = cv2.medianBlur(img, 5)"""
双边滤波器--美颜
作用:考虑像素的空间邻近度和像素值相似度的一种折中处理,同时达到保边去噪的目的。
特点:是一种非线性滤波,保留较多的高频信息,对低频滤波效果较好,但不能去除脉冲噪声。
"""
# 7 卷积核的大小
# sigmaColor 如果是黑白图片则为灰度距离,若是彩色图片则为颜色,sigmaSpace 空间距离,这两个值要根据实际情况调整
dst5 = cv2.bilateralFilter(img, 7, sigmaColor=20, sigmaSpace=50)cv2.waitKey(0)
cv2.destroyAllWindows()
http://www.lryc.cn/news/380214.html

相关文章:

  • MK的前端精华笔记
  • 低代码平台框架:开源选型、实践与应用深度解析
  • 深度学习500问——Chapter12:网络搭建及训练(3)
  • Android使用DevRing框架搭建数据库实体类以及使用
  • 高效BUG管理:定级、分类和处理流程
  • 服务器数据恢复—raid5热备盘同步失败导致阵列崩溃如何恢复数据?
  • Ubuntu iso 镜像下载 步骤截图说明
  • git拉取gitee项目到本地
  • 力扣42.接雨水
  • 国产数据库与MYSQL兼容性?开发应该怎么选择?
  • Spring框架中Bean的生命周期
  • 从零到一学FFmpeg:avformat_alloc_output_context2 函数详析与实战
  • Lua 绕过元表
  • pip方法总结(极简快速掌握)
  • aigc基础概念(一)
  • USB学习——12、usb初始化和插拔驱动软件流程大致框架描述
  • 【ARMv8/ARMv9 硬件加速系列 2.4 -- ARM NEON Q寄存器与V寄存器的关系】
  • Oracle中递归查询(START WITH……CONNECT BY……)
  • 【云原生|K8S系列】如何创建Kubernetes job和Cronjobs 入门指南
  • 力扣每日一题 6/23 字符串/模拟
  • Google trend搜索关键词
  • Unity C#调用Android,IOS震动功能
  • Ruby 注释
  • C语言入门系列:特殊的main函数和exit函数
  • JAVA复习3
  • Oracle共享内存不释放
  • windows cmd中单引号和双引号的问题
  • Nacos 2.x 系列【15】数据源插件支持达梦、Oracel、PostgreSQL......
  • HJ39判断两个IP是否属于同一子网(中)
  • 渗透测试基础(二) Linux+Win常用命令介绍