基于python语言:Opencv3实例学习笔记1

本文介绍了如何使用Python和OpenCV实现图像的傅里叶变换,通过实例展示了图像频率及幅度谱的概念,并解释了其在图像处理中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像中的傅里叶变换的实现

在Opencv中对图片的处理一般都会应用到傅里叶变换的概念,其实以前在学习信号处理时应用到这个概念.一般而言,傅里叶变换的实质是指观察得到所有的波形都可以由一系列简单且不同频率的正弦波叠加而来.但是这个概念应用在图像处理上有什么用呢?其实图像也是信号的一种表达形式,我们常见的图像其实就是二维的离散信号,可以将图像理解为二维矩阵,里面的元素就是像素值.,一张原始图片往往由许多频率组成,比如说在目标边缘处像素值的变换一般比较强,即某一个像素点与邻处像素点的像素值差异比较大;或者也有差异小的点.这样,我们先来理解两个概念:

  • 图像的频率:用于表征图像中灰度变化剧烈程度的指标.图像中高低频部分是指与邻域点像素差异的强弱(梯度的大小),一般梯度越大,在频谱中亮度就越强.如果一张图片中低频部分越多,图像相对来说就比较柔和.
  • 幅度谱:图像经过傅里叶变换后,会得到幅度谱,幅度谱其实是另外一种图像,是原始图像在变化方面的一种表征.一般是把一张图像中最亮的像素放在幅度谱正中央,然后逐渐变暗.从而可以较为直观的显示原始图像中亮暗像素所占的比例.

基于python语言实现

这里我选用了一张测试图片,直观的展示一下实验结果:
——————-这里写图片描述

import cv2
import numpy as np
from matplotlib import pyplot as plot##安装方式:pip install matplotlib或者conda install matplotlib(anaconda安装方式)

img = cv2.imread('/home/pandamax/techfort-pycv/chapter3/test.jpg', 0)##读入图像的路径
f = np.fft.fft2(img)#二维傅里叶变换
#fshift = f
fshift = np.fft.fftshift(f)
magnitude_spectrum = 20 * np.log(np.abs(fshift))##幅度谱

#置中
row, cols = img.shape
print(row,cols)
crow, ccol = row / 2, cols / 2
fshift[crow - 30: crow+30, ccol - 30: ccol + 30] = 0

f_ishift = np.fft.ifftshift(fshift)#逆变换
img_back = np.fft.ifft2(f_ishift)
img_back = np.abs(img_back)#取模

##绘图
plot.subplot(221), plot.imshow(img, cmap = "gray")
plot.title("Input"), plot.xticks([]), plot.yticks([])

plot.subplot(222), plot.imshow(magnitude_spectrum, cmap = "gray")
plot.title('magnitude_spectrum'), plot.xticks([]), plot.yticks([])

plot.subplot(223), plot.imshow(img_back, cmap = "gray")
plot.title("Input in JET"), plot.xticks([]), plot.yticks([])
plot.show()

以下是实验结果:
这里写图片描述

其实,总的来说,对图像的傅里叶变换处理是我们理解图像所包含的意义的一种方式,从数学角度来直观理解各个像素与像素之间的关系.从而经过分析,我们可以实现其他的图像操作.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值