image.merge图像有什么变化_OpenCV图像处理之傅里叶变换(1)

7105fc60fd1f8e63d3d763a3108abaff.png

前言::

图像处理在人工智能领域是一个非常广泛而且有前景的方向,在使用OpenCV的过程中,我们知道图像的数字化是对它进行处理的一个很重要的部分,对于科学而言,更是靠着数据说话,在之前的文章中讲过,用多维数组进行图象数字化处理,这一次我们要讲一个关于图像信号转换的一个伟大发明-傅里叶变换


视觉/nlp/等各方向计算机科学交流群:499027005

b010878230e882054ee47ab00fa6b3bc.png

在opencv中,对图像乃至视频的处理,或多或少会涉及傅里叶变换,这个变换的核心观点就是所有的波形,都可以由一系列的简单但是频率不同的正弦曲线叠加得到,有一个经典的图片可以很好的解释这个内容

应知友建议:特地查了一下图片来源 @Heinrich

(侵删)

c70ce3dc0409a92dce153cd85ecc0f27.png

忽略其余的数据,请看中间部分的曲线合成,傅里叶变换的根据亦是如此,将一个复杂的曲线通过抽离和变换,可以拿到自己想要的数据进行分析


对于傅里叶变换有一个基本的了解之后,我们直接涉及到的就是关于图像的信号处理,话不读说,通过一个例子,直接解读代码:

import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('123.png',0)
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
s1 = np.log(np.abs(fshift))
# print(f)
# fimg = np.log(np.abs(f))
fimg = np.abs(s1)
print(fimg)
plt.imshow(fimg, 'gray')
plt.show()

以上代码,忽略掉注释的代码,在模块numpy中fft2()就是傅里叶变换的简单函数,首先我们以灰度模式读入图像,在imread()函数中参数中,0代表灰度模式,读入以后用fft2函数,将读入的数据进行傅里叶变换,根据以下规律:

傅里叶变换后的白色部分(即幅度较大的低频部分),表示的是图像中慢变化的特性,或者说是灰度变化缓慢的特性(低频部分)。
傅里叶变换后的黑色部分(即幅度低的高频部分),表示图像中快变化的特性,或者说是灰度变化快的特性(高频部分)。

傅里叶函数变换以后的图像数据会变成复数形式如下图:

ee9e98f0b31e1d18b3dbb7c4e04edf20.png
输出部分就是fft2()函数的返回值

这里就必须提到大家可能没有接触过的一种三角函数表达方式:

1254c4e4b82559994586f3c01ebfaa0b.png
cos(x)+isin(x)⇔a+ib

一个三角函数的表示:

cos(x)+isin(x)⇔a+ib

是不是很熟悉,没错,就是复数形式表示那么以上例子中:

8aba8cb226e6b189bc6ac0e49df40bfc.png

fft2的复数结果保留了正弦波成分的所有信息,但频谱图只展现了频率和振幅的分布。因此可以根据fft的结果还原原始图像,但是我们做傅里叶变换的目的并不是为了观察图像的频率分布(至少不是最终目的),更多情况下是为了对频率进行过滤.

那么我们得到的频谱图就是这样的:

80e416218ff5e1786801b489ed6d57ac.png

此图像经过了中心化处理,即把低频白色部分往中间移动,在上例子中使用的是fftshift()函数,为什么这么做,这里不过赘述,之后会详细让大家理解,那么得到频谱图,通过去中心化可以得到原来读取之后的图像,也就是用ifftshift()函数,结果如下:

a458b8adbbb76db55e75795f9bfc395a.png

这几次的文章会慢慢深入的讲解傅里叶变换的应用,欢迎关注

个人QQ:2533524298


参考资料:

Image Transforms - Fourier Transform

numpy.fft.fftshift - NumPy v1.14 Manual

Fourier Transform​homepages.inf.ed.ac.uk
8c513768e875cb5f9e3f0db386e8524b.png

numpy.fft.fftshift - NumPy v1.14 Manual

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值