频域滤波—离散余弦变换

简介: 频域滤波—离散余弦变换

正文


离散余弦变换DCT


傅里叶变换的参数是复数,在数据的描述上相当于实数的两倍,若仅用实函数对称延拓成一个实偶函数,则其傅里叶变换也为实偶函数且仅包含余弦项,连续函数和离散函数的余弦变换都是基于这个原理。离散余弦变换是傅里叶变换的一个简化,本质上仍然是傅里叶变换,常常用在数据压缩中。


一维离散余弦变换

给定实信号序列{ f ( x ) ∣ x = 0 , 1 , . . . , N − 1 } ,可以按下列式将其延拓为偶对称序列


000000000.png

实函数延拓举例:

0000000.png

一维离散余弦变换定义为

00000.png


其中,x = 0 , 1 , . . . , N − 1;变换核C 0000.png

归一化参数000.png

表达为矩阵形式:

00.png

离散余弦变换的推导:


对实偶函数g ( x )x)求2 N点的一维傅里叶变换得:


0.png

二维离散余弦变换


实函数先做水平镜像再做垂直镜像,形成二维实偶函数:


1.png

二维离散余弦变换的定义:

2.png

其中,

3.png

变换核C 也称为离散余弦变换的基函数或者基图像,对于一幅8*8的图像,有64个基图像的线性组合表示


表达为矩阵形式为:

4.png


离散余弦变换的性质


1、可分离性


二维离散余弦变换的正反变换核是相同的,且可分离


8.png

2、离散余弦变换为实正交变换

9.png


3、存在快速变换算法

4、能集中高度相关的数据信息


7.png


二维离散余弦变换的频谱分布特点


二维离散余弦变换相当于对带有中心偏移的偶函数进行二维傅里叶变换,因此其谱域与傅里叶变换相比差一倍


6.png


离散余弦变换的应用


离散余弦变换主要应用于图像压缩,例如国际压缩标准JPEG格式中就用到了DCT变换,于DFT变换相似,DCT变换会将高频成分压缩多一点,低频成分压缩少一点,由于高频成分反应细节,因此虽然压缩后的图像质量下降了,但是对于人眼的感觉来说区别不大,充分利用了人眼分辨的局限性。


实例:

5.png

相关文章
|
11月前
|
前端开发 程序员
墨刀原型图的原理、与UI设计图的区别及转换方法详解-卓伊凡|贝贝
墨刀原型图的原理、与UI设计图的区别及转换方法详解-卓伊凡|贝贝
1173 24
墨刀原型图的原理、与UI设计图的区别及转换方法详解-卓伊凡|贝贝
|
5月前
|
人工智能 运维 监控
智能体来了,智创未来 ——从系统架构视角看 AI 智能体的工程化演进
随着大模型发展,单一模型难以应对复杂工程任务。智能体通过“感知-规划-执行-反馈”闭环,实现目标驱动的自主决策与工具调用,具备持续运行与自我调整能力。它融合大模型的认知力与系统执行力,推动软件从人工驱动走向策略驱动,成为“智创未来”的核心工程形态。
394 0
|
机器学习/深度学习 传感器 算法
行人闯红灯检测:基于计算机视觉与深度学习的智能交通解决方案
随着智能交通系统的发展,传统的人工交通违法判断已难以满足需求。本文介绍了一种基于计算机视觉与深度学习的行人闯红灯自动检测系统,涵盖信号灯状态检测、行人检测与跟踪、行为分析及违规判定与报警四大模块,旨在提升交通管理效率与安全性。
|
并行计算 算法 物联网
LLM 大模型学习必知必会系列(七):掌握分布式训练与LoRA/LISA微调:打造高性能大模型的秘诀进阶实战指南
LLM 大模型学习必知必会系列(七):掌握分布式训练与LoRA/LISA微调:打造高性能大模型的秘诀进阶实战指南
LLM 大模型学习必知必会系列(七):掌握分布式训练与LoRA/LISA微调:打造高性能大模型的秘诀进阶实战指南
|
JSON 前端开发 JavaScript
【amis低代码前端框架】vue2集成百度低代码前端框架amis
【amis低代码前端框架】vue2集成百度低代码前端框架amis
1593 0
|
算法 编译器 C语言
if else 和 switch的效率
switch在判断分支时,没有判断所有的可能性,而是用一个静态表来解决这个问题,所以速度要比if-else快。 但是,switch对较复杂的表达式进行判断,所以当我们需要判断一些简单数值时,用switch较好。
3973 0
|
机器学习/深度学习 数据可视化 PyTorch
利用PyTorch实现基于MNIST数据集的手写数字识别
利用PyTorch实现基于MNIST数据集的手写数字识别
591 2
|
数据可视化 Python
时间序列分析是一种统计方法,用于分析随时间变化的数据序列。在金融、经济学、气象学等领域,时间序列分析被广泛用于预测未来趋势、检测异常值、理解周期性模式等。在Python中,`statsmodels`模块是一个强大的工具,用于执行各种时间序列分析任务。
时间序列分析是一种统计方法,用于分析随时间变化的数据序列。在金融、经济学、气象学等领域,时间序列分析被广泛用于预测未来趋势、检测异常值、理解周期性模式等。在Python中,`statsmodels`模块是一个强大的工具,用于执行各种时间序列分析任务。
|
缓存 资源调度 JavaScript
秒懂Yarn:从安装到配置的全流程详解
**Yarn**是Facebook推出的JavaScript包管理器,旨在提供更快、更安全的依赖管理。它通过并行安装、离线模式、版本锁定和友好的命令行界面提升效率。要安装Yarn,可以使用npm、Homebrew或Chocolatey。基本命令包括初始化项目(`yarn init`)、安装/移除/升级依赖(`yarn add/remove/upgrade`)。配置Yarn涉及设置`.yarnrc`文件,如更改registry。通过`yarn.lock`文件保证依赖一致性。文章还提供了使用Yarn进行API测试和项目管理的实战案例。
861 0

热门文章

最新文章