第4章 Python 数字图像处理(DIP) - 频率域滤波8 - 二维DFT和IDFT的一些性质 - 二维离散卷积定理

目录

    • 二维DFT和IDFT的一些性质
      • 二维离散卷积定理
      • 二维离散傅里叶变换性质的小结

二维DFT和IDFT的一些性质

二维离散卷积定理

二维循环卷积表达式:
(f⋆h)(x,y)=∑m=0M−1∑n=0N−1f(m,n)h(x−m,y−n)(4.94)(f \star h)(x, y) = \sum_{m=0}^{M-1} \sum_{n=0}^{N-1} f(m,n)h(x-m, y-n) \tag{4.94}(fh)(x,y)=m=0M1n=0N1f(m,n)h(xm,yn)(4.94)

二维卷积定理为:
(f⋆h)(x,y)⇔(F∙H)(u,v)(4.95)(f \star h)(x, y) \Leftrightarrow (F\bullet H)(u, v) \tag{4.95}(fh)(x,y)(FH)(u,v)(4.95)

(f∙h)(x,y)⇔1MN(F⋆H)(u,v)(4.96)(f \bullet h)(x, y) \Leftrightarrow \frac{1}{MN}(F\star H)(u, v) \tag{4.96}(fh)(x,y)MN1(FH)(u,v)(4.96)

fffhhh的空间卷积的傅里叶变换,是它们的变换的乘积。

空间卷积是空间域滤波的基础,式(4.95)是在空间域和频率域滤波之间建立等价关系的纽带。

# 一维卷积与一维傅里叶变换
f = np.zeros([400])
f[:300] = 3h = np.zeros([f.shape[0]])
h[:200] = 2# 卷积
F_con = np.convolve(f, h)# 傅里叶变换,未填充零的结果
f_fft = np.fft.fft(f)
f_fft = np.fft.fftshift(f_fft)
h_fft = np.fft.fft(h)
h_fft = np.fft.fftshift(h_fft)fh_fft = f_fft * h_fft# 傅里叶反变换
fh_ifft = np.abs(np.fft.ifft(fh_fft))fig = plt.figure(figsize=(12, 6))
plt.subplot(2, 2, 1), plt.plot(f), plt.ylim([0, 5]), plt.xlim([0, 1000]), plt.xticks([0, 200, 400]), plt.title('f')
plt.subplot(2, 2, 2), plt.plot(h), plt.ylim([0, 5]), plt.xlim([0, 1000]), plt.xticks([0, 200, 400]), plt.title('h')
plt.subplot(2, 2, 3), plt.plot(F_con), plt.ylim([0, 2000]), plt.xlim([0, 1000]), plt.xticks([0, 200, 400, 600, 800]), 
plt.title('Convolution')
plt.subplot(2, 2, 4), plt.plot(fh_ifft), plt.ylim([0, 2000]), plt.xlim([0, 1000]), plt.xticks([0, 200, 400, 600, 800]), 
plt.title('IFFT')
plt.tight_layout()
plt.show()

在这里插入图片描述
从上图可以看出,卷积与傅里叶变换的结果不一样,这种错误可以通过对原函数填充零来纠正。要使得它们的长度PPP相同,则有
P≥A+B−1(4.97)P \ge A + B - 1 \tag{4.97}PA+B1(4.97)

从下面的结果可以看出,直接的零填充得到的结果跟卷积是一样的。镜像和复制的填充结果不太一样。

二维填充的公式:
fP(x,y)={f(x,y),0≤x≤A−1和0≤y≤B−10,A≤x≤P或B≤y≤Q(4.98)f_P(x, y) = \begin{cases} f(x, y), & 0 \leq x \leq A -1和 0 \leq y \leq B-1 \\ 0, & A \leq x \leq P 或 B \leq y \leq Q \end{cases} \tag{4.98}fP(x,y)={f(x,y),0,0xA10yB1AxPByQ(4.98)

hP(x,y)={h(x,y),0≤x≤C−1和0≤y≤D−10,C≤x≤P或D≤y≤Q(4.99)h_P(x, y) = \begin{cases} h(x, y), & 0 \leq x \leq C -1和 0 \leq y \leq D-1 \\ 0, & C \leq x \leq P 或 D \leq y \leq Q \end{cases} \tag{4.99}hP(x,y)={h(x,y),0,0xC10yD1CxPDyQ(4.99)

P≥A+C−1(4.100)P \ge A + C - 1 \tag{4.100}PA+C1(4.100)
Q≥B+D−1(4.101)Q \ge B + D - 1 \tag{4.101}QB+D1(4.101)

DFT算法通过偶数大小的阵列时速度通常更快,因此经常选择PPPQQQ的最小偶数整数。

如果两个阵列大小相同,则意味着
P=2M(4.102)P = 2M \tag{4.102}P=2M(4.102)

Q=2N(4.103)Q = 2N \tag{4.103}Q=2N(4.103)

在两个函数中,如果有一个或两个函数的值在取样区间的末尾不是0,那么把0添加到函数中来消除交叠错误时,会导致函数不连续。这类似于用一个盒式函数来乘以一下函数,在频率域是这一相乘意味着原变换与一个sinc\text{sinc}sinc函数的卷积,进行导致由sinc\text{sinc}sinc函数的高频分量产生所谓的频率泄露
频率泄露会使得图像块效应。

开窗或切趾法

  • 降低工频率泄漏的方法,就是让取样后的函数乘以另一个两端平滑地过渡到0的函数(窗函数)
# 傅里叶变换,填充堆的结果
f_pad = np.zeros([800])
f_pad[:400] = f
h_pad = np.zeros([800])
h_pad[:400] = h
f_fft = np.fft.fft(f_pad)
f_fft = np.fft.fftshift(f_fft)
h_fft = np.fft.fft(h_pad)
h_fft = np.fft.fftshift(h_fft)fh_fft = f_fft * h_fft# 傅里叶反变换
fh_ifft = np.abs(np.fft.ifft(fh_fft))fig = plt.figure(figsize=(12, 6))
plt.subplot(2, 2, 1), plt.plot(f_pad), plt.ylim([0, 5]), plt.xlim([0, 1000]), plt.xticks([0, 200, 400]), plt.title('f pad 0')
plt.subplot(2, 2, 2), plt.plot(h_pad), plt.ylim([0, 5]), plt.xlim([0, 1000]), plt.xticks([0, 200, 400]), plt.title('h pad 0')
plt.subplot(2, 2, 3), plt.plot(F_con), plt.ylim([0, 2000]), plt.xlim([0, 1000]), plt.xticks([0, 200, 400, 600, 800]), 
plt.title('Convolution')
plt.subplot(2, 2, 4), plt.plot(fh_ifft), plt.ylim([0, 2000]), plt.xlim([0, 1000]), plt.xticks([0, 200, 400, 600, 800]), 
plt.title('IFFT')
plt.tight_layout()
plt.show()

在这里插入图片描述

# 傅里叶变换,镜像
f_pad = np.zeros([800])
f_pad = np.pad(f, (400, 0), mode='reflect')
# f_pad = np.
h_pad = np.zeros([800])
h_pad = np.pad(h, (400, 0), mode='reflect')f_fft = np.fft.fft(f_pad)
f_fft = np.fft.fftshift(f_fft)
h_fft = np.fft.fft(h_pad)
h_fft = np.fft.fftshift(h_fft)fh_fft = f_fft * h_fft# 傅里叶反变换
fh_ifft = np.abs(np.fft.ifft(fh_fft))
fh_ifft = 2394 - fh_ifft
fig = plt.figure(figsize=(12, 6))
plt.subplot(2, 2, 1), plt.plot(f_pad), plt.ylim([0, 5]), plt.xlim([0, 1000]), plt.xticks([0, 200, 400]), plt.title('f pad 0')
plt.subplot(2, 2, 2), plt.plot(h_pad), plt.ylim([0, 5]), plt.xlim([0, 1000]), plt.xticks([0, 200, 400]), plt.title('h pad 0')
plt.subplot(2, 2, 3), plt.plot(F_con), plt.ylim([0, 2000]), plt.xlim([0, 1000]), plt.xticks([0, 200, 400, 600, 800]), 
plt.title('Convolution')
plt.subplot(2, 2, 4), plt.plot(fh_ifft), plt.ylim([0, 2000]), plt.xlim([0, 1000]), plt.xticks([0, 200, 400, 600, 800]), 
plt.title('IFFT')
plt.tight_layout()
plt.show()

在这里插入图片描述

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

名称 表达式
f(x,y)f(x, y)f(x,y)的DFTF(u,v)=∑x=0M−1∑y=0N−1f(x,y)e−j2π(ux/M+vy/N)F(u, v) = \sum_{x = 0}^{M - 1} \sum_{y = 0}^{N - 1} f(x, y) e^{-j2\pi(u x/M + v y /N)}F(u,v)=x=0M1y=0N1f(x,y)ej2π(ux/M+vy/N)
F(u,v)F(u, v)F(u,v)的IDFTf(x,y)=1MN∑u=0M−1∑v=0N−1F(u,v)ej2π(ux/M+vy/N)f(x, y) = \frac{1}{MN}\sum_{u = 0}^{M - 1} \sum_{v = 0}^{N - 1} F(u, v) e^{j2\pi(u x /M + vy /N)}f(x,y)=MN1u=0M1v=0N1F(u,v)ej2π(ux/M+vy/N)

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

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

相关文章

jmeter中重定向多个正则表达式_2020年jmeter技术实战续集,最新技术全栈,值得收藏

在上一篇:主要介绍线程组、HTTP请求默认值、用户定义的变量、固定定时器的应用场景及实战。以下主要介绍正则表达式提取器、调式取样器(Debug Sampler)、响应断言、HTTP信息头管理器的应用场景及实战。一、正则表达式提取器1、使用场景从请求的响应结果中取到需要的…

[置顶] 均衡音效

[置顶] 均衡音效 1均衡的作用 均衡器是一种可以分别调节各种频率成分电信号放大量的电子设备,通过对各种不同频率的电信号的调节来补偿扬声器和声场的缺陷,补偿和修饰各种声源及其它特殊作用。具体来说,它的作用如下: &#xff08…

第4章 Python 数字图像处理(DIP) - 频率域滤波9 - 频率域滤波基础、频率域的滤波过程、低通、高通

目录频率域滤波基础频率域的其他特性频率域滤波基础知识频率域滤波步骤小结空间域和频率域滤波之间的对应关系频率域滤波基础 频率域的其他特性 频率域中的滤波过程如下: 首先修改傅里叶变换以在到特定目的然后计算IDFT,返回到空间域 # 频率域中的其…

C# :试玩EventLog

1. 专门创建Source的Log   创建了Source,log显示在 Event viewer/Applications and Services logs/ 自定义Source 中,待遇比较高,专门显示的。 创建Source需要管理员身份,否则Crash。 如果已经打开了 Computer Management,请关闭…

css 宋体_Java前端基础(一)之html/css

1.1 htmlHTML:超文本标记语言(Hyper Text Markup Language),标准通用标记语言下的一个应用。HTML 不是一种编程语言,而是一种标记语言 (markup language),是网页制作所必备的WEB开发工具:hbuilder/webstorm/vs code/eclpise最简单…

gpio的8种工作模式_Stm32之GPIO工作模式简介

GPIO的8种工作模式GPIO初始化结构体的时候,必须要配置合适的工作模式,这样才能使得IO口发挥应有的作用。工作模式大体上共分为输入输出两类,共8种,下面将介绍这8种工作模式。GPIO工作模式输入模式GPIO_Mode_AIN 模拟输入 GPIO_Mod…

vagrant,流浪汉,我又来啦。

最近学个DEVOPS2.0,讲微服务,容器华,持续部署,很到位,就一个一个工具撸一撸。。。 vagrant,以前接触过,所以上手快,,哈哈,,用时再具体配置。 virt…

dedecms最新版本修改任意管理员漏洞

此漏洞无视gpc转义,过80sec注入防御。 补充下,不用担心后台找不到。这只是一个demo,都能修改任意数据库了,还怕拿不到SHELL? 起因是全局变量$GLOBALS可以被任意修改,随便看了下,漏洞一堆&#x…

第4章 Python 数字图像处理(DIP) - 频率域滤波10 - 使用低通频率域滤波器平滑图像 - 理想、高斯、巴特沃斯低通滤波器

目录使用低通频率域滤波器平滑图像理想低通滤波器(ILPF)高斯低通滤波器(GLPF)巴特沃斯低通滤波器低通滤波的例子使用低通频率域滤波器平滑图像 理想低通滤波器(ILPF) 在以原点为中心的一个圆内无衰减地通过所有频率,而在这个圆外“截止”所有的频率的二维低通滤波…

bluecam连接步骤说明_厂家详解旋片式真空泵使用说明

旋片式真空泵是有区分单双极高速直联结构的真空泵,是用来对密封容器抽除气体的基本设备之一。旋片式真空泵的泵与电机连轴,有着高转速、外型小、结构紧凑、流动性工作方便的优点。本文所使用旋片式真空泵使用说明资料,是台冠真空泵技术团队工…

第4章 Python 数字图像处理(DIP) - 频率域滤波11 - 使用高通滤波器锐化图像

目录使用高通滤波器锐化图像由低通滤波器得到理想、高斯和巴特沃斯高通滤波器指纹增强频域中的拉普拉斯钝化掩蔽、高提升滤波和高频强调滤波同态滤波使用高通滤波器锐化图像 由低通滤波器得到理想、高斯和巴特沃斯高通滤波器 HHP(u,v)1−HLP(u,v)(4.118)H_{HP}(u, v) 1 - H_{…

漫步者lollipods如何调节音量_漫步者MF5扩音器体验:老师值得入手

对于教师职业来说,保护好嗓子是很重要的。每天为学生操劳,频繁的讲课,很多老师都遇上了喉咙沙哑的问题。怎么样才能保护好老师的嗓子呢?“小蜜蜂”是很多老师们的选择,这种扩音器可以挂在腰间,通过麦克风&a…

pandas删除某列有空值的行_Python-零基础学习Pandas知识点整理(2)

DataFrame数据的清洗--预处理操作import pandas as pdimport numpy as np#DataFrame数据框行或列的删除#df.drop(labelsNone,axis0,indexNone,columnsNone,levelNone,inplaceFalse,error"raise")#labels 表示需要删除的行或列的标签,多行或多列用列表传入…

第4章 Python 数字图像处理(DIP) - 频率域滤波12 - 选择性滤波 - 带阻

目录选择性滤波带阻滤波器和带通滤波器陷波滤波器选择性滤波 处理特定的频带的滤波器称为频带滤波器 带阻滤波器: 若某个频带中的频率被滤除 带通滤波器: 若某个频带中的频率被通过 处理小频率矩形区域的滤波器称为陷波滤波器 陷波带阻滤波器&#x…

python打包工具报错_python打包生成exe报错

如图所示 如果出现的是这个问题可以可以考虑以下方法 首先卸载原先下载的 Pyinstaller pip uninstall pyinstaller 再执行以下代码,去github上下载 pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip 注释:再次打包&#xff…

去除lcd图片的摩尔纹_宝妈时尚产后有妊娠纹怎么办?教你这三招,轻松修复肚皮!...

产后肚子上长妊娠纹,相信是很多妈妈的痛点。首先我们来介绍一下什么是妊娠纹。由于妊娠期荷尔蒙的影响,加之腹部膨隆使皮肤的弹力纤维与胶原纤维损伤或断裂,腹部皮肤变薄变细,出现一些宽窄不同、长短不一的粉红色或紫红色的波浪状…

anaconda 换清华镜像源 windows

方法1 Windows 下安装好Anaconda 应该会有如下这些应用,我们打开如下图anaconda Prompt(下面简称prompt),(当然CMD也可以,只是我比较喜欢用prompt) 打开如下图 使用下面命令,即可以添加清华镜像 conda config --add channels …

提高表格可读性的一些技巧

表格的应用由于工作原因,经常接触到表格。我们发现,表格不但广泛的运用在各类数据收集和分析,同时通过表格这样一种二维矩阵来整理和陈列信息时(即便最后的展示方式并非一个典型的表格样式),能够很好的表达…

分页第一页用0还是1_如何设计api分页

常规的分页方式API处理分页看似简单,实际上暗藏危机。最常见的分页方式,大概是下面这样的/users/?page1&limit5//服务端返回最理想的情况下,客户端请求第一页的5条数据,服务端如常返回,比如下图:拿Twitter的图用一…

数据挖掘肿瘤预测_科研套路不嫌多,数据挖掘发3分

解螺旋公众号陪伴你科研的第2003天如何复现一篇3分生信研究做科研需要先学习套路,才能超越套路。今天给大家介绍的套路文献是今年发表在《Oncology reports》(IF 3.041)上的一篇文章。文章的标题虽然看上去比较泛,但也让读者一眼就能知道主题了&#xff…