基于MATLAB课程设计-图像处理完整版

摘要

21世纪是一个充满信息的时代,图像作为人类感知世界的视觉基础,是人类获取信息、表达信息和传递信息的重要手段。图像处理,是用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。基本内容 图像处理一般指数字图像处理。数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。图像处理技术的主要内容包括图像压缩,增强和复原,匹配、描述和识别3个部分。 常见的处理有图像数字化、图像编码、图像增强、图像复原、图像分割和图像分析等。图像处理一般指数字图像处理。所谓数字图像处理[7]就是利用计算机对图像信息进行加工以满足人的视觉心理或者应用需求的行为。实质上是一段能够被计算机还原显示和输出为一幅图像的数字码。

关键词:DCT变换;图像压缩;真色彩增强;平滑;锐化;直方图均衡;

灰度变换;滤波;M文件的使用

目录

摘要………………………………………………………………I

1 概述……………………………………………………………II

2 课程设计任务及要求...............................III

  设计任务

  设计要求

3 系统设计原理.....................................Ⅳ

   DCT图像压缩原理

   真彩色增强

      平滑

      锐化

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

   图像滤波

      中值滤波器

      维纳滤波器

4 程序代码及实验结果与分析..............................Ⅵ

   DCT图像压缩

      程序代码

      实验结果

      结果分析

   真彩色增强

      平滑程序代码

      实验结果

      结果分析

      锐化程序代码

      实验结果

      结果分析

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

   程序代码

      实验结果

      结果分析

   图像滤波

      程序代码

      实验结果

      结果分析

5 收获体会.........................................Ⅶ

6 参考文献........................................Ⅷ

概述

MATLAB作为一种矩阵语言,进行数字图像处理是非常方便的。从理论上讲,数字图像是一个二维的整数阵列。掌握简单的MATLAB图像增强技术,从而对图像处理有进一步的了解。

课程设计任务及要求

设计任务

  1. 在图像的变换和压缩中,常常用到离散余弦变换(DCT)。DCT变换用于图像的压缩实例。请在测试图像中验证你的结论。
  2. 请编程实现图像的真彩色增强。
  3. 通过直方图均衡化的方法实现图像的灰度变换,在测试图像中验证你的结论,分析程序结果。
  4. 使用常用的滤波器对数字图像进行处理。如均值滤波器、中值滤波器、维纳滤波器等。

设计要求

在报告中给出本实验的实验结果和分析。

    1. 程序代码附有必要的注释。
    2. 报告中对实验的基本算法原理要进行简要叙述。

系统设计原理

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函数来计算变换矩阵。

真彩色增强

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

平滑

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

锐化

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

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

   直方图均衡化的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的动态范围从而可达到增强图像整体对比度的效果。设原始图像在(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,这个条件保证了变换前后灰度值动态范围的一致性。

图像滤波

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

维纳滤波器

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

中值滤波器:

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

程序代码及实验结果与分析

DCT图像压缩

程序代码:

I=imread('压缩前');%读取原始图片

I=rgb2gray(I);%把图像变成灰度图像

I=im2double(I);%把图像数据类型转换为双精度浮点类型

T=dctmtx(8);%计算离散余弦变换

B=blkproc(I,[8 8],'P1*x*P2',T,T');%对图像I的每个不同8*8数据块应用矩阵式’P1*X *P2’进行处理,其中P1=T,P2=T'

mask=[1  1  1  1  0  0  0  0

      1  1  1  0  0  0  0  0

      1  1  0  0  0  0  0  0

      1  0  0  0  0  0  0  0

      0  0  0  0  0  0  0  0

      0  0  0  0  0  0  0  0

      0  0  0  0  0  0  0  0

      0  0  0  0  0  0  0  0];%二进制值掩码,用来压缩DCT的系数;可通过改变矩阵来改变压缩程度

B2=blkproc(B,[8 8],'P1.*x',mask);%只保留DCT变换的10个系数

I2=blkproc(B2,[8 8],'P1*x*P2',T',T);%逆DCT变换,用来重构图像

subplot(1,2,1);

imshow(I);title('压缩前');%显示原始图像

subplot(1,2,2);

imshow(I2);title('压缩后');%显示压缩图像

imwrite(I2,'D:\我的文档\My Pictures\压缩后')

实验结果:

结果分析:

   尽管抛弃了85%的DCT系数,压缩后占用空间减少了约75%,但是处理后的图片与原图的失真并不大,压缩图片的画质令人满意。由此也验证了JPEG格式由于占用空间小,图片质量高被广泛认可。

真彩色增强

平滑程序代码:

I=imread('');

subplot(1,2,1);imshow(I);title('原图');

h1=fspecial('average',3);%用均值滤波器是领域值平均,以达到平滑目的

I1=imfilter(I,h1);

subplot(1,2,2);imshow(I1);title('平滑滤波真彩色增强');

实验结果:

结果分析:

处理后的图片较处理前的图片看起来更柔和,色彩更均匀。

锐化程序代码:

I=imread('');

g=[0 0 0;0 2 0;0 0 0];

w=fspecial('laplacian',;

H=im2double(I);

J=imfilter(H,g,'replicate');

subplot(1,2,1);

imshow(H);title('原图');

subplot(1,2,2);imshow(J);title('锐化真彩色增强图像');

实验结果

结果分析:

可以很明显的看出处理后的图片轮廓更清晰,边界也更明显

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

程序代码

I=imread('压缩前');

I=rgb2gray(I);

subplot(2,2,1);imshow(I);title('原图');

subplot(2,2,2);imhist(I);title('原直方图');

J=histeq(I);%自动直方图均衡化,均衡后只有64个灰度级

subplot(2,2,4);imhist(J);title('灰度变换直方图');

subplot(2,2,3);imshow(J);title('灰度变换图');%颜色分布相对均衡

实验结果:

结果分析:

   对比处理前后的直方图可知,原直方图中在灰度级100左右的值出现的平率很低可近似忽略而经过histeq函数后直方图的分布从0~200出现的频率相近,基本实现直方图的均匀分布;从图片上则体现为变换后的图片颜色分布均匀没有特别黑或特别白的地方。另如果将histeq中的n值改为200(原图的灰度级),直方图的分布则接近为原图(如下图),此一来更好的说明了直方图可以明显直观地改变图像的灰度级。

图像滤波

程序代码

I=imread('压缩前');

I=rgb2gray(I);

I=im2double(I);

J=imnoise(I,'gaussian',0,; %加入高斯噪声

%进行均值滤波

h=fspecial('average',3);   %fspecial函数用于产生预定义滤波器

I2=uint8(round(filter2(h,I)));  %filter2函数用于图像滤波,h是滤波参数(均值)

%进行中值滤波

I3=medfilt2(J);  %medfilt2函数用于图像的中值滤波

%进行维纳滤波

I4=wiener2(J);%进行一次维纳滤波

I5=wiener2(I4);%进行二次维纳滤波

subplot(2,3,1),imshow(I),title('原图象')

subplot(2,3,2),imshow(J),title('加噪声图象')

subplot(2,3,3),imshow(I2),title('均值滤波后图象')

subplot(2,3,4),imshow(I3),title('中值滤波后图象')

subplot(2,3,5),imshow(I4),title('维纳滤波后图象')

subplot(2,3,6),imshow(I5),title('两次维纳滤波后图象')

实验结果:

结果分析

从图上对比可看出中值滤波器和维纳滤波器滤除噪声的能力差不多,但中值滤波器对于图片亮度的改变相对于维纳滤波器的小。可以看出维纳滤波器不仅滤除了噪声而且也降低了图片的亮度。二次滤波后噪声更小了。

参考文献

[1]  张兆礼,赵春晖,梅晓丹.现代图像处理技术及MATLAB实现.北京:人民      邮电出版社,2001

[2]  孙兆林.MATLAB图像处理.北京:清华大学出版社,2002

[3]  朱习军,隋思涟,张宾,刘尊年.MATLAB在信号与图像处理中的应用.北京,      电子工业出版社

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

[5]  高展宏、 徐文波. 基于MATLAB的图像处理案例教程 清华大学出版社

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

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

相关文章

Java--集合(三)之vectorlinkedlisthashset结构

文章目录 0.架构图1.vector解析2.LinkedList分析2.1源码分析2.2迭代器遍历的三种方式 3.set接口的使用方法3.1基本使用说明3.2基本遍历方式3.3HashSet引入3.4数组链表模拟3.5hashset扩容机制3.6hashset源码解读3.7扩容*转成红黑树机制**我的理解 0.架构图 1.vector解析 和之前介…

mysql 10 单表访问方法

01.优化的过程 对于我们这些 MySQL 的使用者来说, MySQL 其实就是一个软件,平时用的最多的就是查询功能。DBA时不时丢过来一些慢查询语句让优化,我们如果连查询是怎么执行的都不清楚还优化个毛线,所以是时候掌握真正的技术了。我…

Jupyter notebook中更改字体大小

文章目录 方法一:局部修改方法二:全局修改 Jupyter notebook提供了一个非常方便的跨平台交互代码编译环境,但是单元格的内的代码字体往往显示较小,不利于观看。本人查了很多方法来调整字体,后来发现既不需要更改jupyte…

HCIP-HarmonyOS Application Developer 习题(十二)

(多选)1、声明式开发范式的转场动画包含以下哪几种类型? A、页面间转场 B、应用间转场 C、共享元素转场 D、组件内转场 答案:ACD 分析: (多选)2、公共事件服务为应用程序提供哪些能力。 A、取消发布公共…

vue day08(vuex)

一、vuex 概述 1. 是什么 vuex 是一个 vue 的状态管理工具,状态就是数据 大白话:vuex 是一个插件,可以帮我们管理 vue 通用的数据(多组件共享的数据) 2. 场景 一份数据在多个组件中使用,并且还可以进行数据…

Facebook的隐私之战:数据保护的挑战与未来

在数字化时代,隐私保护成为了公众关注的焦点,尤其是在社交媒体巨头Facebook身上。随着用户数据泄露事件的频发,Facebook面临着日益严峻的隐私挑战。这些挑战不仅涉及法律法规的遵循,还影响着用户信任、公司声誉以及未来的发展方向…

【智能大数据分析 | 实验四】Spark实验:Spark Streaming

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘,以提取有价值的信息和洞察。它结合了大数据技术、人工智能(AI)、机器学习(ML&a…

Chromium127编译指南 Windows篇 - 关键环境变量的设置(三)

前言 在我们的Chromium编译指南系列中,我们已经探讨了初始准备工作和 depot_tools 工具的配置。本篇文章将聚焦于Chromium编译过程中至关重要的环境变量设置,这些设置将为您的编译工作铺平道路。 1. 配置 DEPOT_TOOLS_WIN_TOOLCHAIN 环境变量 为了确保我…

vue综合指南(二)

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vuet篇专栏内容:vue综合指南(二) 目录 21、介绍虚拟DOM 22、vue生命周期的理解 23、vue父组件向子组件传递数据…

如何用VS实现动态爱心

首先下载一个easyx库 其次输入以下代码&#xff1a; 代码1 //#define _CRT_SECURE_NO_WARNINGS 1#include<easyx.h>//图形库 #include<stdio.h> #include<time.h> #include<math.h>//定义一个结构体 struct point {double x, y;COLORREF color; };COL…

瀚海微SD NAND存储功能描述(15)命令类b

1)传输的数据不得跨越物理块边界&#xff0c;除非在CSD中设置了WRITE BLK MISALIGN。如果不支持写部分块&#xff0c;则块长度-默认块长度(在CSD中给出)1 2) SDSC卡(CCS0)使用字节单位地址&#xff0c;SDHC和SDXC卡(CCS1)使用块单位地址(512字节单位)。 1) 32个写保护位(代表…

汽车行业焕新潮流涌动,联众优车以优质服务响应市场变化

随着消费者环保意识的改变及新能源汽车市场的快速发展&#xff0c;我国新能源汽车领域正掀起一股新的消费热潮&#xff0c;而旧车的合理处置问题也随之成为社会各界关注的焦点。今年4月末&#xff0c;商务部、财政部等七大部委携手颁布了《老旧汽车置换补贴实施指南》(以下简称…

Maven--简略

简介 Apache旗下的一款开源项目&#xff0c;用来进行项目构建&#xff0c;帮助开发者管理项目中的jar及jar包之间的依赖&#xff0c;还拥有项目编译、测试、打包的功能。 管理方式 统一建立一个jar仓库&#xff0c;把jar上传至统一的仓库&#xff0c;使用时&#xff0c;配置…

深入理解MySQL InnoDB中的B+索引机制

目录 一、InnoDB中的B 树索引介绍 二、聚簇索引 &#xff08;一&#xff09;使用记录主键值的大小进行排序 页内记录排序 页之间的排序 目录项页的排序 &#xff08;二&#xff09;叶子节点存储完整的用户记录 数据即索引 自动创建 &#xff08;三&#xff09;聚簇索引…

[ES3]大侠立志传存档解密修改

找到存档位置&#xff0c;如果是PC端用户&#xff1a;C:\Users\你自己的用户名\AppData\LocalLow\DefaultCompany\Wulin\一串steamID\选择你要改的存档 这里你要改的存档如果是AutoSave就是自动保存&#xff0c;如果是Save加序号就是你手动保存的存档。 手机端用户自行查其他资…

模拟键盘输入卡号RFID读卡器银河麒麟桌面操作系统兼容适配认证测试报告

本测试报告使用读卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1b72i5j0&ftt&id702441469725

通过无线路由器连接三菱PLC的设置方法

1.首先设置无线路由器上网方式为DHCP&#xff08;自动获取IP地址&#xff09;。点击保存&#xff0c;然后点击更多功能 2.再点击网络设置-局域网&#xff0c;勾选DHCP服务器&#xff0c;此功能的作用是对局域网内所有设备分配IP地址。 然后保存&#xff1b; 3.再点击系统设置…

【论文笔记】Fine-tuned CLIP Models are Efficient Video Learners

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: Fine-tuned CLIP Models a…

前端一键复制解决方案分享

需求背景 用户需要对流水号进行复制使用&#xff0c;前端的展示是通过样式控制&#xff0c;超出省略号表示&#xff0c;鼠标悬浮展示完整流水号。此处的鼠标悬浮展示采用的是:title&#xff0c;这样就无法对文本进行选中。 下面是给出一键复制的不同的解决方案&#xff0c;希望…

Flink本地安装

去官网下载安装包Index of /apache/flink/flink-1.17.2 进行解压 tar -zxvf /opt/install_packages/flink-1.17.2-bin-scala_2.12.tgz 解压完成后进入flink-1.17目录&#xff0c;执行以下命令启动flink服务 ./bin/start-cluster.sh 执行成功 之后尝试打开flink的webuihttp:/…