数字图像处理课程实验指导920.docx
《数字图像处理课程实验指导920.docx》由会员分享,可在线阅读,更多相关《数字图像处理课程实验指导920.docx(19页珍藏版)》请在冰豆网上搜索。
数字图像处理课程实验指导920
测绘与国土信息工程学院
《数字图像处理》
实验指导书
适用专业:
遥感科学与技术
刘春国编写
河南理工大学
二〇一六年五月
前言
数字图像处理是遥感科学是为遥感科学与技术专业开设的一门专业必修课。
数字图像处理课程实验教学是数字图像处理课程教学中的重要环节,用于巩固和深化学生对数字图像处理课程理论教学内容的理解,培养和提高学生动手能力。
数字图像处理课堂实验教学是在MATLAB平台支持下开展的,包括两个实验内容:
图像数据与图像文件格式,常用的数字图像增强方法与几何变换处理方法。
通过两个实验,获得对数字图像的数据组织特征更为深入的认识,获得对数字图像处理各种算法效果的体会,这有助于深入理解图像处理算法原理。
本指导书适用于遥感科学与技术专业学生。
目录
实验一、图像数据结构与图像文件格式………………………………1
实验二、图像增强处理与几何变换……………………………………4
实验一图像数据结构与图像文件格式
实验类型:
验证性实验学时:
2学时实验要求:
必修
一、实验目的
1、初步熟悉MATLAB软件使用。
2、掌握基于MATLAB获取图像信息的方法。
3、掌握各种图像文件存储格式的共性特点。
4、分析BMP图像数据结构与文件格式,深化对图像数据结构和图像文件格式的理解。
二、实验内容
1、读取和显示BMP索引色图像
2、读取和显示BMP真彩色图像
3、基于二进制文件分析BMP图像文件结构
三、仪器设备
1、计算机。
2、MATLAB软件。
四、所需耗材
无
五、实验原理、方法和手段
1、索引色BMP图像文件和真彩色图像文件结构构成
2、利用MATLAB中的图像读取函数和文件读取函数(二进制文件形式)读取BMP图像文件
六、实验步骤
1、读取和显示BMP索引色图像(包括二值图像、灰度图像、彩色图像)
1.1二值图像
fileinfo1=imfinfo('cameraman-1.bmp','bmp');
[img1,map1]=imread('cameraman-1.bmp','bmp');
figure,imshow(img1,map1);
1.2灰度图像
fileinfo2=imfinfo('cameraman-4.bmp','bmp');
[img2,map2]=imread('cameraman-4.bmp','bmp');
figure,imshow(img2,map2);
Fileinfo3=imfinfo('cameraman-8.bmp','bmp');
[img3,map3]=imread('cameraman-8.bmp','bmp');
figure,imshow(img3,map3);
1.3基于索引色的彩色图像
Fileinfo4=imfinfo('canoe-256.bmp','bmp');
[img4,map4]=imread('canoe-256.bmp','bmp');
figure,imshow(img4,map4);
2、读取和显示BMP真彩色图像
Fileinfo5=imfinfo('peppers.bmp','bmp');
[img5,map5]=imread('peppers.bmp','bmp');
figure,imshow(img5,map5);
3、以二进制形式读取以上BMP文件,分析索引色和真彩色BMP图像文件的构成,尝试观察分析每一个组分分量数值以及数值间的联系。
[fid1,mesage1]=fopen('cameraman-1.bmp','r');
data1=fread(fid1);
[fid2,mesage2]=fopen('cameraman-4.bmp','r');
Data2=fread(fid2);
[fid3,mesage3]=fopen('cameraman-8.bmp','r');
Data3=fread(fid3);
[fid4,mesage4]=fopen('canoe-256.bmp','r');
Data4=fread(fid4);
[fid5,mesage5]=fopen('peppers.bmp','r');
Data5=fread(fid5);
七、实验结果处理
略。
八、实验注意事项
1)注意实验室卫生
2)服从实验教学人员安排与管理,注意用电安全
九、预习与思考题
1、预习
1)了解MATLAB作为程序设计语言和图像处理工具的特点。
MATLAB是用于算法开发、数据可视化、数据分析的高级技术计算语言和交互式环境,可进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,可应用于工程计算、信号处理与通讯、图像处理等诸多领域。
MATLAB的基本数据单位是矩阵,有功能丰富的应用工具箱(也可叫函数库),满足了如图像处理等领域的一些特殊需要。
2)MATLAB软件的安装和文件路径变换。
3)了解MATLAB函数功能与使用方法,下面对实验中可能用到的MATLAB函数予以简单说明,可进一步查阅MATLAB函数文档了解这些函数的用途和用法。
●fopen(),判断文件能否打开。
●fread(),从二进制文件读取数据。
●imfinfo(),获取图像文件信息。
●imread(),读取图像文件。
●imshow(),显示图像文件。
●imhist(),图像直方图函数。
●figure,创造显示面板的函数。
●回顾索引色和真彩色BMP图像文件构成
2、思考题
●利用理解图像的矩阵表达方式?
图像坐标原点一般是怎么约定的?
利用MATLAB验证图像矩阵表达方式和图像坐标系。
●查看图像直方图,能简单说明图像直方图与图像亮度特征和图像内目标物构成的联系。
●给定数字图像的量化位数,图像的灰度动态范围应该是多少?
●组合方式的图像数据结构
●什么是二值图像?
●什么是灰度图像?
●什么是真彩色图像?
●什么是索引色图像?
●什么多波段图像?
●解释多波段图像与真彩色图像的差别。
●BMP图像文件格式是怎样存储二值图像、灰度图像、索引色图像、真彩色图像的?
根据BMP文件存储格式观察分析二值图像、16色位图、256色、真彩色位图图像data,fileinfo,img数据内容,结合以下5方面理解BMP格式存储特征。
(1)位图文件头结构及其各组分内容:
包括bfType、bfSize、bfOffBits。
(2)位图信息头结构及其各组分内容:
分析biSize、biWidth、biHeight、biPlanes、biBitCount、biCompression、biSizeImage等内容。
(3)调色板内容及其组分内容:
调色板的结构、调色板内容、调色板大小,分析单色图像、灰度图像、索引色图像、真彩色图像的调色板。
(4)位图数据内容:
索引色图像和真彩色图像的位图数据内容,图像数据是如何保存到位图数据结构的,二值、16色和256色、真彩色图像存储时文件大小的计算。
十、实验报告要求
实验完成后,每人撰写一份实验报告。
实验报告统一采用A4幅面纸张打印;报告采用统一封面,无需改变封面结构。
实验报告版面结构合理,整洁美观。
正文部分五号宋体,单倍行距、两端对齐、首行缩进2字符。
插图必须精心制作,插图应与正文呼应,不得与正文脱节,每幅插图应有图序和图题,图名写在插图正下方。
图注说明用小五号宋体字。
说明:
实验报告结构与实验报告封面另行提供。
实验二图像增强处理与几何变换
实验类型:
验证性实验学时:
2学时实验要求:
必修
一、实验目的
利用Matlab图像处理工具箱中的函数实现图像点处理、空间域平滑和锐化处理、彩色图像处理、几何处理,巩固其原理与计算方法学习,深化课程理论认知。
二、实验内容
1、图像点处理:
灰度变换、直方图均衡化和直方图规定处理;
2、图像均值滤波和中值滤波、图像锐化处理;
3、图像几何变换处理;
4、图像彩色合成和彩色变换处理;
三、仪器设备
1、计算机。
2、MATLAB软件。
四、所需耗材
无
五、实验原理、方法和手段
参考教材内容,复习回顾图像灰度变换、直方图规定化、直方图均衡化、移动平滑滤波、中值滤波、图像锐化、彩色合成、彩色变换、几何变换处理等图像处理技术的原理与计算方法。
六、实验步骤
1图像的灰度变换
I=imread('cameraman-8.bmp','bmp');
figure;subplot(2,2,1),imshow(I);
subplot(2,2,2),imhist(I);
[counts1,x1]=imhist(I);%观察Counts,x的值
subplot(2,2,3),stem(x1,counts1);
J=imadjust(I,[0.10.7],[0.00.9]);
subplot(2,2,4),imshow(J);
figure;
subplot(2,3,1),imshow(I);
subplot(2,3,2),imshow(J);
subplot(2,3,4),imhist(I);
subplot(2,3,5),imhist(J);
[counts2,x2]=imhist(J);
subplot(2,3,6),stem(x2,counts2);
2图像直方图处理
2.1直方图均衡化
I=imread('cameraman-8.bmp','bmp');
J=histeq(I);
figure
(1),subplot(2,2,1),imshow(I),subplot(2,2,2),imshow(J);
figure
(1),subplot(2,2,3),imhist(I),subplot(2,2,4),imhist(J);
2.2直方图规定化
I1=imread('TM5.bmp','bmp');
I2=imread('TM3.bmp','bmp');
K1=histeq(I1,imhist(I2));
figure;
subplot(3,2,1),imshow(I1);
subplot(3,2,2),imhist(I1);
subplot(3,2,3),imshow(I2);
subplot(3,2,4),imhist(I2);
subplot(3,2,5),imshow(K1);
subplot(3,2,6),imhist(K1);
3图像空间域平滑
3.1用均值滤波器实现图像空间域的平滑
I=imread('cameraman-8.bmp','bmp');
J=imnoise(I,'gaussian');%添加高斯噪声
K=imnoise(I,'salt&pepper');%添加椒盐噪声
M=imnoise(I,'speckle');%添加乘性噪声
H=ones(3,3)/9;%3*3的均值去噪模板
I1=imfilter(I,H);
J1=imfilter(J,H);
K1=imfilter(K,H);
M1=imfilter(M,H);%去噪
figure;
subplot(2,4,1),imshow(I);title('原图');
subplot(2,4,2),imshow(J);title('高斯噪声图像');
subplot(2,4,3),imshow(K);title('椒盐噪声图像');
subplot(2,4,4),imshow(M);title('乘性噪声图像');
subplot(2,4,6),imshow(J1);title('高斯噪声滤波图像');
subplot(2,4,7),imshow(K1);title('椒盐噪声滤波图像');
subplot(2,4,8),imshow(M1);title('乘性噪声滤波图像');
3.2用中值滤波器实现图像空间域的平滑
I=imread('cameraman-8.bmp');
I1=imnoise(I,'gaussian');
I2=imnoise(I,'salt&pepper',0.02);
I3=imnoise(I,'speckle');
J=medfilt2(I,[3,3]);%3×3中值滤波模板
J1=medfilt2(I1,[3,3]);
J2=medfilt2(I2,[3,3]);
J3=medfilt2(I3,[3,3]);
figure,subplot(2,4,1),imshow(I);title('原图');
subplot(2,4,2),imshow(I1);title('添加高斯噪声');
subplot(2,4,3),imshow(I2);title('添加椒盐噪声');
subplot(2,4,4),imshow(I3);title('添加乘性噪声');
subplot(2,4,6),imshow(J1);title('高斯噪声3*3中值滤波');
subplot(2,4,7),imshow(J2);title('椒盐噪声3*3中值滤波');
subplot(2,4,8),imshow(J3);title('乘性噪声3*3中值滤波');
K=medfilt2(I,[5,5]);%5×5中值滤波模板
K1=medfilt2(I1,[5,5]);
K2=medfilt2(I2,[5,5]);
K3=medfilt2(I3,[5,5]);
figure;
subplot(2,2,1),imshow(K);title('原图5*5中值滤波');
subplot(2,2,2),imshow(K1);title('高斯噪声5*5中值滤波');
subplot(2,2,3),imshow(K2);title('椒盐噪声5*5中值滤波');
subplot(2,2,4),imshow(K3);title('乘性噪声5*5中值滤波');
4图像空间域锐化
I=imread('cameraman.bmp','bmp')
H=fspecial('sobel')%用sobel算子做模板
J=imfilter(I,H)
figure,subplot(1,2,1),imshow(I),subplot(1,2,2),imshow(J);
5图像几何变换
5.1缩放
I=imread('cameraman.bmp','bmp');
J=imresize(I,2);
K=imresize(I,0.5);
figure
(1),subplot(),imshow(I),title('原图'),figure
(2),subplot(),imshow(J),title('放大两倍的图'),figure(3),subplot(),imshow(K),title('缩小0.5倍的图');
5.2旋转
I=imread('cameraman.bmp','bmp');
M=imrotate(I,45);
figure;
subplot(1,2,1),imshow(I),subplot(1,2,2),imshow(M);
6、彩色图像处理
6.1彩色合成
I=imread('autumn.bmp','bmp');
J1=I;
J2=I;
J3=I;
J4=I;
J5=I;
J1(:
:
1)=I(:
:
2),J1(:
:
2)=I(:
:
3),J1(:
:
3)=I(:
:
1);
J2(:
:
1)=I(:
:
1),J2(:
:
2)=I(:
:
3),J2(:
:
3)=I(:
:
2);
J3(:
:
1)=I(:
:
2),J3(:
:
2)=I(:
:
1),J3(:
:
3)=I(:
:
3);
J4(:
:
1)=I(:
:
3),J4(:
:
2)=I(:
:
2),J4(:
:
3)=I(:
:
1);
J5(:
:
1)=I(:
:
3),J5(:
:
2)=I(:
:
1),J5(:
:
3)=I(:
:
2);
figure,subplot(2,3,1),imshow(I),title('原图');
subplot(2,3,2),imshow(J1),title('变换一');
subplot(2,3,3),imshow(J2),title('变换二');
subplot(2,3,4),imshow(J3),title('变换三');
subplot(2,3,5),imshow(J4),title('变换四');
subplot(2,3,6),imshow(J5),title('变换五');
6.2彩色变换
I=imread('autumn.bmp','bmp');
HSV=rgb2hsv(I);
RGB=hsv2rgb(HSV);
figure;
subplot(1,3,1),imshow(I),title('原图'),
subplot(1,3,2),imshow(HSV),title('HSV图像');
subplot(1,3,3),imshow(RGB),title('RGB图像');
七、实验结果处理
略。
八、实验注意事项
1)注意实验室卫生
2)服从实验教学人员安排与管理,注意用电安全
九、预习与思考题
1、预习
1)了解MATLAB图像函数功能与使用方法
●imadjust():
用于调节灰度图像的亮度或彩色图像的颜色矩阵。
●imhist():
获取图像数据直方图。
●histeq():
实现图像直方图均衡化和规定化处理的函数
●imnoise():
给图像添加噪声的函数
●imfilter():
实现线性空间滤波函数。
●medfilt2():
2-D中值滤波函数。
●rgb2hsv():
从RGB到HSV变换。
●hsv2rgb():
从HSV到RGB变换。
●imresize():
图像缩放处理函数。
●imrotate():
图像旋转函数。
其他辅助函数说明:
●Subplot():
把面板分为几个部分,每一部分可以显示一幅图像。
●stem():
绘制离散序列数据。
2)复习图像点处理、空间域平滑和锐化处理、彩色图像合成和变换处理、几何处理原理
亮度变换是一种点变换处理,总是采用某个亮度(灰度)变换函数,对图像的像素灰度值施加操作,和像素的空间坐标没有关系。
在课堂教学中,主要介绍了以下几种常用的亮度变换方法:
⏹线性变换:
采用某个线性函数对像素灰度值施加处理。
分段线性变换,视为线性变换的一种,无非是采用了分段线性函数。
⏹非线性变换:
采用非线性函数对像素灰度值施加处理,如指数变换和对数变换。
⏹基于直方图的变换。
如直方图均衡化处理与直方图规定化处理。
通过图像亮度变换处理,同学们要掌握或理解以下概念与方法。
⏹图像点运算处理的概念
⏹亮度(灰度)变换的概念
⏹线性变换的概念
⏹分段线性变换的概念
⏹非线性变换的概念
⏹对数变换的概念
⏹指数变换的概念
⏹直方图均衡化处理的概念
⏹直方图规定化处理的概念
需要着重指出:
这些概念不仅仅是一种定义,实际上是一种图像处理算法或者思路,需要认真理解。
在课堂实验中,利用MATLAB工具箱中的图像函数imadjust和histeq实现图像线性变换、直方图均衡化和规定化处理。
空间域滤波也称为邻域处理,不仅要掌握空间域滤波的概念,还要理解与掌握空间域滤波的过程,课堂教学中详细说明过。
空间域滤波包括空间域图像平滑与空间域图像锐化。
图像平滑是滤除图像噪声的过程,主要包括均值滤波和中值滤波。
均值滤波使用线性滤波器,是空间卷积操作,是空间低通滤波操作。
中值滤波使用非线性滤波器。
图像锐化是突出图像中边缘或轮廓信息的过程,利用各种图像锐化算子与图像进行空间卷积操作,是空间高通滤波操作。
在课程理论教学中,介绍过线性滤波和非线性滤波方法。
同学们要掌握或理解以下概念与方法:
⏹图像噪声概念
⏹高斯噪声概念与特点
⏹椒盐噪声概念与特点
⏹线性滤波与非线性滤波概念
⏹空间低通滤波与空间高通滤波概念
⏹图像边缘概念
⏹邻域概念
⏹邻域平均滤波概念与方法(均值滤波)
⏹中值滤波概念与方法
⏹空间卷积
⏹图像锐化概念
在课堂实验中,利用MATLAB工具箱中的图像函数imnoise添加图像噪声,利用imfilter实现图像线性滤波(包括平滑与锐化处理)、medfilt2实现非线性中值滤波处理。
图像彩色合成和彩色变换是图像色彩操作,彩色合成能使图像目标物表现出奇异的颜色,彩色变换是基于不同图像空间定量表达模型(颜色空间)的操作。
彩色合成是变换彩色图像的三波段的波段次序实现的。
彩色变换实现从RGB图像空间表达模型到HSV图像空间表达模型的变换,或者反之。
同学们要掌握或理解以下概念:
⏹彩色图像与真彩色图像
⏹真彩色合成与假彩色合成概念
⏹表色和表色系
⏹颜色模型
⏹RGB颜色模型
⏹HSI(HSV)颜色模型
在课堂实验中,利用MATLAB工具箱中的图像函数rgb2hsv和hsv2rgb实现图像的彩色变换。
图像彩色合成不需要专门的图像函数,只调整彩色图像各个波段的次序即可。
图像的几何变换处理是图像像素间的空间坐标进行调整的操作。
仿射变换是最常用的几何变换形式,可以包括镜像、比例缩放、旋转、平移、剪切等操作。
在课堂教学中,讲述过镜像、缩放、旋转、平移、剪切等图像几何变换的表达式,同学们要复习回顾这些基本的表达式,有兴趣的同学可以参考相关书籍材料探究如何用仿射变换来统一表示图像的各种几何变换。
在课堂实验中,利用MATLAB工具箱中的图像函数imresize和imrotate实现图像放缩和旋转。
2、思考题
1)点处理与局部处理的区别
2)空间域平滑时滤波窗口的大小对输出图像的影响
3)采用不同的彩色合成方案的目的
十、实验报告要求
实验完成后,每人撰写一份实验报告。
实验报告统一采用A4幅面纸张打印;报告采用统一封面,无需改变封面结构。
实验报告版面结构合理,整洁美观。
正文部分五号宋体,单倍行距、两端对齐、首行缩进2字符。
插图必须精心制作,插图应与正文呼应,不得与正文脱节,每幅插图应有图序和图题,图名写在插图正下方。
图注说明用小五号宋体字。
说明:
实验报告结构与实验报告另行提供。
补充说明
1、变换MATLAB操作路径到图像所在目录。
原操作目录:
变换路径:
图像所在目录:
BMP文件组成
BMP文件由文件头、位图信息头、颜色信息和图像数据四部分组成。
1:
BMP文件头(14字节)
BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。
其结构定义如下:
typedefstructtagBITMAPFILEHEADER{
WORDbfType;//位图文件的类型,必须为BM(1-2字节)
DWORDbfSize;//位图文件的大小,以字节为单位(3-6字节)
WORDbfReserved1;//位图文件保留字,必须为0(7-8字节)
WORDbfReserved2;//位图文件保留字,必须为0