[数字图像处理]第四章 频率域滤波

news2024/12/23 18:51:44

文章目录

  • 第四章 频率域滤波
    • 笔记:
      • 4.1 背景
        • 4.1.1 傅里叶级数和变换简史
      • 4.2 基本概念
        • 4.2.1 复数
        • 4.2.2 傅里叶级数
        • 4.2.3 冲激及其取样特性
        • 4.2.5 卷积
      • 4.3 取样和取样函数的傅里叶变换
        • 4.3.1 取样
        • 4.3.2 取样函数的傅里叶变换
        • 4.3.3 取样定理
        • 4.3.4 混淆
        • 4.3.5 有取样后的数据重建(复原)函数
      • 4.5 两个变量的函数的扩展
        • 4.5.1 二维冲激及其取样特征
        • 4.5.2 二维连续傅里叶变换对
        • 4.5.3 二维取样和二维取样定理
        • 4.5.4 图像中的混淆
            • 从一维混淆展开
            • 图像内插和重取样
            • 莫尔(波纹)模式
        • 4.5.5 二维离散傅里叶变换及其反变换
      • 4.6 二维离散傅里叶变换的一些性质
        • 4.6.1 空间和频率间隔的关系
        • 4.6.2 平移和旋转
        • 4.6.3 周期性
        • 4.6.4 对称性
        • 4.6.5 傅里叶谱和相角
        • 4.6.6 二维卷积定理
        • 4.6.7 二维离散傅里叶变换性质的小结
      • 4.7 频率域滤波基础
        • 4.7.1 频率域的其他特性
        • 4.7.2 频率域滤波基础
        • 4.7.4 空间和频率域滤波间的对应
      • 4.8 使用频率域滤波器平滑图像
        • 4.8.1 理想低通滤波器
        • 4.8.2 布特沃斯低通滤波器
        • 4.8.3 高斯低通滤波器
      • 4.9 使用频率域滤波器锐化图像
        • 4.9.1 理想高速滤波器
        • 4.9.2 布特沃斯高速滤波器
        • 4.9.3 高斯高通滤波器
        • 4.9.4 频率域的拉普拉斯算子
        • 4.9.5 钝化模板、高提升滤波和高频强调滤波
        • 4.9.6 同态滤波
      • 4.10 选择性滤波
        • 4.10.1 带阻滤波器和带通滤波器
        • 4.10.2 脑波滤波器
      • 4.11 实现
        • 4.11.1 二维DFT的可分性
        • 4.11.2 用DFT算法计算IDFT
        • 4.11.3 快速傅里叶变换(FFT)
        • 4.11.4 关于滤波器设计的一些注释
    • 实验:
      • 1.实现傅里叶变换与傅里叶逆变换
        • 1.1使用nump
        • 1.2使用opencv实现
      • 2.使用高通滤波器锐化图像
      • 3.使用低通滤波器平滑图像

第四章 频率域滤波

笔记:

4.1 背景

​ 滤.泼器:抑制或最小化某些频率的波或振荡的装直或材料

​ 频率:自变量单位变化期间,一个周期函数重复相同值序列的次数

4.1.1 傅里叶级数和变换简史

​ 傅里叶指出任何周期函数都可以表示为不同频率的正弦和或余弦和的形式,每个正弦项和/余弦项和乘以不同的系数 (现在称该和为傅里叶级数)。 无论函数多么复杂,只要它是周期的,并且满足某些适度的数学条件,都可以用这样的和来表示。

​ 至非周期函数(但该曲线下的面积是有限的)也可以用正弦和/或余弦乘以加权两数的积分来表示在这种情况下的公式就是傅里叶变换,其作用在多数理论和应用学科中甚至远大于傅里叶级数用傅里叶级数或变换表示的函数特征完全可以通过傅里叶反变换来重建,而不会丢失任何信息 。

4.2 基本概念

4.2.1 复数

​ 复数C的定义如下:
C = R + j I C=R+jI C=R+jI
​ 其中, 实数R和I是实数,j是一 个等于-1的平方根的虚数,即
J = − 1 J=\sqrt{-1} J=1
​ R表示复数的实部,I是复数的虚部。实数是 I = 0 的复数的子集。

4.2.2 傅里叶级数

​ 具有周期T的连续变量t的周期函数f(t) 可以被描述为乘以适当系数的正弦和余弦和, 这个和就是傅里叶级数。
f ( t ) = ∑ i = − ∞ ∞ c n e j 2 Π n T t f(t) = \sum^{\infty}_{i = -\infty}{c_ne^{j\frac{2Πn}{T}t}} f(t)=i=cnejTnt
​ 其中,
c n = 1 T ∫ − T / 2 T / 2 f ( t ) e − j 2 Π n T t d t , n = 0 , ± 1. ± 2 , . . . . . . c_n=\frac{1}{T}\int^{T/2}_{-T/2}{f(t)e^{{-j\frac{2Πn}{T}t}}dt}, n=0, \pm1.\pm2,...... cn=T1T/2T/2f(t)ejTntdt,n=0,±1.±2,......
是系数,f(t) 可展开为正弦与余弦之和这一事实来自欧拉公式。

4.2.3 冲激及其取样特性

​ 线性系统和傅里叶变换研究的核心是冲激及其取样特性,连续变量t在t=0处的单位冲激表示为 δ \delta δ(t),其定义为
δ ( t ) = { 0 , t ≠ 0 ∞ , t = 0 \delta(t)= \lbrace ^ {\infty\qquad, t =0}_{0\qquad, t \not=0} δ(t)={0,t=0,t=0
​ 它还被限制为满足等式
∫ − ∞ ∞ δ ( t )   d t = 1 \int_{-\infty}^{\infty} \delta(t)\, {\rm d}t = 1 δ(t)dt=1

4.2.5 卷积

​ 两个函数的卷积涉及一个函数关于原点做翻转(旋转 180°)并滑过另一个函数。两个函数的卷积由算子★表示,卷积定义如下:
f ( t ) ★ h ( t ) = ∫ − ∞ ∞ f ( r ) h ( t − r ) d r f(t)★h(t)=\int^{\infty}_{-\infty}{f(r)h(t-r)}dr f(t)h(t)=f(r)h(tr)dr
​ 其中,负号表示刚刚提及的翻转。t是一个函数滑过另一个函数的位移,而r是积分假变量。 现在我们假定函数从-∞扩展到∞。

4.3 取样和取样函数的傅里叶变换

4.3.1 取样

​ 用计算机处理之前,连续函数必须转换为离散值序列。这是用取样和量化来完成的。

​ 考虑一个连续函数f(t),我们希望以独立变量t的均匀间隔(ΔT)取样。我们假定雨数对于t从一到扩展。模拟取样的一种方法是用一个 ΔT 单位间隔的冲激串作为取样函数去乘以f(t),即
f ~ ( t ) = f ( t ) s Δ T = ∑ n = − ∞ ∞ f ( t ) δ ( t − n Δ T ) \tilde{f}(t)=f(t)s_{ΔT}=\sum^{\infty}_{n=-\infty}f(t)\delta(t-nΔT) f~(t)=f(t)sΔT=n=f(t)δ(tnΔT)
其中,f(t)表示取样后的函数。这一和式的每一个分量都是由在该冲激位置处f(t)的值加权后的冲激。
每个取样值由加权后的冲激“强度”给出,我们可通过积分得到它。

4.3.2 取样函数的傅里叶变换

​ 令F(μ)代表连续函数f(t)的傅里叶变变换。取样后的相应函数 f ~ ( t ) \tilde{f}(t) f~(t)是f(t)与一个冲激串的乘积。由卷积定理我们可知,空间域两个函数乘积的傅里叶变换是两个函数在频率域的卷积。这样,取样后的函数 f ~ ( t ) \tilde{f}(t) f~(t)的傅里叶变换 F ~ ( μ ) \tilde{F}(μ) F~(μ))是
F ~ ( μ ) = ℑ { f ~ ( t ) } = ℑ { f ( t ) s Δ T ( t ) } = F ( μ ) ★ S ( μ ) \tilde{F}(μ)= \Im\lbrace\tilde{f}(t)\rbrace= \Im\lbrace{f(t)}s_{ΔT}(t)\rbrace= F(μ)★S(μ) F~(μ)={f~(t)}={f(t)sΔT(t)}=F(μ)S(μ)

4.3.3 取样定理

​ 取样定理:如果以超过函数最高频率的两倍的取样率来获得样本,连续的带限函数可以完全地从它的样本集来恢复

4.3.4 混淆

​ 由函数欠取样导致的效果就是周知的频率混淆,或简称为混淆。在字面上,混淆是-一个过程,在这一过程中,一个连续函数的高频分量在取样后的函数中用低频“化妆”了。 这与通常所用的混淆一词是一致的, 其意思是“错认了”。

4.3.5 有取样后的数据重建(复原)函数

​ 理解取样数据重建的基础是很重要的,卷积是这一理解的核心。

4.5 两个变量的函数的扩展

4.5.1 二维冲激及其取样特征

​ 两个连续变量t和z的冲激δ(t, z)被定义为如式所示的形式:
δ ( t , z ) = { 0 , 其他 ∞ , t = z = 0 \delta(t,z)= \lbrace ^ {\infty\qquad, t=z=0}_{0\qquad, 其他} δ(t,z)={0,其他,t=z=0
​ 和
∫ − ∞ ∞ ∫ − ∞ ∞ δ ( t , z )   d t d z = 1 \int_{-\infty}^{\infty}\int_{-\infty}^{\infty} \delta(t,z)\, {\rm d}t{\rm d}z = 1 δ(t,z)dtdz=1

4.5.2 二维连续傅里叶变换对

​ 令f(t, z)是两个连续变量t和z的连续函数。则其二维连续傅里叶变换对由以下两个表达式给出:

F ( μ , v ) = ∫ − ∞ ∞ ∫ − ∞ ∞ f ( t , z ) e − j 2 Π ( μ t + v z )   d t d z F(μ,v)=\int_{-\infty}^{\infty}\int_{-\infty}^{\infty} f(t,z)e^{{-j2Π(μt+vz)}} \, {\rm d}t{\rm d}z F(μ,v)=f(t,z)ej(μt+vz)dtdz

f ( t , z ) = ∫ − ∞ ∞ ∫ − ∞ ∞ F ( μ , v ) e j 2 Π ( μ t + v z )   d μ d v f(t,z)=\int_{-\infty}^{\infty}\int_{-\infty}^{\infty} F(μ,v)e^{{j2Π(μt+vz)}} \, {\rm d}μ{\rm d}v f(t,z)=F(μ,v)ej(μt+vz)dμdv
​ 其中,μ和v是频率变量。当涉及图像时, t和z解释为连续空间变量。就像一维情况那样, 变量μ

和v的域定义了连续频率域。

4.5.3 二维取样和二维取样定理

​ 类似于一维情况中的方式,二维取样可用取样函数(二维冲激串)建模:
s Δ T Δ Z ( t , z ) = ∑ m = − ∞ ∞ ∑ n = − ∞ ∞ δ ( t − m Δ T , z − n Δ Z ) s_{ΔTΔZ}(t,z)=\sum^{\infty}_{m=-\infty}\sum^{\infty}_{n=-\infty}\delta(t-mΔT,z-nΔZ) sΔTΔZ(t,z)=m=n=δ(tmΔT,znΔZ)
​ 其中,ΔT和ΔZ是连续函数f(t,z)沿t轴和z轴的样本间的间隔。

4.5.4 图像中的混淆

从一维混淆展开

​ 正如在一维情况下那样,如果只在两个坐标方向上无限扩展,二维连续变量t和z的连续函数通常可以被带限。限制一个函数时间的非常动作将引起在频率域无限扩展的有害的频率分量。因为我们不可能对一个函数无限地取样,所以,正像在取样后的一维函数中所存在的那样,在数字图像中混淆总是存在的。在图像中,存在两种主要的混淆现象:空间混淆和时间混淆。

​ 空间混淆是由欠取样造成的。

​ 时间混淆与图像序列中图像间的时间间隔有关。时间混淆最常见的例子之一是“车轮"效应,即在序列图像(如电影)中具有轮辐的车轮出现倒转的现象。这是由于序列中的帧率低于轮子转动的速度引起的。

图像内插和重取样

​ 就像在一维情形中那样,由样本集合完美地重建一个带限图像函数要求在空间域用sinc 函数做二维卷积。这种理论上的完美重建要求使用无限求和来内插,在实践中,迫使我们不得不寻求某种近似。在图像处理中,二维内插最普通的应用之一是调整图像的大小(放大和缩小)。放大可看成是过取样,缩小则可看成是欠取样。这两种操作和前面几节讨论的取样概念之间的主要区别是放大和缩小用于数字图像。

莫尔(波纹)模式

​ 莫尔(波纹)模式”,它们有时是使用周期或近似周期分量对场景取样产生的。在光学中,莫尔模式指的是在两个近似等间隔的光栅之间产生的差拍模式。这些差拍模式通常每天都会发生。例如,我们从防昆虫纱窗重叠在一起,或从电视光栅线与条带材料间所看到的干涉那样。在数字图像处理中,当扫描介质印刷物如报纸和杂志时,或
者在具有周期分量的图像中,如果它的间隔与取样的间隔可比的时候,通常都会出现这一问题。与取样造成的人为缺陷相比,莫尔模式更为常见。

4.5.5 二维离散傅里叶变换及其反变换

​ 二维傅里叶变换(DFT)如下:
F ( u , v ) = ∑ x = 0 M − 1 ∑ y = 0 N − 1 f ( x , y ) e − j 2 Π ( u x / M + v y / N ) F(u,v)=\sum^{M-1}_{x=0}\sum^{N-1}_{y=0}f(x,y)e^{{-j2Π(ux/M+vy/N)}} F(u,v)=x=0M1y=0N1f(x,y)ej(ux/M+vy/N)
​ 其中,f(x,y)是大小为MxN的数字图像。与一维中的情况一样,该式必须对离散变量u和v在u=0,1,2, …, M-1和v=0,1,2…,N-1范围内求值.

4.6 二维离散傅里叶变换的一些性质

4.6.1 空间和频率间隔的关系

​ 假定对连续函数f(t, z)取样生成了一幅数字图像f(x, y),它由分别在t和z方向所取的MxN个样点组成。令ΔT和ΔZ表示样本间的间隔,那么相应离散频率域变量间的间隔分别由
Δ u = 1 M Δ T Δu=\frac{1}{MΔT} Δu=MΔT1

Δ v = 1 N Δ Z Δv=\frac{1}{NΔZ} Δv=NΔZ1

给出。注意,频率域样本间的间隔与空间样本间的间距和样本数成反比。

4.6.2 平移和旋转

​ 直接代人二维离散傅里叶变换及其反变换的公式可以证明傅里叶变换对满足下列平移特性
f ( x , y ) e j 2 Π ( μ 0 x / M + v 0 y / N ) ⇔ F ( u − u 0 , v − v 0 ) f(x,y)e^{{j2Π(μ_0x/M+v_0y/N)}}\Leftrightarrow F(u-u_0,v-v_0) f(x,y)ej(μ0x/M+v0y/N)F(uu0,vv0)


f ( x − x 0 , y − y 0 ) ⇔ F ( u , v ) e j 2 Π ( μ x 0 / M + v y 0 / N ) f(x-x_0,y-y_0)\Leftrightarrow F(u,v)e^{{j2Π(μx_0/M+vy_0/N)}} f(xx0,yy0)F(u,v)ej(μx0/M+vy0/N)
也就是说,用指数项乘以f(x, y)将使DFT的原点移到点( u 0 , v 0 u_0,v_0 u0,v0);反之,用负指数乘以F(u,V)将使f(x, y)的原点移到点( x 0 , y 0 x_0,y_0 x0,y0)。平移不影响F(u, v)的幅度(谱)。使用极坐标
x=rcosθ,y=rsinθ, u = ω \omega ωCOSφ,V = ω \omega ωsinφ
可得到下列变换对:
f ( r , θ + θ 0 ) ⇔ F ( ω , φ + φ 0 ) f(r,θ +θ_0)\Leftrightarrow F(\omega,φ+φ_0) f(r,θ+θ0)F(ω,φ+φ0)

它指出,若f(x,y)旋转 θ 0 θ_0 θ0角度,则F(u,v)也旋转相同的角度。反之,若F(u,v)旋转-一个角度,f(x, y)也旋转相同的角度。

4.6.3 周期性

​ 如在一维情况中那样,二维傅里叶变换及其反变换在u方向和v方向是无限周期的,即
F ( u , v ) = F ( u + k 1 M , v ) = F ( u , v + k 2 N ) = F ( u + k 1 M , v + k 2 N ) F(u,v)= F(u+k_1M,v)= F(u,v+k_2N)= F(u+ k_1M,v+k_2N) F(u,v)=F(u+k1M,v)=F(u,v+k2N)=F(u+k1M,v+k2N)

f ( x , y ) = f ( x + k 1 M , y ) = f ( x , y + k 2 N ) = f ( x + k M , y + k 2 N ) f(x,y)= f(x+k_1M,y)= f(x,y+k_2N)= f(x+kM,y+k_2N) f(x,y)=f(x+k1M,y)=f(x,y+k2N)=f(x+kM,y+k2N)

其中,k和k2是整数。
变换及其反变换的周期性在基于DFT算法的实现上是重要的特性。

4.6.4 对称性

​ 傅立叶变换结果是以原点为中心的共轭对称函数。偶函数是对称的,奇函数是反对称的。因为DFT和IDFT中的所有指数都是正的,当我们谈论对称(反对称)时,我们指的是关于序列中点的对称(反对称)。

​ 根据周期性和共轭对称性,在对图像进行频谱分析处理时只需要关注一个周期就可以了,同时利用图像的傅里叶变换和傅里叶变换的共轭可以直接计算图像的幅度谱,因此使得图像的频谱计算和显示得以简化。

4.6.5 傅里叶谱和相角

​ 因为通常二维DFT 一般是复函数,因此可使用极坐标形式来表示:
F ( u , v ) = ∣ F ( u , v ) ∣ e j φ ( u , v ) F(u,v)=\left\vert F(u,v)\right\vert e^{j\varphi(u,v)} F(u,v)=F(u,v)ejφ(u,v)

其中,幅度
∣ F ( u , v ) ∣ = [ R 2 ( u , v ) + F @ ( u , v ) ] 1 / 2 \left\vert F(u,v)\right\vert = [R^2(u,v)+F^@(u,v)]^{1/2} F(u,v)=[R2(u,v)+F@(u,v)]1/2

称为傅里叶谱(或频谱),而
φ ( u , v ) = a r c t a n [ I ( u , v ) R ( u , v ) ] \varphi(u,v)=arctan[\frac{I(u,v)}{R(u,v)}] φ(u,v)=arctan[R(u,v)I(u,v)]

称为相角

4.6.6 二维卷积定理

​ 二维循环卷积的表达式:
f ( x , y ) ★ h ( x , y ) = ∑ x = 0 M − 1 ∑ y = 0 N − 1 f ( m , n ) h ( x − m , y − n ) f(x, y)★h(x,y)=\sum^{M-1}_{x=0}\sum^{N-1}_{y=0}f(m,n)h(x-m,y-n) f(x,y)h(x,y)=x=0M1y=0N1f(m,n)h(xm,yn)
其中,x=0, 1,2…,M-1,y=0,1,2…,N-1 。

​ 二维卷积定理由下面的表达式给出:
f ( x , y ) h ( x , y ) ⇔ F ( u , v ) ★ H ( u , v ) f(x, y)h(x, y)\Leftrightarrow F(u,v)★H(u,v) f(x,y)h(x,y)F(u,v)H(u,v)
​ 该性质的好处是将需要经过翻折、平移、相乘、求和等步骤实现的复杂的卷积运算简化为简单的乘法运算,这也是快速傅里叶变换(FFT)的出现使得该性质得到更广泛应用,同时,该性质对于理解信号的频率域处理方法特别重要,使得信号的空间域处理可以转换到频率域进行处理实现.

4.6.7 二维离散傅里叶变换性质的小结

为什么要在频率域研究图像处理?

  • 可以利用频率成分和图像外表之间的对应关系。一些在空间域表述困难的增强任务,在频率域中变得非常普通。

  • 滤波在频率域更为直观,它可以解释空间域滤波的某些性质

  • 可以在频率域指定滤波器,做反变换,然后在空间域使用结果滤波器作为空间域滤波器的指导

  • 一旦通过频率域试验选择了空间滤波,通常实施都在空间域进行

4.7 频率域滤波基础

4.7.1 频率域的其他特性

​ 低频对应图像内变化缓慢的灰度分量。
​ 高频对应图像内变化越来越快的灰度分量,是由灰度的尖锐过渡造成的。

4.7.2 频率域滤波基础

​ 频率域滤波由修改一幅图像的傅里叶变换然后计算其反变换得到处理后的结果组成。由此,若给定一幅大小为M x N的数字图像f(x, y),则我们]感兴趣的基本滤波公式有如下形式:
g ( x , y ) = ξ − 1 [ H ( u , v ) F ( u , ) ] g(x,y)= \xi^{-1} [H(u,v)F(u,)] g(x,y)=ξ1[H(u,v)F(u,)]

其中, ξ − 1 \xi^{-1} ξ1 是IDFT, F(u, v)是输入图像f (x, y)的DFT, H(u, v)是滤波函数(也简称为滤波器,或者滤波传递函数),g(x, y)是滤波后的(输出)图像。函数F, H和g是大小与输入图像相同的MxN阵列。

4.7.4 空间和频率域滤波间的对应

​ 空间域和频率域滤波间的纽带是卷积定理。

注:4.8、4.9、4.10、4.11偏实验部分 就不详细介绍了,读者感兴趣可以详阅原书。

4.8 使用频率域滤波器平滑图像

​ 通过低频的滤波器称为低通滤波器,可以使图像平滑

4.8.1 理想低通滤波器

4.8.2 布特沃斯低通滤波器

​ 与理想低通滤波器(ILPF)不同,布特沃斯低通滤波器(BLPF) 传递函数并没有在通过频率和滤除频率之间给出明显截止的尖锐的不连续性。

4.8.3 高斯低通滤波器

4.9 使用频率域滤波器锐化图像

​ 通过高频的滤波器称为高通滤波器,可以使图像锐化

4.9.1 理想高速滤波器

4.9.2 布特沃斯高速滤波器

4.9.3 高斯高通滤波器

4.9.4 频率域的拉普拉斯算子

4.9.5 钝化模板、高提升滤波和高频强调滤波

4.9.6 同态滤波

4.10 选择性滤波

4.10.1 带阻滤波器和带通滤波器

4.10.2 脑波滤波器

4.11 实现

4.11.1 二维DFT的可分性

4.11.2 用DFT算法计算IDFT

4.11.3 快速傅里叶变换(FFT)

4.11.4 关于滤波器设计的一些注释

实验:

1.实现傅里叶变换与傅里叶逆变换

1.1使用nump

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv

img = cv.imread('C:/Users/Yuao/Pictures/learningTest/gray.jpg', 0)
f = np.fft.fft2(img)
fShift = np.fft.fftshift(f)
# fftshift逆函数
ifShit = np.fft.ifftshift(fShift)
# fft2 逆函数
iimag = np.fft.ifft2(ifShit)
# 设置频谱范围
iimag = np.abs(iimag)

plt.subplot(121)
plt.imshow(img, cmap='gray')
plt.title('original')
# 关闭坐标轴
plt.axis('off')
plt.subplot(122)
plt.imshow(iimag, cmap='gray')
plt.title('ifft_result')
plt.axis('off')
plt.show()

运行结果:
在这里插入图片描述

1.2使用opencv实现

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv

img = cv.imread('C:/Users/Yuao/Pictures/learningTest/gray.jpg', 0)
# dft函数实现傅里叶变换 返回结果是双通道 一个通道是实数另一个是虚数 输入参数要求是原始图像(要求32位) 转换标识
dft = cv.dft(np.float32(img), flags=cv.DFT_COMPLEX_OUTPUT)
dftShift = np.fft.fftshift(dft)
iShift = np.fft.ifftshift(dftShift)
iImag = cv.idft(iShift)
iImag = cv.magnitude(iImag[:,:,0],iImag[:,:,1])
plt.subplot(121)
plt.imshow(img, cmap='gray')
plt.title('original')
plt.axis('off')
plt.subplot(122)
plt.imshow(iImag, cmap='gray')
plt.title('opResult')
plt.axis('off')
plt.show()

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XHkiC0LO-1684435823315)(C:\Users\Yuao\AppData\Roaming\Typora\typora-user-images\image-20230519024620534.png)]

2.使用高通滤波器锐化图像

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv

# 低频对应图像内变化缓慢的灰度分量。
# 高频对应图像内变化越来越快的灰度分量,是由灰度的尖锐过渡造成的。

# 滤波
# 接受(通过)或者拒绝一定频率的分量
# 通过低频的滤波器称为低通滤波器
# 通过高频的滤波器称为高通滤波器

# 衰减高频而通过低频,低通滤波器,将模糊一幅图像
# 衰减低频而通过高频,高通滤波器,将增强尖锐的细节,但是会导致图像的对比度降低


img = cv.imread('C:/Users/Yuao/Pictures/learningTest/gray.jpg', 0)
f = np.fft.fft2(img)
fShift = np.fft.fftshift(f)
rows, cols = img.shape
crow, col = int(rows / 2), int(cols / 2)
fShift[crow - 30:crow + 30, col - 30:col + 30] = 0
ishift = np.fft.ifftshift(fShift)
io = np.fft.ifft2(fShift)
io = np.abs(io)


plt.subplot(121)
plt.imshow(img, cmap='gray')
plt.title('original')
# 关闭坐标轴
plt.axis('off')
plt.subplot(122)
plt.imshow(io, cmap='gray')
plt.title('hPFilter_result')
plt.axis('off')
plt.show()


运行结果:

在这里插入图片描述

3.使用低通滤波器平滑图像

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv

img = cv.imread('C:/Users/Yuao/Pictures/learningTest/gray.jpg', 0)
dft = cv.dft(np.float32(img), flags = cv.DFT_COMPLEX_OUTPUT)
dftShit = np.fft.fftshift(dft)
rows, cols = img.shape
crow, col = int(rows / 2), int(cols / 2)
mask = np.zeros((rows, cols, 2), np.uint8)
mask[crow-30:crow+30,col-30:col+30] = 1
fShift = dftShit * mask
iShift = np.fft.ifftshift(fShift)
iImag = cv.idft(iShift)
iImag = cv.magnitude(iImag[:,:,0],iImag[:,:,1])

plt.subplot(121)
plt.imshow(img, cmap='gray')
plt.title('original')
plt.axis('off')
plt.subplot(122)
plt.imshow(iImag, cmap='gray')
plt.title('lPFilter_result')
plt.axis('off')
plt.show()

运行结果:

在这里插入图片描述

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

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

相关文章

微服务—Redis实用篇-黑马头条项目-附近商户功能(使用GEO实现)

微服务—Redis实用篇-黑马头条项目-附近商户功能(使用GEO实现) 1、附近商户 1.1、附近商户-GEO数据结构的基本用法 GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬…

【C++】设计模式

目录 设计模式概述 单例模式 饿汉模式 懒汉模式 工厂模式 简单工厂模式 工厂方法模式 抽象工厂模式 观察者模式 设计模式概述 设计模式:一套反复被人使用、多数人知晓的、经过分类编目的代码设计经验的总结。一种固定的写代码的思维逻辑方式,一…

chatgpt赋能Python-python3_8降级3_7

Python 3.8降级至3.7:为什么需要这么做? Python 3.8是Python编程语言的最新版本,拥有许多令人兴奋的新功能和改进。但是,在某些情况下,您可能需要降级Python版本,特别是当某些库或框架不兼容Python 3.8时。…

AI绘图实战(十一):将纸质儿童画修改为电子照片/3D Openpose插件使用 | Stable Diffusion成为设计师生产力工具

S:AI能取代设计师么? I :至少在设计行业,目前AI扮演的主要角色还是超级工具,要顶替?除非甲方对设计效果无所畏惧~~ 预先学习: 安装及其问题解决参考:《Windows安装Stable Diffusion …

在vscode调试c++代码报错

在vscode调试c代码报错 一、我在vscode调试c代码,报错:错误原因:解决办法: 二、上面的问题解决之后,报错问题变了错误原因:路径中的“随笔”是中文,路径中不能出现中文!解决办法:将路径中的“随便”改成英文…

『python爬虫』25. 接入超级鹰处理验证码(保姆级图文)

目录 1. 验证码平台的使用1.1 下载demo程序1.2 注册后生成软件id1.3 查验证码类型1.4 demo文件中填写我们的用户参数测试效果 2. 分析超级鹰的登录3. 完整代码总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 1.…

Golang每日一练(leetDay0070) 移除链表元素、计数质数

目录 203. 移除链表元素 Remove Linked-list Elements 🌟 204. 计数质数 Count Primes 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每…

chatgpt赋能Python-python3_8安装pyqt5

Python3.8安装PyQt5教程 介绍PyQt5 PyQt5是一个用于创建桌面应用程序的Python模块。它利用Qt框架的本地GUI应用程序开发工具包,为Python开发者提供了一种方便的方式来创建跨平台的应用程序。PyQt5支持在Windows,MacOS和Linux等主要桌面操作系统上构建G…

ChatGPT api 接口调用测试

参考文档: https://platform.openai.com/docs/quickstart/build-your-application示例说明: 本示例会生成一个简单的ChatGPT api接口调用server程序,该程序可以给用户输入的宠物类别为宠物取三个名字。打开网页后,会看到用户输入…

chatgpt赋能Python-python3_8_5怎么保存

Python 3.8.5:什么是它,为什么它重要,以及如何安装和保存? Python是当今世界上最受欢迎的编程语言之一。Python 3.8.5是该语言的最新版本,它引入了一些重要的改进和新特性。这篇文章将介绍Python 3.8.5并向您展示如何…

macOS Ventura 13.4 (22F66) Boot ISO 原版可引导镜像下载

本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 macOS Ventura 13.4 包括以下增强功…

[创业之路-68]:科创板上市公司符合哪些条件

上交所发布《关于在上交所设立科创板并试点注册制相关情况答记者问》。上交所将认真落实习指示,在证监会的指导下,积极研究制订科创板和注册制试点方案,向市场征求意见并履行报批程序后实施。科创板是独立于现有主板市场的新设板块&#xff0…

chatgpt赋能Python-python3_8_2怎么用

Python 3.8.2 指南:介绍、使用和结论 Python 3.8.2 是近期发布的一个重大更新,它提供了很多新的特性和改进,使得 Python 编程更加高效、方便和强大。本文将向您介绍 Python 3.8.2 的主要特性和使用方法,帮助您更好的利用 Python …

【前后端分离博客】学习笔记05 --- canal

一、概述 使用canal rabbitMQ 实现 MySQL 和 Elasticsearch 的数据同步 图解: 流程如下: 给mysql开启binlog功能 mysql完成增、删、改操作都会记录在binlog中 canal监听binlog变化并发送消息到MQ,项目接收消息并实时更新elasticsearch中…

IS215UCVEH2AE speed tronic涡轮控制PCB板

IS215UCVEH2AETPMC815-11IS215UCVEM08B IS215UCVEH2AE是通用电气公司Mark VI Speedtronic控制系统的一个组件。该板的功能相当于VME控制卡。VME卡架是Mark VI的标准架,有13或21槽架可供选择。 IS215UCVEH2AE是一个带有附加前面板的矩形板。面板顶部和底部有一个固…

震惊——某白帽破解zabbix系统,实现命令执行,最终获取shell

如果你坚持了自己的梦想,全世界都会为你让路。 一、漏洞说明 zabbix([zbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案(百度百科定义)。很多Zabbix的admin口令使用了初始账号&…

【学习日记2023.5.17】之 项目入门介绍_YApi_Swagger

文章目录 1. 项目入门1.1 软件开发整体介绍1.2 项目介绍1.3 开发环境搭建1.3.1 前端环境搭建1.3.2 后端环境搭建1.3.3 登录功能完善1.3.4 前后端分离开发流程 1.4 导入接口文档1.5 Swagger介绍使用方式Swagger常用注解 1.6 注意事项 1. 项目入门 1.1 软件开发整体介绍 软件开发…

PySide6/PyQT多线程之 高效管理多线程:暂停、恢复和停止的最佳实践

前言 关于 PySide6/PyQT 多线程,正确地处理多线程编程并确保线程之间的同步和通信并不容易。 本文以一个示例代码为基础,介绍 PySide6/PyQT多线程的运用,展示如何创建和管理线程,以及如何实现线程之间的同步和通信。 设想这么一个…

IP组播路由协议(组播内部网关协议)

IP组播路由协议:用来建立组播树,是实现组播传输的关键技术。分为源分发树和共享分发树。 PIM:协议无关组播 密集模式: PIM-DM:密集模式PIM DVMRP:距离矢量组播路由协议 MOSPF:组播开放式最短链路优先 稀疏模式 CBT:基于核心的树 PIM-SM:稀疏模式PIM 这…

微星UEFI签名密钥泄露引发“末日”供应链攻击恐慌

对硬件制造商微星Micro-Star International(更广为人知的名称是 MSI)的勒索软件入侵引发了人们对毁灭性供应链攻击的担忧,这些攻击可能会注入恶意更新,这些更新已使用受大量最终用户设备信任的公司签名密钥进行签名。 这有点像世…