opencv —— boxFilter、blur、GaussianBlur、medianBlur、bilateralFilter 线性滤波(方框滤波、均值滤波、高斯滤波)与非线性滤波(中值滤波、双边滤波)
图像滤波,指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像与处理中不可缺少的操作。
邻域算子,指利用给定像素及其周围的像素值,决定此像素的最终输出值的一种算子。线性邻域滤波器就是一种常见的邻域算子,像素的输出值取决于输入像素及其周围像素的加权和,权重是邻域算子相应位置上的值。
线性滤波概念:
原始数据与滤波结果是一种算术运算,即用加减乘除等运算实现,如均值滤波器(模板内像素灰度值的平均值)、高斯滤波器(高斯加权平均值)等。
非线性滤波概念:
原始数据与滤波结果是一种逻辑关系,即用逻辑运算实现,如最大值滤波器(膨胀)、最小值滤波器(腐蚀)、中值滤波器等,是通过比较一定邻域内的灰度值大小来实现的。
线性滤波:boxFilter 方框滤波、blur 均值滤波、GaussianBlur 高斯滤波
boxFilter 方框滤波
void boxFilter (InputArray src, OutputArray dst, int ddepth, Size ksize, Point anchor = Point (-1, -1), bool normalize = true, int borderType = BRODER_DEFAULT);
- src,输入图像,即原图像,填 Mat 类的对象即可。待处理的图像深度应该是 CV_8U、CV_16U、CV_16S、CV_32F、CV_64F。
- dst,目标图像,需要和原图像有一样的尺寸和类型。
- ddepth,输出图像的深度。“-1”代表使用原图深度,即 src.depth() 。
- ksize,内核大小。形式为 Size(x,y)
- anchor,锚点,即被平滑的那个点。默认值为 Point (-1, -1),表示取核的中心。
- normalize,一个标识符,表示内核是否被其区域归一化。默认值为 true。当 normalize = true 时,方框滤波就变成了均值滤波。
boxFilter 所用到的核表示如下:

其中

blur 均值滤波
void blur (InputArray src, OutputArray dst, Size ksize, Point anchor = Point (-1, -1), int borderType = BRODER_DEFAULT);
- 函数变量与 boxFilter 方框滤波几乎一样。
blur 所用到的核表示如下:

GaussianBlur 高斯滤波
void GaussianBlur (InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY = 0, int borderType = BRODER_DEFAULT);
GaussianBlur 两种常见的核表示如下:

高斯模板是通过高斯函数计算出来的,公式如下:
以3×3 的高斯滤波器模板为例,以模板的中心位置为坐标原点进行取样。模板在各个位置的坐标,如下所示(x轴水平向右,y轴竖直向上)。

- sigmaX (σx),表示高斯核函数在X方向的的标准偏差。
- sigmaY (σy),表示高斯核函数在Y方向的的标准偏差。若sigmaY为零,就将它设为sigmaX,如果sigmaX和sigmaY都是0,那么就由ksize.width和ksize.height计算出来。


非线性滤波: medianBlur 中值滤波、bilateralFilter 双边滤波
medianBlur 中值滤波
void medianBlur (InputArray src, OutputArray dst, int ksize);
- ksize,滤波器的大小,必须是大于一的奇数。
- 其他函数变量与 boxFilter 方框滤波几乎一样。
bilateralFilter 双边滤波
双边滤波也是采用加权平均的方法,用周边像素亮度值的加权平均代表某个像素的强度,所用的加权平均基于高斯分布。最重要的是,双边滤波的权重不仅考虑了像素的欧氏距离(如普通的高斯低通滤波,只考虑了位置对中心像素的影响),还考虑了像素范围域中的辐射差异(例如卷积核中像素与中心像素之间相似程度、颜色强度,深度距离等),在计算中心像素的时候同时考虑这两个权重。
void bilateralFilter (InputArray src, OutputArray dst,int d, double sigmaColor, double sigmaSpace, int borderType = BRODER_DEFAULT);
- d,过滤过程中每个像素邻域的直径。如果 d < 0,则会根据第五个参数 sigmaSpace 来计算。
- sigmaColor(σcolor),颜色空间滤波器的 σ 值,这个参数越大,表明该像素邻域内有越宽广的颜色被混到一起。
- sigmaSpace(σspace),坐标空间滤波器的 σ 值,它的值越大,意味着越远的像素会相互影响,从而使更大的区域中足够相似的颜色获取相同颜色。当 d > 0 时,d 指定了邻域大小且与 sigmaSpace 无关,否则,d 正比于 sigmaSpace。
- 其他函数变量与 boxFilter 方框滤波几乎一样。
opencv —— boxFilter、blur、GaussianBlur、medianBlur、bilateralFilter 线性滤波(方框滤波、均值滤波、高斯滤波)与非线性滤波(中值滤波、双边滤波)的更多相关文章
- 【OpenCV】邻域滤波:方框、高斯、中值、双边滤波
原文:http://blog.csdn.net/xiaowei_cqu/article/details/7785365 邻域滤波(卷积) 邻域算子值利用给定像素周围像素的值决定此像素的最终输出.如 ...
- OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice &q ...
- [学习opencv]高斯、中值、均值、双边滤波
http://www.cnblogs.com/tiandsp/archive/2013/04/20/3031862.html [学习opencv]高斯.中值.均值.双边滤波 四种经典滤波算法,在ope ...
- 机器学习进阶-阈值与平滑-图像平滑操作(去噪操作) 1. cv2.blur(均值滤波) 2.cv2.boxfilter(方框滤波) 3. cv2.Guassiannblur(进行高斯滤波) 4. cv2.medianBlur(进行中值滤波)
1.cv2.blur(img, (3, 3)) 进行均值滤波 参数说明:img表示输入的图片, (3, 3) 表示进行均值滤波的方框大小 2. cv2.boxfilter(img, -1, (3, ...
- OpenCv高斯,中值,均值,双边滤波
#include "cv.h" #include "highgui.h" #include <iostream> using namespace s ...
- OpenCV笔记(1)(图片读取与现实、色彩空间、基础运算、均值方差、逻辑运算、泛洪填充、均值中值及自定义平滑)
一.图片读取和显示 import cv2 as cv # 图片读取cv.imread(img_path) car_img = cv.imread("car1.png") # 图片显 ...
- opencv.js双边滤波 磨皮处理
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http ...
- 双边滤波算法的简易实现bilateralFilter
没怎么看过双边滤波的具体思路,动手写一写,看看能不能突破一下. 最后,感觉算法还是要分开 水平 与 垂直 方向进行分别处理,才能把速度提上去. 没耐性写下去了,发上来,给大伙做个参考好了. 先上几张效 ...
- cv2.bilateralFilter 双边滤波
双边滤波bilateralFilter 双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单.非迭代.局部处 ...
随机推荐
- LeetCode 18: 4 Sum 寻找4数和
链接 4Sum 难度 Medium 描述 Given an array nums of n integers and an integer target, are there elements a , ...
- Windows玩转Kubernetes系列3-Centos安装K8S
以往文章参考: Windows玩转Kubernetes系列1-VirtualBox安装Centos Windows玩转Kubernetes系列2-Centos安装Docker 安装K8S yum in ...
- PAT乙级(Basic Level)真题,福尔摩斯的约会
题目描述 大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”.大侦探很快就明 ...
- cd命令和roscd命令的区别,并解决环境变量问题
cd命令和roscd命令都是切换到指定目录的命令.不同的是,cd是Linux系统的命令,在使用时必须指定目标目录的完整路径:而roscd是ros系统中的命令,它可以直接切换到指定目录(ros系统中的软 ...
- QT笔记:数据库总结
http://blog.csdn.net/reborntercel/article/details/6991147 #include <QtSql> QT += sql QSqlDatab ...
- Apache httpd.conf配置文件 1(Global Environment )
Apache 版本: Server version: Apache/2.2.15 总计 1000行左右 英文前带井号的是注释,不起作用. 但很多注释去掉前方的 # 即可生效. # # This i ...
- [Redis-Python]发布订阅通过Redis异步发送邮件
接收订阅 #!/usr/bin/env pyhton # coding:utf-8 # @Time : 2020-02-16 21:36 # @Author : LeoShi # @Site : # ...
- 《自拍教程24》在Windows上配置环境变量
我们说的环境变量,一般是指的是Path环境变量. 第一步:点击"我的电脑",右键,"属性" 第二步:点击"高级系统设置",弹出的窗口选&qu ...
- css权重导致的样式不生效问题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 理解设备像素、设备独立像素、css像素、viewport
设备像素也叫物理像素. 设备像素指的是显示器上的真实像素,每个像素的大小是屏幕固有的属性,屏幕出厂以后就不会改变了. 设备分辨率描述的就是这个显示器的宽和高分别是多少个设备像素. 设备像素和设备分辨率 ...