OpenCV中的DFT和iDFT的详细代码及注释
来源:互联网 发布:淘宝微淘怎么做 编辑:程序博客网 时间:2024/05/19 15:44
这次介绍下OpenCV中DFT的使用,对应的例程是(EXAMPLE) dft。在图像处理领域,通过DFT可以将图像转换到频域,实现高通和低通滤波;还可以利用矩阵的卷积运算等同于其在频域的乘法运算从而优化算法降低运算量, 即先将图像转换到频域,然后做完乘法运算后,再转换到图像域,opencv中的模板匹配就利用了这一特性降低运算量。
下面是dft例程的源码
下图为运行结果,例程只介绍了将图像转换到频域,那如何将其逆变换转换成图像呢?opencv中提供逆变换的函数为idft,下面看下dft,idft这两个函数的原型
从描述可以看出,dft,idft分别用于实现1维,2维的傅立叶变换和傅立叶逆变换。此时你或许可能认为opencv为dft,idft分别写了两个函数实现,但如果查看idft的源码,你会发现idft的实现也是在dft函数中,opencv中代码的重用率还是挺高的。
通过一个flags来控制是进行dft变换还是idft变换,这种用法在opencv中十分的普遍。我们可以在程序中添加一些代码 实现DFT的逆变换
结果如下图所示
可以看出逆变换后的图像内容与原图是一样的,因为我们进行任何处理,但是idf的大小比原图要大一些,且有些黑色边界,这是由于dft需要保证边长长度为2的次方,在这种情况下,计算速度可以加速,因此在之前的处理过程中,将原图的大小调整到2的次方,黑色边界便是copyMakeBoder的0值填充所形成的,这个函数在插值,滤波,掩模操作中十分常用,被用来扩展边界以是图像边界上的像素也能得以处理,只不过在那些操作中,处理完的图片与原图一样大小。
傅立叶变换还有一个特性经常被利用到,就是它的相位,用来确定图像的选择角度,例如tutorial文档中就提到一个应用,用来确定文字的旋转角度,我们可以通过将一张图像旋转一定的角度来做一个实验,下面是结果。
可以看出沿着中心的两个轴随着图像的旋转而旋转,因此通过确定轴的旋转角度,便可以将图像位置调整过来,相应的,处理的如果是文字或者是车牌,也可以通过类似的处理进行对齐和角度调整。
对频域图像阈值处理后,可以看得更加清楚。
阅读全文
0 0
- OpenCV中的DFT和iDFT的详细代码及注释
- Opencv dft & idft
- OpenCV 第六章 DFT IDFT
- DFT IDFT FFT IFFT
- DFT,IDFT,FFT,IFFT算法的C++实现
- OpenCV代码提取:dft函数的实现
- 数字信号处理基础-DFT、IDFT
- Coherence-Enhancing Shock Filters 代码及详细注释【OpenCV】
- 自适应直方图均衡(CLAHE) 代码及详细注释【OpenCV】
- opencv官方代码boost算法的详细注释
- FFT学习笔记(DFT,IDFT)
- 彩色图像直方图均衡化及颜色直方图显示 opencv实现 完整代码及详细注释
- 彩色图像直方图均衡化及颜色直方图显示 opencv实现 完整代码及详细注释
- Ubuntu下Opencv的idft实现Matlab的ifft2
- 泊松分布采样 (Poisson-Disk-Sample)代码及详细注释【OpenCV】
- L0 范数图像平滑(L0 Smooth) 代码及详细注释 【OpenCV】
- 联合双边滤波器(joint bilateral filter) 代码及详细注释【OpenCV】
- openCV实现多人脸检测,多眼部检测,完整代码和详细注释
- Wireless tools for Linux介绍
- 音视频开发:码率、延时、花屏、卡顿
- 欢迎使用CSDN-markdown编辑器
- 文章标题
- 高并发服务器架构笔记(1)——poll 和 epoll
- OpenCV中的DFT和iDFT的详细代码及注释
- Eclipse 搭建Spring boot
- android view的绘制基础总结笔记-canvas
- 出海两个月,人都有点懵
- 欢呼声热烈 谷歌宣布 Kotlin 成 Android 开发一级语言
- mybatis 参数类型--不完整//与特殊符号# | $
- hive配置mysql连接,配置java连接用户名密码,配置自定义类验证用户名密码
- Effective java-并发 笔记
- [易飞]影响成本码含义与运用