18-傅里叶变化

以时间为参照就是时域分析,当然时间是动态变化的
而傅里叶变换是以频域为基准的,不用关心动态变化,只关心做了多少次而已,次数,频率
傅里叶说过,任何一个周期函数都可以用正弦函数堆叠起来形成。强吧?
傅里叶变换思想

傅里叶变换的作用

高频:变化剧烈的灰度分量,比如边界
低频:变化缓慢的灰度分量,比如一个池塘里面水(非边界)

滤波

低通滤波器:只保留低频(低通:低频通过),会使得图像模糊
高通滤波器:只保留高频(高通:高频通过),会使得图像细节增强

opencv中主要就是cv2.dft()和cv2.idft(),输入图像需要先转换成np.float32格式
得到的结果中频率为0的部分会在左上角,通常要转换到中心位置,可以通过shift变换来实现
cv2.dft()返回的结果是双通道的(实部和虚部),通常还需转换成图像格式才能展示(0,255)

低频滤波效果展示

import cv2
import numpy as np
from matplotlib import pyplot as pltdef show_photo(name,picture):#图像显示函数cv2.imshow(name,picture)cv2.waitKey(0)cv2.destroyAllWindows()img = cv2.imread('E:\Jupyter_workspace\study\data/test1.png',0)img_float32 = np.float32(img)#将图片转换格式,opencv官方要求的dft = cv2.dft(img_float32,flags = cv2.DFT_COMPLEX_OUTPUT)#传入图片,执行傅里叶变换
dft_shift = np.fft.fftshift(dft)#将低频值转换到中间位置显示magnitude_spectrum = 20*np.log(cv2.magnitude(dft_shift[:,:,0],dft_shift[:,:,1]))#由于拿到的是灰度图,这里将灰度图进行转换,得到可以展示的图像结果plt.subplot(121),plt.imshow(img,cmap='gray')
plt.title('Input Image'),plt.xticks([]),plt.yticks([])#原图
plt.subplot(122),plt.imshow(magnitude_spectrum,cmap = 'gray')
plt.title('Magnitude Spectrum'),plt.xticks([]),plt.yticks([])#傅里叶变换后的结果,这里是低频,越靠近中间越是低频,越高频越往两边扩散
plt.show()

左图为原图
右图为低通滤波之后的结果,这里通过shift将最低频移动到中心位置了,越离中心越近越低频,越远离中心越高频

在这里插入图片描述

低通滤波器

高频过滤,低频保留,效果会变模糊

import cv2
import numpy as np
from matplotlib import pyplot as pltdef show_photo(name,picture):#图像显示函数cv2.imshow(name,picture)cv2.waitKey(0)cv2.destroyAllWindows()img = cv2.imread('E:\Jupyter_workspace\study\data/test1.png',0)img_float32 = np.float32(img)dft = cv2.dft(img_float32,flags = cv2.DFT_COMPLEX_OUTPUT)
dft_shift = np.fft.fftshift(dft)rows,cols = img.shape#获取图像的shape值daxiao,[h,w]
crow,ccol = int(rows/2),int(cols/2)#中心位置  强转成int要不然容易报错#获取掩模
mask = np.zeros((rows,cols,2),np.uint8)#低通滤波
mask[crow-30:crow+30,ccol-30:ccol+30] = 1#只有中心位置是1,其他的都是0#DFT是原图变成滤波之后的图像
#IDFT傅里叶逆变换,往原始图像变换
fshift = dft_shift * mask#将掩模和图像进行结合,不在掩模范围内置为0变黑,在掩模范围内保持不变
f_ishift = np.fft.ifftshift(fshift)#将已经转移到中间的区域再还原回去
img_back = cv2.idft(f_ishift)#然后再傅里叶逆变换,还原图像,返回结果是双通道(实部和虚部)
img_back = cv2.magnitude(img_back[:,:,0],img_back[:,:,1])#将实部和虚部进行处理成照片plt.subplot(121),plt.imshow(img,cmap='gray')
plt.title('Input Image'),plt.xticks([]),plt.yticks([])
plt.subplot(122),plt.imshow(img_back,cmap = 'gray')
plt.title('Result'),plt.xticks([]),plt.yticks([])plt.show()

左图为原图
右图为低通滤波之后的图像(图像会相对模糊因为只保留了低频)

在这里插入图片描述

高通滤波器

与低通滤波器类似,把低通滤波后的中间位置去掉,因为中间位置显示的是低频,剩下的就是高频

import cv2
import numpy as np
from matplotlib import pyplot as pltdef show_photo(name,picture):#图像显示函数cv2.imshow(name,picture)cv2.waitKey(0)cv2.destroyAllWindows()img = cv2.imread('E:\Jupyter_workspace\study\data/test1.png',0)img_float32 = np.float32(img)dft = cv2.dft(img_float32,flags = cv2.DFT_COMPLEX_OUTPUT)
dft_shift = np.fft.fftshift(dft)rows,cols = img.shape
crow,ccol = int(rows/2),int(cols/2)mask = np.ones((rows,cols,2),np.uint8)#掩模中是1的全都保留原始数据
mask[crow-30:crow+30,ccol-30:ccol+30] = 0#中间位置置为0,也就是中间位置不要了fshift = dft_shift * mask
f_ishift = np.fft.ifftshift(fshift)
img_back = cv2.idft(f_ishift)
img_back = cv2.magnitude(img_back[:,:,0],img_back[:,:,1])plt.subplot(121),plt.imshow(img,cmap='gray')
plt.title('Input Image'),plt.xticks([]),plt.yticks([])
plt.subplot(122),plt.imshow(img_back,cmap = 'gray')
plt.title('Result'),plt.xticks([]),plt.yticks([])plt.show()

左图为原图
右图为高通滤波后的效果(因为高频保留了,也就是边缘都保留下来了)

在这里插入图片描述

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

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

相关文章

Opencv——DFT变换(实现两个Mat的卷积以及显示Mat的频域图像)

DFT原理:(单变量离散傅里叶变换) 数学基础: 任何一个函数都可以转换成无数个正弦和余弦函数的和的形式。 通常观察傅里叶变换后的频域函数可以获得两个重要的信息:幅频曲线和相频曲线。 在数字图像处理中的作用&#…

基于(Python下的OpenCV)图像处理的喷墨墨滴形状规范检测

通过图像处理,分析数码印花的喷头所喷出来的墨滴形状,与标准墨滴形状对比分析,来判断墨水及其喷头设备的状态,由两部分构成 PS:获取墨滴形状照片和标准墨滴形状照片都是手绘的,将就的看吧,主要…

微机原理——指令系统——传送类指令(MOV、LEA、LDS、LES、LAHF、SAHF、XCHG、XLAT、PUSH、POP、PUSHF、POPF)

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 【没事儿可以到我主页看看】https://blog.csdn.net/qq_42604176 传送类指令1&…

mysql 任务计划 /etc/cron.d_Linux /etc/cron.d增加定时任务

一般情况下我们添加计划任务时,都是直接修改/etc/crontab。但是,不建议这样做,/etc/cron.d目录就是为了分项目设置计划任务而创建的。例如,增加一项定时的备份任务,我们可以这样处理:在/etc/cron.d目录下新…

19-Harris角点检测

角点检测顾名思义,就是对类似顶点的检测,与边缘有所区别 边缘可能在某一方向上变化不是特别明显,但角点在任何方向上变换都很明显 cv2.cornerHarris(img,blockSize,ksize,k) cv2.cornerHarris(gray,2,3,0.04) 参数一:img&#xff…

微机原理——指令系统——算数运算指令(ADD、ADC、SUB、SBB、INC、DEC、NEG、CMP、MUL、IMUL、DIV、IDIV、CBW、CWD、BCD调整)

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 算数运算指令1、加减法指令ADD、ADC 、SUB 、SBB 和增量减量指令INC、DEC、NEGADD…

20-SIFT算法

import cv2 import numpy as np from matplotlib import pyplot as pltdef show_photo(name,picture):#图像显示函数cv2.imshow(name,picture)cv2.waitKey(0)cv2.destroyAllWindows()img cv2.imread(E:\Jupyter_workspace\study\data/cfx.png) gray cv2.cvtColor(img,cv2.COL…

mysql 迁移 nosql_从关系型Mysql到Nosql HBase的迁移实践

2013年11月22-23日,作为国内唯一专注于hadoop技术与应用分享的大规模行业盛会,2013 Hadoop中国技术峰会(China Hadoop Summit 2013)于北京福朋喜来登集团酒店隆重举行。来自国内外各行业领域的近千名CIO、CTO、架构师、IT经理、咨询顾问、工程师、Hadoop…

21-特征匹配方法(Brute-Force蛮力匹配)

Brute-Force蛮力匹配 cv2.BFMatcher(crossCheck True) crossCheck表示两个特征点相互匹配 例如A中的第i个特征点与B中的第j个特征点最近,并且B中的第j个特征点到A中的第i个特征点也是 NORM_L2:归一化数组的(欧几里得距离),如果其他特征计算…

Opencv——几何空间变换(仿射变换和投影变换)

几何空间变换【1】几何变换(空间变换)简述【2】变换矩阵知识简述齐次坐标的概念几何运算矩阵【3】图像的仿射变换1、平移变换2、比例缩放3、旋转4、对称变换(不做展示)1、关于X轴变换2、关于Y轴变换3、关于直线YX变换4、关于直线Y…

probuffer java_Protocol Buffer的使用

Probotbuf简介在网络通信和通用数据交换等应用场景中经常使用的技术是 JSON 或 XML,这两种技术常被用于数据的结构化呈现和序列化。我们可以从两个方面来看JSON 和 XML与protobuf的异同:一个是数据结构化,一个是数据序列化。这里的数据结构化…

22-随机抽样一致算法RANSAC

随机抽样一致算法(Random sample consensus,RANSAC) 看似复杂,其基本思想就是:随机选取俩点,然后连接,给定一个容忍范围,在这个范围内的点越多越好,然后不断的迭代进行找两点之间容忍范围内点最…

23-背景建模

帧差法 由于场景中的目标在运动,目标的影像在不同图像帧中的位置不同。该类算法对时间上连续的两帧图像进行差分运算,不同帧对应的像素点相减,判断灰度差的绝对值,当绝对值超过一定阈值时,即可判断为运动目标&#xf…

DB2 9 运用开辟(733 考试)认证指南,第 3 部门: XML 数据独霸(4)

议决运用顺序存储和检索 XMLXML 编码字符编码在汗青上,术语 字符集、字符编码 和 码页 都有雷同的意义:一个字符集和一个二进制码集,其中每个码示意一个字符。(码页是来自 IBM 的一个术语,示意一个大型主机或 IBM PC 上…

Opencv——霍夫变换以及遇到的一些问题

目录问题1 :颜色空间转换函数参数问题:CV_BGR2GRAY vs CV_GRAY2BGR问题2:cvRound()、cvFloor()、cvCeil()函数用法霍夫变换的含义标准霍夫直线变换霍夫线变换函数参数讲解累计概率霍夫变换霍夫变换圆变换原理和算法步骤:霍夫圆变换…

java ssm如何上传图片_ssm整合-图片上传功能(转)

本文介绍 ssm (SpringSpringMVCMybatis)实现上传功能。以一个添加用户的案例介绍(主要是将上传文件)。一、需求介绍我们要实现添加用户的时候上传图片(其实任何文件都可以)。文件名:以 博客名日期的年月日时分秒毫秒形式命名如 言曌博客2017082516403213.png路径&am…

24-光流估计

光流是空间运动物体在观测成像平面上的像素运动的“瞬间速度”,根据各个像素点的速度矢量特征,可以对图像进行动态分析,例如目标跟踪 亮度恒定:同一点随着时间的变化,其亮度不会发生改变 小运动:随着时间的…

java公平索非公平锁_java中的非公平锁不怕有的线程一直得不到执行吗

首先来看公平锁和非公平锁,我们默认使用的锁是非公平锁,只有当我们显示设置为公平锁的情况下,才会使用公平锁,下面我们简单看一下公平锁的源码,如果等待队列中没有节点在等待,则占有锁,如果已经…

mybatis.net - 5 嵌入资源与引用资源

在SqlMap.config文件中可以有两种方式引入外部的文件。 一种是通过资源的方式&#xff0c;在文件中表现为 resource&#xff0c;就是引用外部的文件&#xff0c;这里需要保证文件的路径正确。 <sqlMaps><sqlMap resource"Maps/ProductMap.xml"/><sqlM…

图解MySQL数据库的陈列和把持-4

泉源&#xff1a;网海拾贝 填入一些测试数据&#xff1a; 封闭“MySQL Query Browser”&#xff0c;再从头翻开它&#xff0c;切换到testtable表&#xff0c;看到了没有&#xff1f;刚刚输出的中文变成了“&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&am…