图像处理中的DCT变换

图像处理中的DCT变换

Discrete Cosine Transform,离散余弦变换。
来源及公式推导,可以查看下面链接,介绍的比较详细,这里就不再重复说明了:

  • 详解离散余弦变换(DCT) - 知乎 (zhihu.com)
  • DCT变换 - 知乎 (zhihu.com)

目前DCT变换广泛应用于图像处理中,主要是由于其频谱特性决定的,如下图所示,低频主要集中于左上角,高频集中于右下角。
在这里插入图片描述

频谱分布

DCT变换的频谱分布可以总结为下图。
在这里插入图片描述
下面是找的一些图像进行了验证,可以看到基本符合上述分布。
在这里插入图片描述

主要应用

基于DCT变换后图像的频谱分布特征,主要有以下几个方面的应用:

  • 压缩:这个是使用最广泛的一个应用,经常见到的JPEG图像中就使用了DCT来压缩图像
  • 去噪:这个与压缩有点类似
  • 增强:这个刚好与去噪反过来
压缩

图像压缩是利用人眼对低频信息比较敏感和对高频信息比较不敏感的原理,对DCT变换后的图像,去除部分高频信息,让人眼察觉不到改变,从而实现压缩。
如下图所示为保留DCT变换后系数的比例,可以看到仅保留左上角32%的系数基本就可以让人眼看不出来变化。
在这里插入图片描述
DCT在JPEG中的详细应用,可以查看这篇博客:一篇文章搞定DCT在JPEG中的本质 - 知乎 (zhihu.com)

去噪

图像去噪是利用噪声在DCT图像中的分布特性(噪声一般为高频信息,DCT变换后频谱的右下角),基本的方法就是去除DCT变换后图像的右下角信息,类似图像压缩。这里找到一篇大神写的博客:SSE图像算法优化系列二十一:基于DCT变换图像去噪算法的进一步优化(100W像素30ms)。 - Imageshop - 博客园 (cnblogs.com)
在这里插入图片描述

增强

没有找到相关的博客。其基本原理就是增强高频信息(与去噪相反),最简单的方法就是对高频信息乘以一个大于1的数。当然这样也会增强噪声。DCT图像增强仅对细节进行了增强,图像整体亮度对比度还需结合其他方法。
下面是在《Dark and low-contrast image enhancement using dynamic stochastic resonance in discrete cosine transform domain》文章找的几个例子:
在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/598375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel如何将单元格设为文本

文章目录 一、打开excel文件二、选中单元格三、右键设置单元格格式四、设置界面选择文本后点确定五、其他问题 在caa开发过程中遇到从CATUnicodeString转成CString时,通过SetItemText写入将ID号写入单元格,无法保存ID号中的数字0,故将单元格格…

03 decision tree(决策树)

一、decision tree(决策树) 1. classification problems(纯度) i . entropy (熵) ​ 作用:衡量一组数据的纯度是否很纯 ,当五五开时他的熵都是最高的,当全是或者都不是…

【计算机算法设计与分析】棋盘覆盖问题(C++_分治法)

文章目录 题目描述测试样例算法原理算法实现参考资料 题目描述 在一个 2 k 2 k 2^k \times 2^k 2k2k个方格组成的棋盘中,若恰有一个方格与其他方格不同,则称该方格为一个特殊方格,且称该棋盘为一个特殊棋盘。显然,特殊方格在棋…

mysql之CRUD和常见函数和UNION 和 UNION ALL

mysql之CRUD和常见函数和UNION 和 UNION ALL 一.CRUD1.创建(Create) - 插入数据2.读取(Read) - 查询数据3.更新(Update) - 修改数据4.删除(Delete) - 删除数据 二.函数1.字符串函数&…

并发程序设计--D4GDB调试多进程程序

使用GDB调试此程序 start后 10行进入father进程,接下来会一直在父进程不断执行程序 那么如何进入子进程? 此时杀死此程序进程 重新gdb调试,使用以下命令,再使用n,可进入子进程 那么如何同时调试父进程和子进程 上图可…

年终护眼台灯哪个好用?适合学生备考的台灯推荐

最近临近寒假,就有好多家长们和高校学子们催我推荐护眼台灯,人眼对光是非常敏感的,特别是儿童青少年眼睛还在发育的状态来说,光线是至关重要的,于是这次选择的护眼台灯我都是经过亲自使用测试的。 但由于现在护眼台灯…

【kettle】pdi/data-integration 打开ktr文件报错“Unable to load step info from XML“

一、报错内容: Unable to load step info from XML step nodeorg.pentaho.di.core.exception.KettleXMLException: Unable to load step info from XMLat org.pentaho.commons.launcher.Launcher.main (Launcher.java:92)at java.lang.reflect.Method.invoke (Met…

FA2016AA (MHz范围晶体单元超小型低轮廓贴片) 汽车

随着科技的不断发展,智能汽车逐渐成为人们出行的首选。而其中,频率范围在19.2 MHz ~ 54 MHz的晶体单元超小型低轮廓贴片(FA2016AA)为汽车打造更智能、更舒适、更安全的出行体验。FA2016AA贴片的外形尺寸为2.0 1.6 0.5 mm&#x…

新手深入浅出理解PyTorch归一化层全解析

目录 torch.nn子模块normal层详解 nn.BatchNorm1d BatchNorm1d 函数简介 函数工作原理 参数详解 使用技巧与注意事项 示例代码 nn.BatchNorm2d BatchNorm2d 函数简介 函数工作原理 参数详解 使用技巧与注意事项 示例代码 nn.BatchNorm3d BatchNorm3d 函数简介 参…

防浪涌TVS:电子设备的保护盾?|深圳比创达电子

在电子设备日益普及的今天,我们经常会听到设备因电压波动或突发浪涌而损坏的情况。那么,有没有一种方式可以保护我们的设备免受这些意外伤害?答案就是“防浪涌TVS(Transient Voltage Suppressor)”。但它是什么?它如何工作&#x…

华为欧拉安装部署:Oracle11g

一、环境准备 1、下载安装低版本的libaio包;libaio版本太高,会造成编译错误 查看libaio1库版本不能大于0.3.109 [oracles3 install]$ rpm -qa libaio libaio-0.3.110-12.el8.x86_64# 查看欧拉操作系统版本 [oraclelocalhost bin]$ cat /etc/os-release…

mcu与上位机通讯数据传输测速

问题 如何测量mcu与上位机通讯数据传输速度?(串口、USB) 解决 可以借助Bus Hound 将显示时间戳勾上。 发送一段固定长度的数据,然后除起始和结束的时间差 最后计算即可。

全屏字幕滚动APP:12月份广告总收:84.89元(2023年12月份) 穿山甲SDK接入收益·android广告接入·app变现·广告千展收益·eCPM收益

接入穿山甲SDK app示例: android 数独小游戏 经典数独休闲益智 广告接入示例: Android 个人开发者如何接入广告SDK,实现app流量变现 2023年12月份,总新增用户1242 友盟统计: 12月份:总新增用户1242 2023年12月份…

Prompt提示工程上手指南:基础原理及实践(一)

想象一下,你在装饰房间。你可以选择一套标准的家具,这是快捷且方便的方式,但可能无法完全符合你的个人风格或需求。另一方面,你也可以选择定制家具,选择特定的颜色、材料和设计,以确保每件家具都符合你的喜…

Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found

IDEA创建spring boot项目的时候,pom.xml 文件中spring-boot-maven-plugin报红。 解决方法: 给spring-boot-maven-plugin指定版本 原因: idea自动找的插件版本是其他版本的,和自己设置的不同,导致idea在本地maven仓库…

聊一聊 C# 线程切换后上下文都去了哪里

一:背景 1. 讲故事 总会有一些朋友问一个问题,在 Windows 中线程做了上下文切换,请问被切的线程他的寄存器上下文都去了哪里?能不能给我挖出来?这个问题其实比较底层,如果对操作系统没有个体系层面的理解…

一元脱单盲盒小程序源码系统:自带流量主,低成本帮你赚钱 带完整的安装部署教程

“一元脱单盲盒”小程序源码系统是一款基于微信小程序开发的社交应用。它以盲盒的形式,让用户以极低的成本(通常为一元)尝试与陌生人建立联系。用户支付一元后,系统会随机匹配一位异性用户的信息(通常是微信号或联系方…

Linux 内核调试

文章目录 一、方法论 一、方法论 qemu 虚拟机 Linux内核学习 Linux 内核调试 一:概述 Linux 内核调试 二:ubuntu20.04安装qemu Linux 内核调试 三:《QEMU ARM guest support》翻译 Linux 内核调试 四:qemu-system-arm功能选项整…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -后端架构搭建

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

Java接口和抽象类的区别?

Java接口和抽象类的区别? Java接口和抽象类的含义: 接口(Interface): 含义: 接口是一种抽象类型,它定义了一组抽象方法,但不能包含具体实现。接口可以包含常量和默认方法&#xff0c…