OpenCv之滤波器

目录

一、卷积

 二、方盒滤波与均值滤波

三、高斯滤波

四、中值滤波

五、双边滤波


一、卷积

图像卷积就是卷积核在图像上按行华东遍历像素时不断的相乘求和的过程

 相关知识点:

  • 步长:就是卷积核在图像上移动的步幅.(为充分扫描图片,步长一般为1)
  • padding:指在图片周围填充的0的圈数
  • 卷积核大小:卷积核一般为奇数,比如3*3、5*5、7*7

OpenCv中卷积函数:

filter2D(src, ddepth, kernell dstl anchorl deltal borderType]]]])

  • ddepth是卷积之后图片的位深,即卷积之后图片的数据类型,一般设为-1,表示和原图类型一致。kernel是卷积核大小,用元组或者ndarray表示要求数据类型必须是float型
  • anchor锚点即卷积核的中心点是可选参数默认是(-1,-1)
  • delta 可选参数表示卷积之后额外加的一个值相当于线性方程中的偏差,默认是0
  • borderType边界类型一般不设

卷积案例代码如下:

import cv2
import numpy as npimg = cv2.imread('6.jpg')# 相当于每个点都被平均了一下,所以图像变模糊了
# kernel = np.ones((5,5),np.float32) / 25# 尝试其它卷积核,突出轮廓
kernel = np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]])# 浮雕效果
kernel = np.array([[-2,1,0],[-1,1,1],[0,1,2]])# 锐化
kernel = np.array([[0,-1,0],[-1,5,-1],[0,-1,0]])# ddepth = -1表示图片的数据类型不变
dst = cv2.filter2D(img,-1,kernel)# 图片展示
cv2.imshow('img',np.hstack((img,dst)))
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果如下:

 二、方盒滤波与均值滤波

方盒滤波案例代码如下:

import cv2
import numpy as np# 读取图片
img = cv2.imread('6.jpg')# 无需手动创建卷积核,只需要告诉方盒滤波,卷积核的大小是多少
dst = cv2.boxFilter(img,-1,(5,5),normalize=True)cv2.imshow('img',np.hstack((img,dst)))cv2.waitKey(0)
cv2.destroyAllWindows()

均值滤波案例代码如下:

import cv2
import numpy as np# 读取图片
img = cv2.imread('6.jpg')
# 均值滤波无位深这个参数
dst = cv2.blur(img,(5,5))cv2.waitKey(0)
cv2.destroyAllWindows()

三、高斯滤波

首先明白什么是高斯函数:

高斯函数是在符合高斯分布(也叫正态分布)的数据的概率密度函数 

 高斯函数的一般形式:

 参照函数:

案例代码如下:

import cv2
import numpy as npimg = cv2.imread('6.jpg')# 高斯滤波
new_img = cv2.GaussianBlur(img,(5,5),sigmaX=10)cv2.imshow('new_img',np.hstack((img,new_img)))
cv2.waitKey(0)
cv2.destroyAllWindows()

四、中值滤波

中值滤波的原理:假设有一个数组[1,5,5,6,7,8,9],取中间值(即中位数)作为卷积后的结果即可.中值滤波对胡椒噪音(也叫椒盐噪音)效果明显

案例代码如下:

import cv2
import numpy as npimg = cv2.imread('6.jpg')# 注意这里的ksize就是一个整数
# 中值滤波
dst = cv2.medianBlur(img,5)cv2.imshow('img',np.hstack((img,dst)))cv2.waitKey(0)
cv2.destroyAllWindows()

五、双边滤波

双边滤波原理:双边滤波对于图像的边缘信息能过更好的保存。其原理为一个与空间举例相关的高斯函数与一个灰度距离相关的高斯函数相乘。

 双边滤波可以保留边缘,同时可以对边缘内的区域进行平滑处理

参照函数:

 

案例代码如下:

 

import cv2
import numpy as npimg = cv2.imread('6.jpg')# sigmaColor为灰度距离
# sigmaSpace为空间距离
dst = cv2.bilateralFilter(img,7,sigmaColor=20,sigmaSpace=50)cv2.imshow('img',np.hstack((img,dst)))cv2.waitKey(0)
cv2.destroyAllWindows()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27933.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言进阶(九)】常见内存错误以及柔性数组

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多C语言知识   🔝🔝 常见内存错误 1. 前言2. 对NULL指针…

【C++】list的使用

今天我们来进入到C另一个容器list的学习 目录 一、list的介绍 二、list的使用 2.1 构造函数 2.2 迭代器函数接口 2.3 容量函数接口 2.4 元素访问函数接口 2.5 常用修改函数接口 2.6 常用操作函数接口 一、list的介绍 文档介绍:list - C Reference (cpluspl…

html+JavaScript实现一个好看的颜色码查询器,支持查询、转换、颜色选择器和颜色码对照表

前言 相信大家平时工作的时候应该会经常用到颜色码吧,比如说想找个好看的颜色,或者有个颜色码但是不知道这个码是什么颜色的,这个时候我们就可以用颜色码对照表或者颜色码查询来查看了。 当然也可以用截图软件或者取色器或者PS来查看&#…

安卓设备监听全部输入信号

前言: 最近团队收到一个产品需求,需要监听安卓设备上用户是否有输入行为,以免定制推荐的时候打搅到用户。这里指的是设备上所有应用的输入行为,而不是单指某一个应用。 这个需求还是蛮有挑战性的,需要涉及到很多FW层…

vue新增删除内容排序问题解决处理

本次答题选项的删除添加是个人最初比较头疼的地方。比如ABCD四个选项,删除c选项后,点击【新增答题类型】选项按钮,则默认创建是E选项。再或者就是ABCD四个选项位置删除任意一个后,顺序被打乱等,最后解决了,…

【状态估计】基于UKF法、AUKF法的电力系统三相状态估计研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【项目 进程2】2.3 进程创建 2.4父子进程虚拟地址空间 2.5GDB多进程调试

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 2.3 进程创建2.4 父子进程虚拟地址空间父子进程之间的关系: 2.5 GDB多进程调试 2.3 进程创建 系统允许一个进程创建新进程,新进程即为子进程…

Vue2 ➔ Vue3 都做了哪些改变?

不是吧,兄弟,Vue3 都出来多久了,你还对这个感兴趣,说!是不是没好好卷?😏 俺也一样 😂,Vue3 出来之后只是简单了解了一下,然后还是转头一直在写 Vue2。当然&a…

基于weka手工实现多层感知机(BPNet)

一、BP网络 1.1 单层感知机 单层感知机,就是只有一层神经元,它的模型结构如下1: 对于权重 w w w的更新,我们采用如下公式: w i w i Δ w i Δ w i η ( y − y ^ ) x i (1) w_iw_i\Delta w_i \\ \Delta w_i\eta(y…

Maven —— 项目管理工具

前言 在这篇文章中,荔枝会介绍如何在项目工程中借助Maven的力量来开发,主要涉及Maven的下载安装、环境变量的配置、IDEA中的Maven的路径配置和信息修改以及通过Maven来快速构建项目。希望能对需要配置的小伙伴们有帮助哈哈哈哈~~~ 文章目录 前言 一、初…

设计模式-组合模式在Java中的使用示例-杀毒软件针对文件和文件夹进行杀毒

场景 组合模式 组合模式(Composite Pattern): 组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。 组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性, 组合模式…

排序算法之冒泡排序详解-python版

冒泡排序:通过比较2个相邻元素之间的大小,交换元素顺序,从而达到排序目的。 从百度百科摘抄下来的冒泡排序原理如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作&#xf…