数字图像处理MATLAB程序完整版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一部分数字图像处理
实验一图像的点运算
实验1.1直方图
一. 实验目的
1 •熟悉matlab图像处理工具箱及直方图函数的使用;
2•理解和掌握直方图原理和方法;
二. 实验设备
1. PC 机一台;
2.软件matlab。
三. 程序设计
在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。
l=imread('camerama n.tif);% 读取图像
subplot(1,2,1),imshow(l) % 输出图像
title(' 原始图像')% 在原始图像中加标题subplot(1,2,2),imhist(l) % 输出原图直方图
title(' 原始图像直方图')%在原图直方图上加标题
四. 实验步骤
1. 启动matlab
双击桌面matlab图标启动matlab 环境;
2. 在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,
如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像;
3•浏览源程序并理解含义;
4. 运行,观察显示结果;
5. 结束运行,退出;
五. 实验结果
观察图像matlab环境下的直方图分布。
(a)原始图像(b) 原始图像直方图
六. 实验报告要求
1、给出实验原理过程及实现代码;
2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。
实验1.2灰度均衡
一. 实验目的
1 .熟悉matlab图像处理工具箱中灰度均衡函数的使用;
2•理解和掌握灰度均衡原理和实现方法;
二. 实验设备
1. PC机一台;
2. 软件matlab ;
三. 程序设计
在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。
l=imread('camerama n.tif);% 读取图像
subplot(2,2,1),imshow(l) % 输出图像title(' 原始图像')% 在原始图像中加标题subplot(2,2,3),imhist(l) % 输出原图直方图
title(' 原始图像直方图')%在原图直方图上加标题a=histeq(l,256); % 直方图均衡化,灰度级为256
subplot(2,2,2),imshow(a) % 输出均衡化后图像title(' 均衡化后图像')%在均衡化后图像中加标题
subplot(2,2,4),imhist(a) % 输出均衡化后直方图
title(' 均衡化后图像直方图')%在均衡化后直方图上加标题
四. 实验步骤
1. 启动matlab
双击桌面matlab图标启动matlab 环境;
2. 在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,
如:cameraman图像;再调用相应的灰度均衡函数,设置参数;最后输出处理后的图像;
3•浏览源程序并理解含义;
4. 运行,观察显示结果;
5. 结束运行,退出;
五. 实验结果
观察matlab环境下图像灰度均衡结果及直方图分布。
均衡化后图像
六•实验报告要求
1给出实验原理过程及实现代码;
2
、输入一幅灰度图像,给出其灰度均衡结果,并进行灰度均衡化前后图像直方图分布对比分析。
(d)
实验二图像滤波
实验2.1 3*3均值滤波
一. 实验目的
1 .熟悉matlab图像处理工具箱及均值滤波函数的使用;
2.理解和掌握3*3均值滤波的方法和应用;
二. 实验设备
1. PC机一台;
2. 软件matlab ;
三. 程序设计
在matlab环境中,程序首先读取图像,然后调用图像增强(均值滤波)函数,设置相关参数,再输出处理后的图像。
I = imread('camerama n.tif);
figure,imshow(l);
J=filter2(fspecial( ‘ average ' ,3),l)/255;
figure,imshow(J);
四. 实验步骤
1. 启动matlab
双击桌面matlab图标启动matlab 环境;
2. 在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,
如:cameraman图像;再调用相应的图像增强(均值滤波)函数,设置参数;最后输出处理后的
图像;
3•浏览源程序并理解含义;
4. 运行,观察显示结果;
5. 结束运行,退出;
五. 实验结果
观察matlab环境下原始图像经3*3均值滤波处理后的结果。
(a)原始图像(b)3*3 均值滤波处理后的图像
图(3)
六. 实验报告要求
输入一幅灰度图像,给出其图像经3*3均值滤波处理后的结果,然后对每一点的灰度值和它周围24个
点,一共25个点的灰度值进行均值滤波,看看对25个点取均值与对9个点取中值进行均值滤波有什么区别?有没有其他的算法可以改进滤波效果。
实验2.2 3*3中值滤波
一. 实验目的
1 •熟悉matlab图像处理工具箱及中值滤波函数的使用;
2.理解和掌握中值滤波的方法和应用;
二. 实验设备
1. PC机一台;
2. 软件matlab ;
三. 程序设计
在matlab环境中,程序首先读取图像,然后调用图像增强(中值滤波)函数,设置相关参数,再输出处理后的图像。
I = imread('camerama n.tif); figure,imshow(l);
J=medfilt2(l,[5,5]); figure,imshow(J);
四. 实验步骤
1. 启动matlab
双击桌面matlab图标启动matlab 环境;
2. 在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,
如:cameraman图像;再调用相应的图像增强(中值滤波)函数,设置参数;最后输出处理后的
图像;
3•浏览源程序并理解含义;
4. 运行,观察显示结果;
5. 结束运行,退出;
五. 实验结果
观察matlab环境下原始图像经3*3中值滤波处理后的结果。
(a)原始图像(b)3*3 中值滤波处理后的图像
图(4)
六. 实验报告要求
输入一幅灰度图像,给出其图像经3*3中值滤波处理后的结果,然后对每一点的灰度值和它周围24个点,一共25个点的灰度值进行排序后取中值,然后该点的灰度值取中值。
看看对25个点取中值与对9个点取中值进行中值滤波有什么区别?
实验三图像几何变换
实验3.1图像的缩放
一. 实验目的
1 .熟悉matlab图像处理工具箱及图像缩放函数的使用;
2•掌握图像缩放的方法和应用;
二. 实验设备
1. PC机一台;
2. 软件matlab ;
三. 程序设计
在matlab环境中,程序首先读取图像,然后调用图像缩放函数,设置相关参数,再输出处理后的图像。
I = imread('camerama n.tif); figure,imshow(l);
scale = 0.5;
J = imresize(I,scale);
figure,imshow(J);
四. 实验步骤
1. 启动matlab
双击桌面matlab图标启动matlab 环境;
2. 在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,
如:cameraman图像;再调用相应的图像缩放函数,设置参数;最后输出处理后的图像;
3•浏览源程序并理解含义;
4. 运行,观察显示结果;
5. 结束运行,退出;
五. 实验结果
观察matlab环境下图像缩放后的结果。
(a)原始图像(b) 缩放后的图像
图(5)
六. 实验报告要求
输入一幅灰度图像,给出其图像缩放后的结果,然后改变缩放比率,观察图像缩放后结果柄进行分析。
实验3.2图像旋转
一. 实验目的
1 .熟悉matlab图像处理工具箱及图像旋转函数的使用;
2•理解和掌握图像旋转的方法和应用;
二. 实验设备
1. PC机一台;
2. 软件matlab ;
三. 程序设计
在matlab环境中,程序首先读取图像,然后调用图像旋转函数,设置相关参数,再输出处理后的图像。
I = imread('camerama n.tif);
figure,imshow(l);
theta = 30;
K = imrotate(I,theta); % Try varying the angle, theta.
figure, imshow(K)
四. 实验步骤
1. 启动matlab
双击桌面matlab图标启动matlab 环境;
2. 在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,
如:cameraman图像;再调用相应的图像旋转函数,设置参数;最后输出处理后的图像;
3•浏览源程序并理解含义;
4. 运行,观察显示结果;
5. 结束运行,退出;
五. 实验结果
观察matlab环境下图像旋转后的结果。
(a)原始图像(b) 旋转后的图像
图(7)
六. 实验报告要求
输入一幅灰度图像,给出其图像旋转后的结果,然后改变旋转角度,观察图像旋转后结果柄进行分析。
实验四图像边缘检测
实验4.1边缘检测(Sobel、Prewitt、Log边缘算子)
一. 实验目的
1 •熟悉matlab图像处理工具箱及图像边缘检测函数的使用;
2 .理解和掌握图像边缘检测( Sobel、Prewitt、Log边缘算子)的方法和应用;
二. 实验设备
1. PC机一台;
2. 软件matlab ;
三. 程序设计
在matlab环境中,程序首先读取图像,然后调用图像边缘检测( Sobel、Prewitt 子)函数,设置相关参数,再输出处理后的图像。
I = imread('camerama n.tif);
J1=edge(l,'sobel');
J2=edge(l,'prewitt');
J3=edge(I,'log'); subplot(1,4,1),imshow(I); subplot(1,4,2),imshow(J1); subplot(1,4,3),imshow(J2); subplot(1,4,4),imshow(J3);
四. 实验步骤
1. 启动matlab
双击桌面matlab图标启动matlab 环境;
2. 在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab
如:cameraman图像;再调用相应的边缘检测( Sobel边缘算子、Prewitt 边缘算子、子)函数,设置参数;最后输出处理后的图像;
3•浏览源程序并理解含义;
4. 运行,观察显示结果;
5. 结束运行,退出;
五. 实验结果
观察经过图像边缘检测(Sobel、Prewitt、Log边缘算子)处理后的结果。
(a)原始图像(b)Sobel 边缘算子
Log边缘算
自带的图像,
六•实验报告要求
输入一幅灰度图像,给出其图像边缘检测
( 析对比。
图(7) Sobel 、Prewitt 、Log 边缘算子)后的结果并进行分
(c)Prewitt 边缘算子
(d)Log 边缘算子
实验五基于DSP的边缘检测
实验 5.1 边缘检测( Sobel 边缘算子)
一.实验目的
1.熟悉视频显示程序的运行过程、控制过程,搞清数据处理、传输途径;2.结合实例学习如何在视频显示程序中增加图像处理算法;
3. 熟悉CCS集成开发环境的使用;
4.了解边缘检测的算法和用途,学习利用Sobel 算子进行边缘检测的程序设计方法;
二.实验设备
1.SEED_DTK 教学实验系统一套;
2. DSP 仿真器;
3. PC 机一台。
三.程序设计
在视频显示任务的循环中,程序首先将视频数据从输入缓冲区读入自己开设的临时图像处理缓冲
区,再在临时图像处理缓冲区上进行处理,处理后的数据再输出到输出缓冲区。
在屏幕中央开辟一个矩形区域,对这个区域内的图像进行处理。
这里按模板( 1)进行处理。
DSP程序具体详见附录一。
/* 画矩形边框*/
void drawRectangle();
/*Sobel 边缘检测处理*/
void sobelEdge();
四.实验步骤
1.实验准备
(1) 连接设备
参见“第一部分实验环境的建立”的“一硬件连接”部分。
(2) 开启设备
①打开计算机电源(注意:连接设备时并不需要关闭计算机,但要关闭实验箱电源;如在连接设备
前已经打开计算机,就不需要进行此步骤了) 。
②打开实验箱电源开关
③打开显示器开关。
(3) 设置Code Composer Studio 为Emulator 方式
参见“第一部分实验环境的建立”的“二软件的安装和配置”部分。
如先前已经设置过,就不需再进行设置了。
(4) 双击usb20emurst.exe ,如果出现提示“ SEEDUSB2.0 XDS510CARDIS RESET,HARDWARV E RSION
1”,证明仿真器与目标系统连接正常。
否则请检查电源是否打开,仿真器驱动是否安装正确以及
硬件。
(5) 启动Code Composer Studio
双击桌面上“ CCS 2( 'C6000) ”图标,启动Code Composer Studio。
成功后可看到CCS环境界面。
2.打开工程:工程目录
DM642Programs\2.ImageProcess\SEED401_SobelEdge\SobelEdgeloop2.pjt
3.浏览工程中源程序并理解含义。
4.编译、连接、下载程序并运行,观察显示。
5.结束运行,退出工程。
五.实验结果
矩形框内外分别是用Sobel 边缘算子处理和未处理的图像结果。
六.实验报告要求
(1) 简述DSP下实验步骤;
(2) 输入视频,观察Sobel 边缘检测效果并经行分析;
实验 5.2 边缘检测( Prewitt 边缘算子)
一.实验目的
1.熟悉视频显示程序的运行过程、控制过程,搞清数据处理、传输途径;
2.结合实例学习如何在视频显示程序中增加图像处理算法;
3. 熟悉CCS集成开发环境的使用;
4.了解边缘检测的算法和用途,学习利用Prewitt 算子进行边缘检测的程序设计方法;
二.实验设备
1.SEED_DTK 教学实验系统一套;
2. DSP 仿真器;
3. PC 机一台。
三.程序设计
在视频显示任务的循环中,程序首先将视频数据从输入缓冲区读入自己开设的临时图像处理缓冲区,再在临时图像处理缓冲区上进行处理,处理后的数据再输出到输出缓冲区。
在屏幕中央开辟一个矩形区域,对这个区域内的图像进行处理。
这里按模板( 2)进行处理。
DSP程序具体详见附录。
/* 画矩形边框*/
void drawRectangle();
/*Prewitt 边缘检测处理*/
void PrewittEdge();
四.实验步骤
1.实验准备
(1) 连接设备
参见“第一部分实验环境的建立”的“一硬件连接”部分。
(2) 开启设备
①打开计算机电源(注意:连接设备时并不需要关闭计算机,但要关闭实验箱电源;如在连接设备
前已经打开计算机,就不需要进行此步骤了) 。
②打开实验箱电源开关
③打开显示器开关。
(3) 设置Code Composer Studio 为Emulator 方式
参见“第一部分实验环境的建立”的“二软件的安装和配置”部分。
如先前已经设置过,就不需再进行设置了。
(4) 双击usb20emurst.exe ,如果出现提示“ SEEDUSB2.0 XDS510CARDIS RESET,HARDWARV E RSION
1”,证明仿真器与目标系统连接正常。
否则请检查电源是否打开,仿真器驱动是否安装正确以
及硬件。
(5) 启动Code Composer Studio
双击桌面上“ CCS 2( 'C6000) ”图标,启动Code Composer Studio。
成功后可看到CCS环境界面。
2.打开工程:工程目录
DM642Programs\2.ImageProcess\ SEED402_PrewittEdge\PrewittEdgeloop2.pjt
3.浏览工程中源程序并理解含义。
4.编译、连接、下载程序并运行,观察显示。
5.结束运行,退出工程。
五.实验结果
矩形框内外分别是用Prewitt 边缘算子处理和未处理的图像结果。
六.实验报告要求
(1) 简述DSP环境下实验步骤;
(2) 输入视频,观察Prewitt 边缘检测效果并进行分析。
实验 5.3 边缘检测( Laplacian 边缘算子)
一.实验目的
1.熟悉视频显示程序的运行过程、控制过程,搞清数据处理、传输途径;2.结合实例学习如何在视频显示程序中增加图像处理算法;
3. 熟悉CCS集成开发环境的使用;
4.了解边缘检测的算法和用途,学习利用Laplacian 算子进行边缘检测的程序设计方法;
二.实验设备
1.SEED_DTK 教学实验系统一套;
2. DSP 仿真器;
3. PC 机一台。
三.程序设计
在视频显示任务的循环中,程序首先将视频数据从输入缓冲区读入自己开设的临时图像处理缓冲
区,再在临时图像处理缓冲区上进行处理,处理后的数据再输出到输出缓冲区。
在屏幕中央开辟一个矩形区域,对这个区域内的图像进行处理。
这里按模板( 3)进行处理。
DSP程序具体详见附录三。
/* 画矩形边框*/
void drawRectangle();
/*Laplacian 边缘检测处理*/
void LaplacianEdge ();
四.实验步骤
1.实验准备
(1) 连接设备
参见“第一部分实验环境的建立”的“一硬件连接”部分。
(2) 开启设备
①打开计算机电源(注意:连接设备时并不需要关闭计算机,但要关闭实验箱电源;如在连接设备
前已经打开计算机,就不需要进行此步骤了) 。
②打开实验箱电源开关
③打开显示器开关。
(3) 设置Code Composer Studio 为Emulator 方式
参见“第一部分实验环境的建立”的“二软件的安装和配置”部分。
如先前已经设置过,就不需再进行设置了。
(4) 双击usb20emurst.exe ,如果出现提示“ SEEDUSB2.0 XDS510CARDIS RESET,HARDWARV E RSION
1”,证明仿真器与目标系统连接正常。
否则请检查电源是否打开,仿真器驱动是否安装正确以及
硬件。
(5) 启动Code Composer Studio
双击桌面上“ CCS 2( 'C6000) ”图标,启动Code Composer Studio。
成功后可看到CCS环境界面。
2.打开工程:工程目录
DM642Programs\2.ImageProcess\SEED403_ LaplacianEdge\LaplacianEdgeloop2.pjt
3.浏览工程中源程序并理解含义。
4.编译、连接、下载程序并运行,观察显示。
5.结束运行,退出工程。
五.实验结果
矩形框内外分别是用Laplacian 边缘算子处理和未处理的图像结果。
六.实验报告要求
(1) 简述DSP环境下实验步骤;
(2) 输入视频,观察Laplacian 边缘检测效果并进行分析。