离散余弦变换

2023-10-30

离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT for Discrete Fourier Transform),但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数),在有些变形里面需要将输入或者输出的位置移动半个单位(DCT有8种标准类型,其中4种是常见的)。

离散傅里叶变换需要进行复数运算,尽管有FFT可以提高运算速度,但在图像编码、特别是在实时处理中非常不便。离散傅里叶变换在实际的图像通信系统中很少使用,但它具有理论的指导意义。根据离散傅里叶变换的性质,实偶函数的傅里叶变换只含实的余弦项,因此构造了一种实数域的变换——离散余弦变换(DCT)。通过研究发现,DCT除了具有一般的正交变换性质外,其变换阵的基向量很近似于Toeplitz矩阵的特征向量,后者体现了人类的语言、图像信号的相关特性。因此,在对语音、图像信号变换的确定的变换矩阵正交变换中,DCT变换被认为是一种准最佳变换。在近年颁布的一系列视频压缩编码的国际标准建议中,都把 DCT 作为其中的一个基本处理模块。
DCT除了上述介绍的几条特点,即:实数变换、确定的变换矩阵、准最佳变换性能外,二维DCT还是一种可分离的变换,可以用两次一维变换得到二维变换结果。
最常用的一种离散余弦变换的类型是下面给出的第二种类型,通常我们所说的离散余弦变换指的就是这种。它的逆,也就是下面给出的第三种类型,通常相应的被称为" 反离散余弦变换"," 逆离散余弦变换"或者" IDCT"。
有两个相关的变换,一个是离散 正弦变换(DST for Discrete Sine Transform),它相当于一个长度大概是它两倍的实 奇函数离散傅里叶变换;另一个是改进的离散余弦变换(MDCT for Modified Discrete Cosine Transform),它相当于对交叠的数据进行离散余弦变换。
主要应用
离散余弦变换,尤其是它的第二种类型,经常被信号处理和 图像处理使用,用于对信号和图像(包括静止图像和运动图像)进行 有损数据压缩。这是由于离散余弦变换具有很强的"能量集中"特性:大多数的自然信号(包括声音和图像)的能量都集中在离散余弦变换后的低频部分,而且当信号具有接近 马尔科夫过程(Markov processes)的统计特性时,离散余弦变换的去相关性接近于K-L变换(Karhunen-Loève 变换--它具有最优的去相关性)的性能。
例如,在静止 图像编码标准JPEG中,在 运动图像编码标准MJPEG和MPEG的各个标准中都使用了离散余弦变换。在这些标准制中都使用了二维的第二种类型离散余弦变换,并将结果进行量化之后进行熵编码。这时对应第二种类型离散余弦变换中的n通常是8,并用该 公式对每个8x8块的每行进行变换,然后每列进行变换。得到的是一个8x8的变换系数 矩阵。其中(0,0)位置的元素就是直流分量,矩阵中的其他元素根据其位置表示不同频率的交流分量。
一个类似的变换, 改进的离散余弦变换被用在高级音频编码(AAC for Advanced Audio Coding),Vorbis 和 MP3 音频压缩当中。
离散余弦变换也经常被用来使用谱方法来解偏微分 方程,这时候离散余弦变换的不同的变量对应着 数组两端不同的奇/偶边界条件。

计算方式

尽管直接使用公式进行变换需要进行O(n2)次操作,但是和 快速傅里叶变换类似,我们有复杂度为O(nlog(n))的快速算法,这就是常常被称做蝶形变换的一种 分解算法。另外一种方法是通过快速傅里叶变换来计算DCT,这时候需要O(n)的预操作和后操作。



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

离散余弦变换 的相关文章

  • 2023华为od机试 Java【矩阵的最大值和最小值】

    题目 现在给你一个N M矩阵 M表示有M个矩阵 你的目标是找出M个该矩阵中每列元素的最大值 然后输出这M个值中的最小值 示例1 输入 1 2 3 4 输出 3 代码 import java util Scanner public class
  • 详解基于罗德里格斯(Rodrigues)公式由旋转向量到旋转矩阵的 Python 实现

    文章目录 旋转向量 rotation vector 旋转矩阵 rotation matrix 罗德里格斯公式 Rodrigues formula 基于 Python 和 NumPy 实现 Rodrigues 公式 旋转向量 rotation
  • CP4.矩阵的LU分解

    LU分解 将矩阵A分解成的形式 称作矩阵LU分解 L代指下三角矩阵 U代指上三角矩阵 首先用到的是前面讲过的消元法 以下为例子 通过消元操作 最后矩阵A变成了一个上三角矩阵U 那么只要上式左乘一个 就可以转化为 这里的就是L矩阵了 所以 也
  • 数据结构学习(1)----数组之螺旋矩阵Ⅱ

    题目 给你一个正整数 n 生成一个包含 1 到 n2 所有元素 且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 思路 模拟过程 设置边界 生成一个 n n 空矩阵 res 二维数组 随后模拟整个向内环绕的填入过程 定义当
  • 数学建模之灰色关联分析(GRA)

    本文参考的是司守奎 孙兆亮主编的数学建模算法与应用 第二版 灰色关联分析不仅能够用做关联分析 也能够用于评价 其具体分析步骤如下 第一步 需要确定评价对象和参考数列 评价对象一般指的就是待分析的各个特征组 例如需要评价一个同学的成绩 那么他
  • 8.3 PowerBI系列之DAX函数专题-矩阵Matrix中高亮显示最大最小值

    需求 用颜色标量年度最大最小值 用颜色标示折线的最大值最小值 实现 在条件格式 规则 基于字段进行计算 度量值 is max min var displayed data calculatetable addcolumns summariz
  • numpy广播机制

    NumPy的广播机制 文章目录 NumPy的广播机制 Broadcast 最简单的广播机制 稍微复杂的广播机制 广播机制到底做了什么 一个典型的错误案例 一个正确的经典示例 一种更便捷的计算方式 Broadcast 广播是numpy对不同形
  • 宋浩线性代数笔记(五)矩阵的对角化

    本章的知识点难度和重要程度都是线代中当之无愧的T0级 对于各种杂碎的知识点 多做题 复盘才能良好的掌握 良好掌握的关键点在于 所谓的性质A与性质B 是谁推导得谁
  • 刚体动力学

    文章目录 刚体状态 将某个物体从局部坐标系变化到全局坐标系 对时间求导 对矩阵求导 惯性 刚体属性 1 质心 计算方法 体素法 直接计算法 四面体体积 四面体的中心 2 惯性张量 世界坐标系中的惯性变量 刚体运动 力矩 刚体的固定属性 当前
  • 短视频矩阵源码

    随着短视频平台的快速发展 越来越多的企业开始关注短视频营销 而矩阵号运营逐渐成为了企业进行短视频营销的常规玩法 那么 矩阵账号如何运作 如何进行短视频矩阵号运营 一 矩阵号怎么搭建 1 选择短视频平台 首先 根据自己企业的特点和目标用户群体
  • Matlab:从文本文件中读取数值数据到矩阵

    Matlab 从文本文件中读取数值数据到矩阵 在Matlab中 我们常常需要将保存在文本文件中的数值数据读取到程序中 以便进行数据处理和分析 本文将介绍如何使用Matlab将文本文件中的数值数据导入到矩阵中 首先 我们需要创建一个文本文件
  • C++数据结构 矩阵的转置、镜像及旋转

    C 数据结构 矩阵的转置 镜像及旋转 矩阵介绍 C 中的矩阵是一种二维数组 用于存储数值数据 矩阵可以用于存储图像数据 以及科学和工程计算中的数据 常用于以下场景 数学运算 矩阵乘法 行列式计算 特征值分解等 图像处理 图像缩放 旋转 颜色
  • 【计算机视觉】直接线性变换(DLT)求解P矩阵(3 加入坐标的归一化)(附MATLAB代码)

    引言 本来上一篇帖子就已经达到了精度要求 不过经过同学提醒才发现老师的作业要求中有要求考虑归一化 emmmmm 坐标归一化 进行归一化的必要性和方法参考 计算机视觉中的多视几何 中的描述 上面的是从 2D到2D的结论 不过与从3D到2D的结
  • R手册(Visualise)--GGally(ggplot2 extensions)

    本站已停止更新 查看最新内容请移至本人博客 Wilen s Blog 文章目录 GGally ggmatrix ggplot2矩阵 ggpairs ggplot2广义配对图 ggscatmat 纯粹定量变量的传统散点图矩阵 返回ggplot
  • matlab:基本操作与矩阵输入

    学习素材 MATLAB教程 台大郭彦甫 14课 原视频补档 MATLAB教程 台大郭彦甫 14课 原视频补档 哔哩哔哩 bilibili 部分素材使用视频截图 目录 一 基本运算 二 关键字 三 format 四 符号 1 2 colon
  • 大数据Mapreduce编程——矩阵乘法

    编程要求 完成矩阵乘法的 Map 函数和 Reduce 函数 1 设计两个矩阵 3050 50100 在每个单元格中填入一个 0 99 的随机数 并写入 两个文件中 作为 Map 函数的输入 2 测试运行矩阵乘法的 MapReduce 框架
  • Herriott池的建模

    摘要 在气体光谱学中 为了获得足够灵敏的吸收测量 通常要求具有较长的光程长度 充气体积包裹在反射镜之间的多通道单元是满足这一要求的一种方式 同时在途中控制光束发散 避免了对超大设备的需求 Herriott单元是这种系统的一个例子 其特点是使
  • 【二分查找】【z型搜索】LeetCode240:搜索二维矩阵

    LeetCoe240搜索矩阵 作者推荐 贪心算法 中位贪心 执行操作使频率分数最大 本文涉及的基础知识点 二分查找算法合集 题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 该矩阵具有以下特性 每
  • 华为OD机试真题-螺旋数字矩阵-2023年OD统一考试(C卷)

    题目描述 疫情期间 小明隔离在家 百无聊赖 在纸上写数字玩 他发明了一种写法 给出数字 个数n 和 行数m 0 lt n 999 0 lt m 999 从左上角的1开始 按照 顺时针螺旋向内写 方式 依次写出2 3 n 最终形成一个 m行矩
  • 矩阵基本操作

    问题描述 已知一个n n的矩阵 方阵n lt 100 把矩阵主副对角线上的元素值加上x 然后输出这个新矩阵 输入格式 一行两个变量 用空格隔开 代表n和x 接下来的n行每行n列 表示矩阵的数值 用空格隔开 输出格式 输出新矩阵 每个数字5个

随机推荐

  • react 加粗_React入门的家庭作业(1-2)

    作业前准备 React在他的官网上挂了一个入门教程 是做一个xxoo棋的小游戏 在教程的最后留下了6个作业题 现在就来完成一下 准备材料 作业是在已完成教程的基础上做的 所以这里预设已经做好了环境部署 写好了游戏代码 如果没有 可以把这个复
  • 深聊性能测试,从入门到放弃之:性能测试技术栈,看完这篇,保证刷新你对性能测试的认知~~

    性能测试技术栈 1 引言 2 性能测试基础 2 1 性能测试理论 2 2 测试开发技能 3 性能监听诊断 3 1 前端监听诊断 3 2 服务器监听诊断 3 2 1 Linux 3 2 2 Windows Server 3 3 中间件监听诊断
  • 实现http到https的重定向

    vim etc httpd conf httpd conf DocumentRoot var www html redirect temp https www a com RewriteEngine on RewriteRule https
  • tensorflow笔记【9】深度学习-几个经典网络的基本结构

    tensorflow笔记 9 深度学习 几个经典网络的基本结构 文章目录 前言 一 卷积神经网络 二 经典网络结构 1 自制CNN 2 LeNet 3 AlexNet 4 VGGNet 5 InceptionNet 6 ResNet 总结
  • Java - Java基础(一)

    一 计算机基础知识 1 计算机简介 第一台通用计算机 ENIAC 2 数据的存储和运算 计算机中对于数据的存储和运算 都是通过二进制数据来完成 3 人机交互方式 图形化界面 DOS命令行 D 切换盘符 dir 查看当前路径下的文件信息 cd
  • Android中的drawable像素密度适配详解

    本文大纲 1 为什么要分drawable xxx目录 2 Bitmap的介绍 3 不同drawable xxx中的图片内存测试 1 为什么要分drawable xxx目录 android项目资源中对于drawable文件夹可以分为以下类型的
  • 【Transformer】10、HRFormer:High-Resolution Transformer for Dense Prediction

    文章目录 一 背景 二 方法 三 效果 论文链接 https arxiv org abs 2110 09408 代码链接 https github com HRNet HRFormer 一 背景 ViT 的提出让人们看到了 Transfor
  • 一文弄懂神经网络中的BP反向传播算法

    注 本文转自 一文弄懂神经网络中的BP反向传播算法 Charlotte77 博客园 安利 Charlotte77 的深度学习系列博客 最近在看深度学习的东西 一开始看的吴恩达的UFLDL教程 英文版 有中文版就直接看了 后来发现有些地方总是
  • 网卡中断优化

    1 中断的配置 root zxinos etc init d irq balancer status Checking for service irqbalance running etc init d irq balancer 是linu
  • 浅谈sleep、wait、yield、join区别

    sleep sleep 方法是属于 Thread 类中的 sleep 过程中线程不会释放锁 只会阻塞线程 让出cpu给其他线程 但是他的监控状态依然保持着 当指定的时间到了又会自动恢复运行状态 可中断 sleep 给其他线程运行机会时不考虑
  • 小甲鱼学python学习笔记

    一 序章 1 python缩进问题 if a 0 else while a 0 2 字符串拼接与控制台输入输出 input 可从控制台读入数据 括号内地字符串为输入时的提示 输入结果可通过变量保存 print 控制台输出 s input p
  • Linux 常用指令大全

    我是目录 1 指令格式 2 Windows 和 Linux 通用内容 3 路径的命令 1 cd 切换到某个目录 相对路径 绝对路径 2 pwd 显示当前路径 3 ls 列出目录下的所有子目录与文件 或 文件的信息 4 目录 文件的指令 1
  • 技术干货:解密最受欢迎的开源 Serverless 框架弹性技术实现

    Knative 是一款基于 Kubernetes 的开源 Serverless 应用编排框架 其目标是制定云原生 跨平台的 Serverless 应用编排标准 Knative 主要功能包括基于请求的自动弹性 缩容到 0 多版本管理 基于流量
  • 前端面试实习生(基础题)

    前言 经过一年的学习 我对vue框架有了清楚的认识 我就想着去找实习工作 这些天我投了100多份简历 接到了两个线上笔试 第一个面试题使用vue完成一个网页的模块 有要有分页与传输数据 这不重要 很容易写出来了 关键是第二个线上笔试题 很基
  • [iOS]深入浅出 iOS 之多线程 NSThread

    线程专题 http www cocoachina com bbs read php tid 43852 OS 支持多个层次的多线程 编程 层次越高的抽象程度越高 使用起来也越方便 也是苹果最推荐使用的方法 下面简要说明这三种不同范式 Thr
  • Netjs框架基础

    一 框架介绍 Nestjs 是以用于构建高可用可伸缩的后端应用框架 并且全面支持 Typescript 在背后 Nestjs 使用了强大的 http 框架 默认是 express 并且可以配置选择其他的 Http 服务框架 二 Contro
  • simswap安装过程中遇到的一些问题

    simswap与deepfacelab很像 但是simswap的泛用性远强于deepfacelab 个人认为simswap名气不如deepfacelab的原因有以下几点 1 缺乏发行版 2 缺乏文档 3 最终训练效果不一定好 本文旨在记录一
  • 它们把色情版 “微信” 的底裤都给挖出来了,网友: 草率了。。。

    作者 暗影安全实验室 来源 anquanke com post id 219729 背景 近日 恒安嘉新暗影安全实验室平台监测到一款名为 乐宝 的仿冒应用 安全研究人员第一时间对该应用进行了研究分析 发现该应用表面上是一款与微信具有相似页面
  • wireshark 导出指定tcp流的数据包

    数据包回放时 如果我们只想将pcap包中的部分数据进行回放 怎么办呢 首先使用wireshark打开文件 在过滤器中进行过滤 比如我只想要tcp stream eq 0的数据 可以如下操作 过滤好数据 然后依次操作 文件 gt 导出特定分组
  • 离散余弦变换

    离散余弦变换 DCT for Discrete Cosine Transform 是与傅里叶变换相关的一种变换 它类似于离散傅里叶变换 DFT for Discrete Fourier Transform 但是只使用实数 离散余弦变换相当于