最近做创新杯,为了达到对声音的频率进行实时捕获的要求,找了许多算法,最后使用快速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变换相关推荐

  1. FS、DFS、FT、DTFT、DFT、FFT、DCT变换的联系与区别

    目录 前言 FS( 连续时间周期信号的傅里叶级数) DFS(离散傅里叶级数) FT(连续时间非周期信号的傅里叶变换) DTFT(离散时间傅里叶变换) DFT(离散傅里叶变换) FFT(快速傅里叶变换) ...

  2. 【学习笔记】超简单的快速数论变换(NTT)(FFT的优化)(含全套证明)

    整理的算法模板合集: ACM模板 目录 一.前置知识 二.快速数论变换(NTT) 三.NTT证明(和FFT的关系) 四.NTT模板 数组形式的实现 vector形式的实现 点我看多项式全家桶(●^◡_ ...

  3. SSE图像算法优化系列二十一:基于DCT变换图像去噪算法的进一步优化(100W像素30ms)。...

    在优化IPOL网站中基于DCT(离散余弦变换)的图像去噪算法(附源代码) 一文中,我们曾经优化过基于DCT变换的图像去噪算法,在那文所提供的Demo中,处理一副1000*1000左右的灰度噪音图像耗时 ...

  4. 基于DCT变换的JPEG图像压缩原理

    1.为什么要进行图像压缩 众所周知,当今人类社会具有三大支柱,即物质.能量.信息.当下已由物质过渡到信息,从农业现代化到工业现代化,再到当今的信息化时代.信息具有通用性.抽象性.无限性.其通用性表现在 ...

  5. fdct算法 java_ImageSharp源码详解之JPEG压缩原理(3)DCT变换

    DCT变换可谓是JPEG编码原理里面数学难度最高的一环,我也是因为DCT变换的算法才对JPEG编码感兴趣(真是不自量力).这一章我就把我对DCT的研究心得体会分享出来,希望各位大神也不吝赐教. 1.离 ...

  6. MATLAB中 DCT变换、DCT反变换、分块DCT变换

    DCT变换.DCT反变换.分块DCT变换 欢迎转载,但请注明出处!转:http://www.tuicool.com/articles/nUfmAf2 一.引言 DCT变换的全称是离散余弦变换(Disc ...

  7. 数字图像处理报告:实验3 同态滤波、频域滤波、傅里叶变换性质、DCT变换性质

    实验3 同态滤波.频域滤波.傅里叶变换性质.DCT变换性质 一.实验主题: 学习同态滤波.频域滤波.傅里叶变换性质.DCT变换性质,掌握其原理,并学会编程,实现这些方法与性质. 二.实验目的: 1.掌 ...

  8. dct变换可以用什么方法代替_「dct变换」DCT变换自学笔记 - seo实验室

    dct变换 一.DCT简介 此处,DCT指Discrete Cosine Transform,意思是离散余弦变换(下文均用DCT表示),其常见用途是对音视频进行数据压缩.维基百科上的解释:DCT以不同 ...

  9. 基于DCT变换图像去噪算法的进一步优化(100W像素30ms)

    本篇博文来自博主Imageshop,打赏或想要查阅更多内容可以移步至Imageshop. 转载自:https://www.cnblogs.com/Imageshop/p/9584024.html    ...

最新文章

  1. Selenium之运行效果展示
  2. golang 传值 传引用 简介
  3. Mysql索引,用户及授权(root密码恢复)
  4. 一篇讲清:如何构建可重复,可扩展且盈利的“魔力”转化流程?
  5. 天涯明民显示连接不上服务器,关于无法正常登录天涯的N种解决办法
  6. 2012自学CCNP路由与交换之四交换机初始化
  7. 图论--LCA--在线RMQ ST
  8. 猜数字游戏python程序_python经典小程序:猜数字游戏
  9. 云原生应用Go语言:你还在考虑的时候,别人已经应用实践
  10. 华为p20Android怎么解开,华为P20如何获得root权限来解决自启动手机应用程序的问题...
  11. 大一大学计算机课后答案,南昌大学计算机作业答案(大一)
  12. express+mysqle
  13. 游戏开发之C++类和对象相关概念实例(C++)
  14. C盘清理最全攻略,用这几招轻松解决,不存在C盘爆红
  15. Linux各个版本资源下载
  16. 腾讯手机管家(pc版) for android,腾讯手机管家PC版for Android小技巧分享
  17. java protected 构造方法_Java中protected语义解释
  18. HTML点击图片播放音乐
  19. 尝试做自己不喜欢的事,并努力将其做好
  20. 教你用Python向MySQL中插入一百万条测试数据

热门文章

  1. 大计基编程题(第十一周)
  2. ⑰霍兰德EI*如何选选专业?高考志愿填报选专业
  3. Java TCP发送与接收
  4. 微信小程序开发之——个人中心-收货地址(9)
  5. 空气源热泵控制系统解决方案
  6. ffmpeg framework
  7. OCR文本识别网络SAR的学习
  8. 蓝桥杯——java(b组)省赛
  9. IDEA下载GIT分支代码
  10. Android GNSS 模块分析(四)HAL 层