当前位置: 首页 > news >正文

【信号去噪】基于麻雀算法优化VMD实现信号去噪附matlab代码

1 内容介绍

随着互联网技术及通讯技术的快速发展,数字图像被广泛使用.对数字图像的压缩技术是数字图像处理技术中的关键技术之一.本文介绍了一种基于离散余弦变换(DCT)频域变换方法,使用该方法对数字图像进行图像数据的压缩.该方法用MATLAB仿真软件对实验测试的数字图像进行压缩,对比不同压缩比下的压缩图像进行分析,通过实验仿真结果得出离散余弦变换应用在数字图像压缩中有良好的效果.该方法具有操作简单,处理速度快,易于操作,压缩图像质量高等优点.

基于离散余弦变换DCT图像压缩方法的流程如图1所示,其算法步骤主要分为以下几步:第一步要将被压缩的图像进行分块处理,通常将图像分为8×8的图像子块。接下来第二步将对分好的每个子块进行离散余弦变换,变换后的图像低频部分都大部分集中在图像频谱图中的左上角处,而高频部分基本集中在频谱图的右下角区域中。由于数字图像中的主要数据信息都是低频的信息,主要存在低频部分,所以对应的离散余弦变换后的低频系数较大。高频部分包含的信息量小,对应的DCT系数比较小可以忽略。在数字图像压缩中,对图像的频谱图像的低频部分进行保留处理,及保存CDT变换后系数较大的部分,将高频系数较小的那部分舍弃,通常情况下人的眼睛对高频的信息不敏感,从而当高频部分被舍弃,人眼也很难察觉到有失真。在数字图像传输过程中,就是利用这个压缩特点,将图像变换后的高频信号系数舍去进行压缩数据的传输,当接收到图像压缩数据后需要还原图像,将压缩的图像数据进行离散余弦反变换恢复到原有的图像数据值。在这过程中图像会有一定的数据丢失,但是人眼还是无法直接看出。这就实现了数字图像压缩传输的目的。其次是进行DCT系数的量化,对图像进行量化将会导致图像的质量下降,图像经过DCT变换后,DCT系数的幅度可能较大,因此需要量化系数不为零的系数项减小其系数的幅度,有些高频系数可以量化为零,增加系数为零项的数目。在量化过程中,通常将低频部分的量化阈值系数设为较小的数值,最大限度地保留数字图像原有的主要数据信息。在高频部分设置系数阈值时,一般都将高频系数值设为零。一般情况下量化的阈值选定直接导致压缩的效果,即在图像的压缩比与图像质量之间的取舍,量化的阈值越大,图像的压缩比越高。通常情况下想要获得更好的图像压缩质量,则需要综合考虑设置合理的量化阈值对图像进行压缩处理。在量化编码过程中,其中DC为图像的直流分量,DC分量包含了图像频谱的主要部分,也包含了图像的主要信息,对其系数进行编码的系数一般取值较大。

2 仿真代码

% Calculate the compression ratio 

% between the original images and the compressed images;

function comp_ratio = Compratio(orig_image, comp_image)

% Calculate how many bits should be used to represented the original images

% and store it in the variable B0

clear tempmatr1;

tempmatr1 = ceil(log2(orig_image+1));

clear sizevector1;

sizevector1 = size(orig_image);

[rownum, colnum] = size(sizevector1);

while colnum >1

    clear tempmatr2;

    tempmatr2 = sum(tempmatr1);

    clear tempmatr1;

    tempmatr1 = tempmatr2;

    colnum = colnum -1;

end

B0 = sum(tempmatr1);

% Calculate how many bits should be used to represented the compressed images

% and store it in the variable B1

clear tempvec1;

tempvec1 = find(comp_image<0);

clear tempmatr1;

if sum(tempvec1) == 0

    tempmatr1 = ceil(log2(comp_image+1));

else

    tempmatr1 = ceil(log2(abs(comp_image)+1))+1;

end

clear sizevector1;

sizevector1 = size(comp_image);

[rownum, colnum] = size(sizevector1);

while colnum >1

    clear tempmatr2;

    tempmatr2 = sum(tempmatr1);

    clear tempmatr1;

    tempmatr1 = tempmatr2;

    colnum = colnum -1;

end

B1 = sum(tempmatr1);

comp_ratio = B0/B1;

3 运行结果

4 参考文献

[1]赵文俊, 董慧敏, 朱智民. 基于Matlab的JPEG图像压缩编码仿真实现[J]. 机电工程, 2007, 24(10):3.

[2]刘羽飞. "基于离散余弦变换的数字图像压缩算法实现." 无锡职业技术学院学报 16.1(2017):4.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

相关文章:

  • java ssm超市库存管理系统
  • 深入了解面向对象——面向对象的重要特征(C#)未写完
  • git--tag(标签)命令--使用/实例
  • 【投资组合管理】使用 TIME 框架优化软件组合
  • 安全云是如何做好云安全的?
  • Git与Idea整合
  • 了解RPC、HTTP、TCP
  • Android集成IJKFFMPEG总结
  • 【二叉树】最长同值路径
  • 使用缓冲区提高并发
  • Windows10环境下Python 开发环境搭建
  • JavaEE TCP协议
  • 51单片机DS18B20温度报警器proteus仿真设计_可调上下限
  • SSRF漏洞
  • 猿创征文|平凡的应届生四年学习之路
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 时间复杂度分析经典问题——最大子序列和
  • 收藏网友的 源程序下载网
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Effective Java 笔记(一)
  • Hibernate【inverse和cascade属性】知识要点
  • javascript从右向左截取指定位数字符的3种方法
  • Laravel 中的一个后期静态绑定
  • overflow: hidden IE7无效
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • TCP拥塞控制
  • 不上全站https的网站你们就等着被恶心死吧
  • 二维平面内的碰撞检测【一】
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 机器学习中为什么要做归一化normalization
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 智能合约Solidity教程-事件和日志(一)
  • MyCAT水平分库
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • # C++之functional库用法整理
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (pojstep1.3.1)1017(构造法模拟)
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (五)c52学习之旅-静态数码管
  • (一)appium-desktop定位元素原理
  • (转)C#调用WebService 基础
  • (转)关于多人操作数据的处理策略
  • (转载)虚函数剖析
  • ***详解账号泄露:全球约1亿用户已泄露
  • .dwp和.webpart的区别
  • .net 提取注释生成API文档 帮助文档
  • .Net下的签名与混淆
  • .net中应用SQL缓存(实例使用)