10 DCT变换对灰度图像压缩(matlab程序)

news2024/11/18 17:41:33

1.简述

一、设计任务

1、在图像的变换和压缩中,常常用到离散余弦变换(DCT)。DCT变换用于图像的压缩实例。请在测试图像中验证你的结论。

2、请编程实现图像的真彩色增强。

3、通过直方图均衡化的方法实现图像的灰度变换,在测试图像中验证你的结论,分析程序结果。

4、使用常用的滤波器对数字图像进行处理。如均值滤波器、中值滤波器、维纳滤波器等。

二、系统设计原理

1、DCT图像压缩原理

DCT变换是最小均方误差条件下得出的次最佳正交变换,且已获得广泛应用,并成为许多图像编码国际标准的核心。JPEG图像格式的压缩算法采用的就是DCT变换,DCT变换的变换核为余弦函数,计算速度较快,有利于图像压缩和其他处理。在编码过程中,JPEG算法首先将RGB分量转化为亮分量和色差分量,然后将图像分解为8*8的像素块,,对这个8*8块进行二维离散余弦变换,每个块就产生了64个DCT系数,其中一个是直流(DC),它表示了8*8输入矩阵全部值的平均数,其余63个系数为交流(AC)系数,接下来对DCT系数进行量化,最后将量化的DCT系数进行编码,就形成了压缩后的图像格式。在解码过程中,先对已编码的量化的系数进行解码,然后求逆量化并利用二维DCT反变换把DCT系数转化为8*8样本像块,最将反变换后的块组合成一幅图像。这样就完成了图像的压缩和解压过程。

离散余弦变换DCT的MATLAB实现有两种方 法,一种是基于FFR的快速算法,这是通过MATLAB工具箱提供的DCT2函数实现的;另一种是DCT变换是矩阵方法。变换矩阵方法非常适合做8*8或16 *16的图像块的DCT变换,工具箱提供了dctmtx函数来计算变换矩阵。

2、真彩色增强

真彩色增强主要是针对伪彩色增强而言的。图像的色彩增强技术主要分为为彩色增强和真彩色增强两种,这两种方法在原理上存在着本质的区别。伪彩色增强时对原灰度图像中不同灰度值区域分别付于不同的颜色,使人能够更明白的区分不同的灰度级。由于原始图像事实上是没有颜色的,所以称这种人工赋予的颜色为伪彩色,伪彩色增强实质上只是一个图像的着色过程是一种灰度到彩色的映射技术。真彩色增强则是对原始图像本身具有的颜色进行调节,是一个彩色到彩色的映射过程。

3、平滑

在图像中,通过相邻点的相互平均可以去掉一些突然变化的点,从而滤掉一定的噪声,达到平滑的目的,使图片看起来更柔和,颜色更均匀更清晰。

4、锐化

图像平滑往往使图像中的边界、轮廓变得模糊,为了减少这类不利效果的影响,需要用图像锐化技术使图像的边缘变的清晰。图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变的清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变的清晰。从频率域来考虑,图像模糊的实质是因为其高频分量被衰减,因此可以用高通滤波器来使图像清晰。在水下图像的增强处理中除了去噪,对比度扩展外,有时候还需要加强图像中景物的边缘和轮廓。而边缘和轮廓常常位于图像中灰度突变的地方,因而可以直观地想到用灰度的差分对边缘和轮廓进行提取。

5、灰度变换(直方图均衡化)

直方图均衡化的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的动态范围从而可达到增强图像整体对比度的效果。设原始图像在(x,y)处的灰度为f,而改变后的图像为g,则对图像增强的方法可表述为将在(x,y)处的灰度f映射为g。在灰度直方图均衡化处理中对图像的映射函数可定义为:g = EQ (f),这个映射函数EQ(f)必须满足两个条件(其中L为图像的灰度级数):

(1)EQ(f)在0≤f≤L-1范围内是一个单值单增函数。这是为了保证增强处理没有打乱原始图像的灰度排列次序,原图各灰度级在变换后仍保持从黑到白(或从白到黑)的排列。

(2)对于0≤f≤L-1有0≤g≤L-1,这个条件保证了变换前后灰度值动态范围的一致性。

6、图像滤波

滤波器是一种选频装置可以使信号中特定的频率成分通过而极大地衰减其它频率成分,可以滤除干扰噪声。在数字图像处理中,常常会遇到图像中混杂有许多的噪声。因此,在进行图像处理中,有时要先进行祛除噪声的工作。最常用的祛除噪声的方法是用滤波器进行滤波处理。MATLAB的图像处理工具箱里也设计了许多的滤波器。如均值滤波器、中值滤波器、维纳滤波器等。

7、维纳滤波器

维纳滤波器(Wiener filter)是由数学家维纳(Rorbert Wiener)提出的一种以最小平方为最优准则的线性滤波器。在一定的约束条件下,其输出与一给定函数(通常称为期望输出)的差的平方达到最小,通过数学运算最终可变为一个托布利兹方程的求解问题。维纳滤波器又被称为最小二乘滤波器或最小平方滤波器,目前是基本的滤波方法之一。维纳滤波是利用平稳随机过程的相关特性和频谱特性对混有噪声的信号进行滤波的方法。

8、中值滤波器

中值滤波是一种非线性数字滤波器技术,经常用于去除图像或者其它信号中的噪声。这个设计思想就是检查输入信号中的采样并判断它是否代表了信号,使用奇数个采样组成的观察窗实现这项功能。观察窗口中的数值进行排序,位于观察窗中间的中值作为输出。然后,丢弃最早的值,取得新的采样,重复上面的计算过程。 中值滤波是图像处理中的一个常用步骤,它对于斑点噪声(en:speckle noise)和椒盐噪声(en:salt-and-pepper noise)来说尤其有用。保存边缘的特性使它在不希望出现边缘模糊的场合也很有用。

2.代码

%----------------------------------------------------------
%%    DCT图像压缩matlab
%----------------------------------------------------------
clear all
clc
k=4;
X=imread('girl.bmp');      %打开图像
A=double(X);               %将图像转换成double型
B=zeros(size(A));
C=zeros(size(A));
%----------------------------------------------------------
%%   作二维DCT,每一小块为 8×8;
%----------------------------------------------------------
s=size(A);
for m=1:s(1)
   if rem(m,8)==0
          for n=1:s(2)
            if rem(n,8)==0
                 B((m-8+1):m,(n-8+1):n)=dct2(A((m-8+1):m,(n-8+1):n));
                B((m-k+1):m,(n-8+1):n)=0;
                B((m-8+1):m,(n-k+1):n)=0;
            end
        end
    end
 end
%----------------------------------------------------------
%%   逆DCT,图象重建
%----------------------------------------------------------
 for m=1:128     
       if rem(m,8)==0
                for n=1:128
                 if rem(n,8)==0
                 C((m-8+1):m,(n-8+1):n)=idct2(B((m-8+1):m,(n-8+1):n));
                end
              end
    end
  end
 %----------------------------------------------------------
 %%   输出二维图像;
 %----------------------------------------------------------
  C=uint8(C);
  subplot(1,2,1);
  subimage(X);
  axis square;xlabel('原图像')
  subplot(1,2,2);
  subimage(C);
  axis square;xlabel('压缩图像');
 

3.运行结果

4.参考文献

[1] 胡晓军、 徐飞 .MATLAB应用图像处理(第二版).西安电子科技大学出版

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

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

相关文章

threejs材质

个人博客地址: https://cxx001.gitee.io 前言 前面简单的介绍了材质,你已经了解到材质结合几何体就可以创建网格,网格对象才可以添加到Threejs渲染的场景中。材质就像物体的皮肤,决定了几何体的外表。如,几何体看起来是否像金属…

GPT模型训练实践

一、GPT模型解释 GPT 模型是 Generative Pretrained Transformers 的缩写,是一种先进的深度学习模型,旨在生成类人文本。GPT 的三个组成部分,即 Generative、Pre-Trained 和 Transformer,其解释如下: 生成&#xff1…

【CCF计算领域学术会议介绍:2024日程安排、CCF会议deadline汇总、2022年录用率】

CCF计算领域学术会议介绍:2024日程安排、CCF会议deadline汇总、2022年录用率 0、目录 1、2024日程安排及deadline汇总2、会议介绍及2022年录用率 1、2024日程安排及deadline汇总 1、Conference List 这个网站汇总了CCF学术会议2023及即将开启的2024学术会议&…

递归:探索问题的无限深度

引言: 在计算机科学中,有一种强大的概念叫做递归。它可以帮助我们解决各种复杂的问题,使代码更加简洁而优雅。递归是一种函数调用自身的技术,通过将问题分解成较小的子问题,以及逐步将其解决,从而达到解决整…

【前端】案例1 轮播图【HTML/CSS/JS】+JQ

引入JQ <script src"https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>CSS代码 /* 轮播图部分 */.two_content {width: 100%;height: 490px;position: relative;overflow: hidden;cursor: pointer;z-index: 1;}.bigimages {width: 10…

AD23 如何设置在PCB网络、原理图双击直接打开属性

概述 时间久远&#xff0c;忘记很多&#xff0c;在此做个笔录。 一、直接打开属性 1、原理图双击直接打开属性&#xff0c;在“原理图界面”。 2、PCB Layout界面双击直接打开属性&#xff0c;在“Layout界面”。 修改后&#xff0c;双击效果如下所示&#xff1a; 二、还原回去…

什么是社区数字化?数字化社区如何打造?

社区作为城市治理和民生服务的“终点站”&#xff0c;提现着基层治理规范化体系和现代化建设的能力。开利网络认为&#xff0c;建设数字化社区需要依托技术手段&#xff0c;建立线上线下相结合的便民服务圈&#xff0c;整合线上线下社区生活服务、社区治理服务和物业服务等&…

GitHub打不开的解决方案(超简单)

在国内&#xff0c;github官网经常面临打不开或访问极慢的问题&#xff0c;不挂梯子&#xff08;VPN&#xff0c;飞机&#xff0c;魔法&#xff09;使用体验极差&#xff0c;那有什么好办法解决GitHub官网访问不了的问题&#xff1f;今天小布教你几招轻松访问github官网。 git…

山西电力市场日前价格预测【2023-07-02】

日前价格预测 预测明日&#xff08;2023-07-02&#xff09;山西电力市场全天平均日前电价为387.35元/MWh。其中&#xff0c;最高日前价格为440.35元/MWh&#xff0c;预计出现在20: 45。最低日前电价为339.26元/MWh&#xff0c;预计出现在03: 30。以上预测仅供学习参考&#xff…

高效复制管理!批量覆盖同名文件轻松完成文件管理

在处理大量文件时&#xff0c;经常需要进行文件复制和管理操作。然而&#xff0c;当目标文件夹内存在同名文件时&#xff0c;手动一一覆盖操作十分繁琐。为了提高工作效率&#xff0c;我们为您提供了一种简便而高效的方法&#xff0c;让您能够轻松批量复制和管理文件&#xff0…

信号链噪声分析12

目录 概要 整体架构流程 技术名词解释 技术细节 小结 概要 提示&#xff1a;这里可以添加技术概要 本文阐释 1/f 噪声是什么&#xff0c;以及在精密测量应用中如何降低或消除该噪声。1/f 噪声无 法被滤除&#xff0c;在精密测量应用中它可能是妨碍实现优质性能的一个限制因素…

管理类联考——英语——趣味篇——词根词汇——按频次分类——高频词汇——List2

List 2 factor [ˈfktə] n.因素&#xff0c;要素 【记】 联想:fact&#xff08;事实&#xff0c;论据&#xff09;or→重要论据→要素 finding [ˈfaindiŋ] n.发现ˌ发现物&#xff1b;[pl.]调查&#xff08;研究&#xff09;结果 imply [imˈplai] vt.意指&#xff0c;含…

CCF-CSP真题《202305-1 重复局面》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看&#xff1a;CCF-CSP真题附题解大全 试题编号&#xff1a;202305-1试题名称&#xff1a;重复局面时间限制&#xff1a;1.0s内存限制&#xff1a;512.0MB问题描述&#xff1a; 题目背景 国际象棋在对局时&#xff0c;同一局面连续或间…

Linux环境中grep、find、locate、whereis、who、uname、whatis、apropos八大查找命令简明教程

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天来聊聊 Linux环境中grep、find、locate、whereis、who、uname、whatis、apropos八大查找命令简明教程。 首先解释一下里面为什么没有man&#xff0c;说实话我运维系统以后&#xff0c;几乎不用这个命令&…

Solr框架 01 Solr框架简介,安装,配置(Analysis,Dataimport)

Solr简介&#xff1a; Solr是一个高性能&#xff0c;基于Lucene的全文搜索服务器。同时对其进行了扩展&#xff0c;提供了比Lucene更为丰富的查询语言&#xff0c;同时实现了可配置、可扩展&#xff0c;并对查询性能进行了优化&#xff0c;并且提供了一个完善的功能管理界面&am…

2023年6月Web3行业月度发展报告区块链篇 | 陀螺科技会员专享

6月&#xff0c;合规与监管成为本月加密领域的主旋律&#xff0c;在海外&#xff0c;SEC接连起诉币安与Coinbase两大交易平台&#xff0c;并将除BTC、ETH、USD系等的几乎所有加密货币列为证券&#xff0c;引发市场哗然&#xff0c;行情也与之紧密关联&#xff0c;随着做市商缓慢…

threejs使用外部模型

个人博客地址: https://cxx001.gitee.io 前面我们都是用Threejs提供的几何体来创建网格&#xff0c;对于简单几何体(如球体和方块)来说非常有效&#xff0c;但当你想要创建复杂的三维模型时&#xff0c;这不是最好的方法。通常情况下&#xff0c;你可以使用三维建模工具&#…

android实现启动未声明的Activity

实现原理&#xff1a;首先创建一个占位StubActivity&#xff0c;这个Activity必须要添加声明&#xff0c;用来代替目标的Activity&#xff0c;然后在ActivityThread中的Handler回调中替换掉原来的Callback&#xff0c;改为自己的Callback&#xff0c;并在此修改成自己要启动的真…

Appium自动化测试 —— 断言

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

六.函数的定义与调用

目录 一.内置函数&#xff1a; 二.标准库函数 三、自定义函数 1、函数定义 2、函数调用 3、函数参数 值传递&#xff1a; 引用传值&#xff1a; 4、函数返回多个值 5、defer语句 6、init函数&#xff1a; 一.内置函数&#xff1a; Go 语言拥有一些不需要进行导入操…