(整理)快速DCT变换
最近做创新杯,为了达到对声音的频率进行实时捕获的要求,找了许多算法,最后使用快速DCT算法成功的实现了功能。
下面将之前查的一些资料整理总结在下面:
首先有篇论文(《基于WAV文件的独奏乐曲信号中的乐谱识别》)里面描述了DCT算法提取WAV文件里面音乐的频率是可行的。
然后为了满足实时性的要求,我们需要将普通的DCT算法加速。这里有一篇文章(http://www.vckbase.com/index.php/wv/1229)是讲的如何用两种方法将DCT算法加速成为fastDCT算法,这里把我有用到了的那部分摘抄过来。
一、引言
DCT变换是数字图像处理中重要的变换,很多重要的图像算法、图像应用都是基于DCT变换的,如JPEG图像编码方式。对于大尺寸的二维数值矩阵,倘若采用普通的DCT变换来进行,其所花费的时间将是让人难以忍受甚至无法达到实用。而要克服这一难点,DCT变换的快速算法无非是非常吸引人的。
就目前而言,DCT变换的快速算法无非有以下两种方式:
1.由于FFT算法的普便采用,直接利用FFT来实现DCT变换的快速算法相比来说就相对容易。但是此种方法也有不足:计算过程会涉及到复数的运算。由于DCT变换前后的数据都是实数,计算过程中引入复数,而一对复数的加法相当于两对实数的加法,一对复数的乘法相当于四对实数的乘法和两对实数的加法,显然是增加了运算量,也给硬件存储提出了更高的要求。
2.直接在实数域进行DCT快速变换。显然,这种方法相比于前一种而言,计算量和硬件要求都要优于前者。
鉴于此,本文采用第二种方法来实现DCT变换的快速算法。
二、理论推导
限于篇幅,在此不能罗列,具体推导过程可参见《DCT快速新算法及滤波器结构研究与子波变换域图像降噪研究》华南理工大学博士论文。
三、程序实现
DCT快速变换
考虑到DCT变换中的系数要重复计算,可使用查找表来提高运行的效率,只要开始DCT变换之前计算一次,DCT变换中就可以只查找而无需计算系数。
然后具体的代码实现可以到这里下载:http://www.pudn.com/downloads566/sourcecode/windows/bitmap/detail2329870.html
需要提醒一下的是,链接里面的文章有贴出部分代码,但是贴的并不全,建议将源代码下载下来,看懂了以后再用。
以上就是关于快速DCT算法的整理了。
转载于:https://www.cnblogs.com/cquljw/p/3666763.html
(整理)快速DCT变换相关推荐
- FS、DFS、FT、DTFT、DFT、FFT、DCT变换的联系与区别
目录 前言 FS( 连续时间周期信号的傅里叶级数) DFS(离散傅里叶级数) FT(连续时间非周期信号的傅里叶变换) DTFT(离散时间傅里叶变换) DFT(离散傅里叶变换) FFT(快速傅里叶变换) ...
- 【学习笔记】超简单的快速数论变换(NTT)(FFT的优化)(含全套证明)
整理的算法模板合集: ACM模板 目录 一.前置知识 二.快速数论变换(NTT) 三.NTT证明(和FFT的关系) 四.NTT模板 数组形式的实现 vector形式的实现 点我看多项式全家桶(●^◡_ ...
- SSE图像算法优化系列二十一:基于DCT变换图像去噪算法的进一步优化(100W像素30ms)。...
在优化IPOL网站中基于DCT(离散余弦变换)的图像去噪算法(附源代码) 一文中,我们曾经优化过基于DCT变换的图像去噪算法,在那文所提供的Demo中,处理一副1000*1000左右的灰度噪音图像耗时 ...
- 基于DCT变换的JPEG图像压缩原理
1.为什么要进行图像压缩 众所周知,当今人类社会具有三大支柱,即物质.能量.信息.当下已由物质过渡到信息,从农业现代化到工业现代化,再到当今的信息化时代.信息具有通用性.抽象性.无限性.其通用性表现在 ...
- fdct算法 java_ImageSharp源码详解之JPEG压缩原理(3)DCT变换
DCT变换可谓是JPEG编码原理里面数学难度最高的一环,我也是因为DCT变换的算法才对JPEG编码感兴趣(真是不自量力).这一章我就把我对DCT的研究心得体会分享出来,希望各位大神也不吝赐教. 1.离 ...
- MATLAB中 DCT变换、DCT反变换、分块DCT变换
DCT变换.DCT反变换.分块DCT变换 欢迎转载,但请注明出处!转:http://www.tuicool.com/articles/nUfmAf2 一.引言 DCT变换的全称是离散余弦变换(Disc ...
- 数字图像处理报告:实验3 同态滤波、频域滤波、傅里叶变换性质、DCT变换性质
实验3 同态滤波.频域滤波.傅里叶变换性质.DCT变换性质 一.实验主题: 学习同态滤波.频域滤波.傅里叶变换性质.DCT变换性质,掌握其原理,并学会编程,实现这些方法与性质. 二.实验目的: 1.掌 ...
- dct变换可以用什么方法代替_「dct变换」DCT变换自学笔记 - seo实验室
dct变换 一.DCT简介 此处,DCT指Discrete Cosine Transform,意思是离散余弦变换(下文均用DCT表示),其常见用途是对音视频进行数据压缩.维基百科上的解释:DCT以不同 ...
- 基于DCT变换图像去噪算法的进一步优化(100W像素30ms)
本篇博文来自博主Imageshop,打赏或想要查阅更多内容可以移步至Imageshop. 转载自:https://www.cnblogs.com/Imageshop/p/9584024.html ...
最新文章
- Selenium之运行效果展示
- golang 传值 传引用 简介
- Mysql索引,用户及授权(root密码恢复)
- 一篇讲清:如何构建可重复,可扩展且盈利的“魔力”转化流程?
- 天涯明民显示连接不上服务器,关于无法正常登录天涯的N种解决办法
- 2012自学CCNP路由与交换之四交换机初始化
- 图论--LCA--在线RMQ ST
- 猜数字游戏python程序_python经典小程序:猜数字游戏
- 云原生应用Go语言:你还在考虑的时候,别人已经应用实践
- 华为p20Android怎么解开,华为P20如何获得root权限来解决自启动手机应用程序的问题...
- 大一大学计算机课后答案,南昌大学计算机作业答案(大一)
- express+mysqle
- 游戏开发之C++类和对象相关概念实例(C++)
- C盘清理最全攻略,用这几招轻松解决,不存在C盘爆红
- Linux各个版本资源下载
- 腾讯手机管家(pc版) for android,腾讯手机管家PC版for Android小技巧分享
- java protected 构造方法_Java中protected语义解释
- HTML点击图片播放音乐
- 尝试做自己不喜欢的事,并努力将其做好
- 教你用Python向MySQL中插入一百万条测试数据