计算机视觉基础 2. 滤波器

news2024/11/15 20:07:53

1. 简介

模糊滤波器是低通滤波器。它们从图像中去除高空间频率内容,只留下低频空间分量。结果是图像失去了细节,看起来很模糊。图像模糊在计算机图形学和计算机视觉中有许多应用。它可用于降低噪声(如图17.1所示),揭示不同尺度下的图像结构,或用于对图像进行上采样和下采样。

在这里插入图片描述
Blur是通过计算输入像素值的小邻域上的局部平均值来实现的。这可以通过卷积来实现。然而,有非线性方法可以去除图像细节,如各向异性扩散[385]和双边滤波[376]。当我们想在去除噪声的同时保留一些图像细节(如轮廓)时,这些非线性模糊技术非常有用。
在本章中,我们将重点介绍用于图像模糊的线性滤波器。我们将描述三种流行的模糊滤波器系列,讨论其特性和局限性。

2. Box Filter

让我们从一个非常简单的低通滤波器开始,箱式滤波器。在第16.6.3节中,我们介绍了box函数。盒滤波器使用盒函数作为卷积核。盒子卷积核可以写成:
在这里插入图片描述

N=M=1的Box Filter为:
在这里插入图片描述

使用Box Filter 输入图像 ℓ i n ℓ_{in} in,结果如下:
在这里插入图片描述
也就是说,每个位置(n,m)的输出值是该位置周围矩形内输入像素的总和。
从视觉上看,使用框过滤器过滤图像会导致图片模糊。图17.2显示了一些框式滤波器和相应的输出图像(在将框式滤波器系数归一化为1后)。图17.2(a)显示了与平方盒核卷积的图像(即N =M).
图17.2(b)和17.2(c)显示了仅在一个方向上模糊的结果。模糊在现实生活中经常发生。当我们看远处的东西时,或者看图片中的一些细节时,或者当我们摘下眼镜(或戴一些不是我们的眼镜)时,就会发生这种情况。
在这里插入图片描述

2.1 特性

Box Filter是一种低通滤波器。也就是说,它衰减了输入图像的高空间频率内容。
正如我们在第16.6.3节中提到的,二维(2D)盒滤波器是可分离的,因为它可以写成两个1D核的卷积: b o x N , M [ n , M ] = b o x N , 0 ⋅ b o x 0 , M box_{N,M}[n,M]=box_{N,0} · box_{0,M} boxN,M[nM]=boxN,0box0,M。当盒子很大时,可以使用积分图像有效地实现。
低通滤波器的一个重要特性是直流增益,即它对恒定值输入(即最低可能的输入频率)的增益。如果输入信号是一个常数,即 ℓ [ n , m ] = a ℓ[n,m]=a [nm]=a,其中a是实数,则用box filter h N , m h_{N,m} hN,m卷积图像的结果也是一个常数:
在这里插入图片描述
一般来说,任意滤波器 h [ n , m ] h[n, m] h[n,m]的直流增益(DC gain)是其核值的总和,
在这里插入图片描述
在盒式滤波器(box filter)的例子中,当 N = 1 N=1 N=1时,直流增益为3。
在频率域中,滤波器的直流增益指的是其在频率为0时的增益。这个增益由 H [ 0 , 0 ] H[0, 0] H[0,0]表示,其中H是对滤波器的核h应用离散傅里叶变换(DFT)的结果。这可以通过检查DFT的定义并将空间频率设置为零来轻松证明。可以在图17.3中验证, ∣ B o x 1 [ 0 ] ∣ |Box1[0]| Box1[0]的值是3。滤波器的直流增益会改变输入信号的均值。
在这里插入图片描述
在设计模糊核(低通滤波器)时,我们通常希望直流增益为1。原因是,如果我们有一张灰度级在0到256之间且平均值约为128的图像,我们希望输出图像保持相同的均值。因此,在大多数应用中,我们将对核值进行归一化,使它们的和为1。对于盒式滤波器,这意味着将核值除以 ( 2 N + 1 ) ( 2 M + 1 ) (2N + 1)(2M + 1) (2N+1)(2M+1)

2.2 局限性

盒式滤波器实现和理解起来都很简单,但它有一些局限性:
• 盒式滤波器不是完美的模糊滤波器。模糊滤波器应该衰减高频空间频率,并且对于更高的空间频率应该有更强的衰减。然而,如果你考虑最高的空间频率,它将是一个依次取值为1和-1的振荡信号:[…, 1, -1, 1, -1, 1, -1, …],当用盒式滤波器box1进行滤波时,结果仍然是相同的振荡信号!然而,如果你过滤一个较低频率的波,如[…, 0.5, 0.5, -1, 0.5, 0.5, -1, …],那么结果是[…, 0, 0, 0, 0, …]。因此,衰减不是随空间频率单调变化的,如图17.3所示。这不是模糊滤波器所期望的行为,它可能会导致伪影出现。这可以通过使用偶数大小的盒式滤波器[1, 1]来解决。然而,偶数盒式滤波器不是以原点为中心的,输出图像将有半个像素的平移。因此,奇数滤波器尺寸是首选的。

振荡信号在这里插入图片描述
与核[1, 1,
1]卷积的结果是:在这里插入图片描述

• 如果你将两个盒式滤波器进行卷积,你不会得到一个盒式滤波器。相反,你会得到一个三角形滤波器。你可以通过卷积两个盒式滤波器来轻松检查这一点。例如,在简单的情况下, N = 1 , M = 0 N=1,M=0 N=1,M=0
在这里插入图片描述
输出是一个长度为 2 × L − 1 2×L-1 2×L1的三角形滤波器,其中 L = 3 L=3 L=3是盒式滤波器的长度。当卷积两个不同长度的盒式滤波器时,结果将是一个截断的三角形。尽管这乍一看并不是问题,但它意味着如果你用盒式滤波器对图像进行两次模糊,你所得到的并不是用更大的盒式滤波器进行一次模糊的效果。
下一个低通滤波器解决了这两个问题。

3 .高斯滤波器

计算机视觉中重要的模糊(低通)滤波器之一是高斯滤波器。高斯滤波器很重要,因为它是许多自然发生滤波器的良好模型。它还具有一些我们将在这里讨论的独特性质。
高斯分布在连续变量中定义。在一维中:
在这里插入图片描述
在二维中:
在这里插入图片描述

参数σ调整高斯的空间范围。归一化常数设置为使函数积分为1。高斯核是正的和对称的(零相位滤波器)。

3.1 离散化

为了在实践中使用这个滤波器,我们需要考虑离散位置,并且还需要用有限支持函数来近似这个函数。实际上,我们只需要考虑在三个标准差x∈(-3σ,3σ)内的样本。在3σ处,高斯滤波器的幅度约为其中心值的1%。不幸的是,高斯滤波器的许多性质在连续域中才成立,并且在使用其离散形式时只是近似成立。
对于给定的标准差参数σ,离散化高斯核g[n, m; σ]为:
在这里插入图片描述

我们已经去除了归一化常数,因为离散高斯的总和与连续函数的积分不同。因此,在这里我们更喜欢定义原点处值为1的形式。在实践中,我们应该通过其值的总和来归一化离散高斯,以确保直流增益为1。

一维高斯(σ=1)及其离散化版本:
在这里插入图片描述

通过调整高斯的标准差σ,可以调整出现在模糊图像中的图像细节水平。图17.4显示了窄宽度和宽宽度高斯应用于图像的结果。
在这里插入图片描述
n维高斯滤波器具有额外的计算优势,因为它可以作为一维高斯滤波器的串联来应用。这可以通过将二维高斯方程(17.8)写入卷积方程(15.14)中来看出。让 g x g^x gx g y g^y gy分别是水平和垂直方向上的一维高斯卷积核(即, g x [ n ] = g [ n , 0 ] ,和 g y [ m ] = g [ 0 , m ] g^x[n]=g[n, 0],和g^y[m]=g[0, m] gx[n]=g[n,0],和gy[m]=g[0,m]),我们有
在这里插入图片描述

这可以节省大量的计算时间。如果二维卷积核是N×N个样本,那么直接卷积那个二维核的比例是 N 2 N^2 N2,因为方程(17.9)要求每个图像位置每个核样本进行一次乘法。使用两个一维核的串联,得到一个相同大小的等效二维滤波器,其比例是2N。
模糊的另一个应用是去除分散注意力的高分辨率图像细节。图17.5显示了一个高斯低通滤波器应用于去除图像中不需要的细节(块状伪影)的例子。
在这里插入图片描述

3.2 连续高斯的性质

• n维高斯是唯一完全圆形对称且可分离的算子。
• 连续傅里叶变换(FT)的高斯也是高斯。对于一维高斯,其傅里叶变换为:
在这里插入图片描述

在二维中,傅里叶变换为:
在这里插入图片描述
注意,这个函数对于增加的频率幅度是单调递减的,并且它也是径向对称的。
• 高斯傅里叶变换的宽度随σ减小(这与空间域中的高斯行为相反)。
• 两个n维高斯的卷积是一个n维高斯。
在这里插入图片描述
其中结果的方差是两个方差之和。这是高斯滤波器的显著性质,并且是后面第23章中将看到的高斯金字塔的基础。为了证明这个性质,人们可以使用高斯的傅里叶变换和卷积是傅里叶变换的乘积这一事实。
• 高斯是热方程的解。
• 任何集中在原点的函数的重复卷积都会产生高斯(中心极限定理)。
• 在极限σ→0下,高斯变成一个脉冲。这个性质也被许多其他函数共享,但它是一个有用的性质。

3.3 局限性

然而,这些性质中只有连续版本的高斯才成立,并不适用于通过直接在离散位置采样高斯值而得到的其离散近似 g [ n , m ; σ ] g[n, m; σ] g[n,m;σ]。为了看到这一点,让我们看一个一维的例子。让我们考虑一个方差 σ 2 = 1 / 2 σ^2=1/2 σ2=1/2的高斯。它可以通过五个样本来近似。我们将这个近似称为 g 5 g_5 g5,它取值为:
在这里插入图片描述
你可以检查,如果你计算 σ 2 = 1 σ2=1 σ2=1时的高斯近似,通过离散化高斯得到的结果不等于做 g 5 ◦ g 5 g_5◦g_5 g5g5。因此,随着你连续应用离散化高斯,误差会累积。也就是说,离散化高斯的卷积不再是高斯。
注意, g 5 [ n ] g_5[n] g5[n]与波[1, -1, 1, -1, …]的卷积不是零。这可以从高斯FT的形式中预期到。这不是一个强烈的限制,并且在许多应用中并不重要。然而,在一些情况下,完全取消最高频率是很重要的(比如在我们稍后将看到的应用抗锯齿滤波器时)。
下一个低通滤波器解决了盒式和高斯滤波器的局限性。

4 二项式滤波器

在实践中,有非常有效的离散近似高斯滤波器,对于某些σ值,它们比使用离散化高斯具有更好的性质。高斯滤波器的一个常见近似是使用二项式系数[77]。二项式滤波器是通过连续卷积盒式滤波器[1, 1]得到的。
二项式系数使用中心极限定理来近似高斯作为非常简单函数的连续卷积。二项式系数形成帕斯卡三角形,如图17.6所示。
在这里插入图片描述

4.1 性质

  • 二项式系数仅使用整数提供高斯系数的紧凑近似。请注意, b 2 b_2 b2的值与 g 5 g_5 g5不同,尽管两者都将用作具有相同方差 σ 2 = 1 / 2 σ_2=1/2 σ2=1/2的高斯函数的近似值。需要注意的是, g 5 g_5 g5的方差并不是真正的 σ 2 = 1 / 2 σ_2=1/2 σ2=1/2,尽管它是通过将高斯函数离散化得到的。
  • 每个二项式滤波器bn的所有系数(直流增益)之和为 2 n 2n 2n,其空间方差为 σ 2 = n / 4 σ_2=n/4 σ2=n/4。 二项式滤波器的一个显著特性是 b n ◦ b m = b n + m b_n◦b_m=b_{n+m} bnbm=bn+m,因此,这类似于连续域中的高斯性质。也就是说,两个二项式滤波器的卷积是另一个二项式滤波器。
  • 高斯滤波器最简单的近似值是3-tap二项式核:
    在这里插入图片描述
    这个滤波器很有趣,因为它是均匀的(因此它可以应用于图像而不会产生任何平移),它的离散傅里叶变换(DFT)是:
    在这里插入图片描述
    频率增益如图17.7(b)所示。增益随空间频率u单调下降(没有波纹),在最高频率 G 3 [ 10 ] = 0 G_3[10]=0 G3[10]=0时变为零。
    在这里插入图片描述
  • 所有偶数二项式滤波器都可以写成具有核[1,2,1]的连续卷积。因此,它们的傅里叶变换是滤波器[1,2,1]的傅里叶变换的幂,因此它们也是单调的:
    在这里插入图片描述
    滤波器传递函数B2n为实数且为正。这是一个零相位滤波器。
  • 对于所有二项式滤波器bn,当它们与波[1,-1,1,-1,…]卷积时,结果是零信号[0,0,0,O,…]。这是二项式滤波器的一个非常好的特性,稍后在讨论图像降采样时将变得非常有用

4.2 2D二项式滤波器

2D中的高斯滤波器可以使用可分性近似为两个二项式滤波器(一个垂直,另一个水平)的卷积。
例如:
在这里插入图片描述

二维二项式滤波器:在这里插入图片描述

滤波器 b 2 , 2 b_{2,2} b2,2的直流增益为16,因此我们将卷积输出除以16,使输出图像与输入图像具有相似的对比度。
图17.8显示了被高频棋盘图案噪声破坏的图像。接下来的两幅图像是用3×3箱式滤波器(中间)和 b 2 , 2 b_{2,2} b2,2二项式滤波器对噪声图像进行滤波的结果。3×3箱式滤波器不能完全消除噪声,而二项式滤波器可以完全消除这种棋盘噪声。方框和二项式滤波器都降低了输入图像的分辨率。
在这里插入图片描述

5 结论

高斯和二项式滤波器在计算机视觉中得到了广泛的应用。特别是二项式滤波器 [ 1 , 2 , 1 ] / 4 [1,2,1]/4 [1,2,1]/4(这里归一化,使其DC增益为1)及其2D扩展是非常有用的内核,可以在许多情况下使用,例如需要去除高频噪声或将图像降采样2倍时。模糊核在构建图像金字塔时很有用,或者在执行不同的池操作或调整特征图大小时在神经网络中很有用。

将2D二项式滤波器放在身边:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码时光机:Git基础速成

hello,家人们,今天咱们来介绍Git以及Git相关的操作,好啦,废话不多讲,开干. 1:Git初识 在介绍Git前,博主首先讲一个小故事. 我们学计算机的小伙伴们,在学校里头都有实验课,那么老师呢就会要求我们写实验报告并且要求我们交上去给老师检查.有一个学计算机的大学生,名字叫张三,然…

Datawhale X 李宏毅苹果书 AI夏令营-深度学习进阶task2:自适应学习率,分类

1.自适应学习率 临界点其实不一定是在训练一个网络的时候会遇到的最大的障碍。很多时候训练网络,损失不再下降,不是因为到了临界点,而是可能在山谷之间不停震荡。 以下为不同学习率对训练的影响,下图中左右平缓,上下陡…

C语言 | Leetcode C语言题解之第387题字符串中的第一个唯一字符

题目&#xff1a; 题解&#xff1a; struct hashTable {int key;int val;UT_hash_handle hh; };int firstUniqChar(char* s) {struct hashTable* position NULL;int que[26][2], left 0, right 0;int n strlen(s);for (int i 0; i < n; i) {int ikey s[i];struct has…

火语言RPA流程组件介绍--浏览选择文件夹

&#x1f6a9;【组件功能】&#xff1a;打开浏览文件夹选择对话框 配置预览 配置说明 对话框标题 支持T或# 打开浏览文件夹对话框时显示的标题。 默认打开文件夹 支持T或# 打开浏览文件夹对话框时&#xff0c;默认打开此文件夹。 取消后终止流程 “是”、“否”2种供选择…

一篇详细介绍常用第三方库的教程

作者&#xff1a;郭震 我们之前介绍过如何安装Python的各种常用第三方库.这些库为程序员提供了许多功能,能够大大简化我们的开发工作.本文将为你介绍一些最常用的第三方库,帮助你更好地理解它们的用途及基本概念. 1. NumPy NumPy是一个强大的科学计算库.它提供了多维数组对象以…

09.定时器02

#include "reg52.h"sbit led P3^6;void delay10ms() { //1. 配置定时器0工作模式位16位计时TMOD 0x01;//2. 给初值&#xff0c;定一个10ms出来TL00x00;TH00xDC;//3. 开始计时TR0 1;TF0 0; } void main() {int cnt 0;led 1;while(1){if(TF0 1)//当爆表的时候&a…

Git之2.9版本重要特性及用法实例(五十八)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者. 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列…

非关系型数据库 Redis 的安装与配置

文章目录 一 . CentOS 7 安装 Redis【版本选择说明】一 . 安装 Redis二 . 配置 Redis2.1 针对可执行程序设置符号链接2.2 针对配置文件设置符号链接2.3 修改配置文件2.3.1 设置 IP 地址2.3.2 关闭保护模式2.3.3 启动守护进程2.3.4 设置工作目录2.3.5 设置日志目录 三 . 启动 Re…

Apache SeaTunnel Zeta 引擎源码解析(一)Server端的初始化

引入 本系列文章是基于 Apache SeaTunnel 2.3.6版本&#xff0c;围绕Zeta引擎给大家介绍其任务是如何从提交到运行的全流程&#xff0c;希望通过这篇文档&#xff0c;对刚刚上手SeaTunnel的朋友提供一些帮助。 我们整体的文章将会分成三篇&#xff0c;从以下方向给大家介绍&am…

掌握数据利器:AWS Glue与数据基盘概览

引言 随着数字化进程的不断推进&#xff0c;企业现在能够积累并分析海量且多样化的数据。这一优势使得许多企业开始采用数据驱动型经营&#xff08;即基于数据的经营策略&#xff09;。通过基于数据的客观判断&#xff0c;企业及其管理者可以获得诸多好处。 然而&#xff0c;…

DeepMind 机器人学习打乒乓球,朝着「专业运动员水平的速度和性能」发展

这几天全球各界最火热的话题非奥运会莫属&#xff0c;而其中乒乓球比赛更是引起了互联网的讨论热潮&#xff0c;无论是欢呼也好、争议也罢&#xff0c;在现实世界人类的乒乓球大赛风生水起的同时&#xff0c;AI已经偷偷在乒乓球上“出师”了—— ——DeepMind近日发布一项新工作…

机器学习 第7章 贝叶斯分类器

目录 7.1 贝叶斯决策论7.2 极大似然估计7.3 朴素贝叶斯分类器7.4 半朴素贝叶斯分类器7.5 贝叶斯网7.5.1 结构7.5.2 学习7.5.3 推断 7.6 EM算法 7.1 贝叶斯决策论 对分类任务来说&#xff0c;在所有相关概率都己知的理想情形下&#xff0c;贝叶斯决策论考虑如何基于这些概率和误…

如何删除浏览器每次登录自动保存的密码,以防自动登录泄露自己的隐私

今天小编以 Microsoft edge 浏览器为例&#xff0c;如何在自己离职或毕业以后留给他人的电脑是干净的&#xff0c;不会在任何网页登录时显示已保存的密码&#xff0c;让他人自动登录。 ①在电脑上打开 Microsoft edge 浏览器后&#xff0c;点击“设置” ②进入设置界面后&…

基于SSM的咖啡馆管理系统

基于SSM的咖啡馆管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisJSP工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 前台界面 后台界面 摘要 在当前这个信息爆炸的时代&#xff0c;众多行业正经历着…

Python酷库之旅-第三方库Pandas(114)

目录 一、用法精讲 501、pandas.DataFrame.mode方法 501-1、语法 501-2、参数 501-3、功能 501-4、返回值 501-5、说明 501-6、用法 501-6-1、数据准备 501-6-2、代码示例 501-6-3、结果输出 502、pandas.DataFrame.pct_change方法 502-1、语法 502-2、参数 502…

[知识分享]华为铁三角工作法

在通信技术领域&#xff0c;尤其是无线通信和物联网领域&#xff0c;“华为铁三角”是华为公司内部的一种销售、交付和服务一体化的运作模式。这种模式强调的是以客户为中心&#xff0c;通过市场、销售、交付和服务三个关键环节的紧密协作&#xff0c;快速响应客户需求&#xf…

2.12 滑动条事件

目录 实验原理 实验代码 运行结果 实验原理 在 OpenCV 中&#xff0c;滑动条设计的主要目的是在视频播放帧中选择特定帧&#xff0c;而在调节图像参数时也会经常用到。在使用滑动条前&#xff0c;需要给滑动条赋予一个名字&#xff08;通常是一个字符串&#xff09;&#x…

Java | Leetcode Java题解之第388题文件的最长绝对路径

题目&#xff1a; 题解&#xff1a; class Solution {public int lengthLongestPath(String input) {int n input.length();int pos 0;int ans 0;int[] level new int[n 1];while (pos < n) {/* 检测当前文件的深度 */int depth 1;while (pos < n && inpu…

Mamba:超越Transformer的新一代神经网络架构

在过去的七年里&#xff0c;Transformer一直在语言建模领域占据着主导地位。然而&#xff0c;现在有一个新兴的神经网络架构Mamba&#xff0c;正在挑战Transformer的霸主地位。虽然目前Mamba仅在规模较小的模型上进行了测试&#xff08;参数量达到数十亿&#xff09;&#xff0…

华为OD机试真题 - 构成正方形的数量(Java/Python/JS/C/C++ 2024 B卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;E卷D卷A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加…