专业综合实验指导书
――数字图像处理
(电子信息专业用)
长春工业大学计算机科学与工程学院
数字图像处理课程组
一、目的和意义
专业综合实验旨在将图像处理基础理论论述与软件实践方法相结合,指导学生如何解决图像处理过程中经常遇到的实际问题,提高学生的综合素质。所选择的软件工具来自公认的科学计算方面的引领者MathWorks公司的MATLAB图像处理工具箱,它为数字图像处理提供了一个稳定、宽泛的软件实现平台,其在教育和工业应用中同样占有优势。本书重点强调了图像处理的基本问题的实现,帮助学生巩固对相关理论知识的理解。
二、实验要求
结合图像处理的基本知识,培养学生运用MATLAB软件进行编程并仿真实现,提高软件设计和编程能力。通过分析实验结果,总结及撰写技术分析报告。
三、主要仪器设备及环境
微机Pentium 4 以上,32M以上内存,安装好WINDOWS98以上、MATLAB7.0等有关软件。
四、实验内容
(一) 常规实验项目 1.实验一 图像显示
2.实验二 图像变换 3.实验三 图像增强 4.实验四 图像分割 5.实验五 图像压缩
6.实验六 图像运算与区域处理 (二) 综合设计性实验项目
7.设计一 医学图像边缘检测算法设计
8.设计二 车牌图像处理与识别
实验一 图像显示
一、实验目的
MATLAB的图像处理工具箱提供了多种图像显示和颜色、光照技术。本实验将具体介绍Matlab中用于图像显示、颜色转换的各个函数的具体用法。
二、实验要求
1.学习图像读取、显示及保存方法。 2.学习特殊图像显示技术
3.学习图像颜色模型转换技术
三、实验内容
1.读取图像
使用函数imread可以将图像读入MATLAB环境,imread 的语法为 imread('filename') 其中,filename是一个含有图像文件全名的字符串(包括任何可用的扩展名)。注意,此处的单引号用以界定filename字符串。
如命令行
>>f=imread('d:\\image\\rice.tif');
将TIFF图像rice.tif读入图像数组f。命令行结尾处的分号用于取消输出。若命令行未包含分号,则MATLAB会立即显示该行命令的运算结果。MATLAB桌面工具条上的当前目录窗口会显示MATLAB的当前工作路径。当filename中不包含任何路径信息时,imread会从当前目录中寻找并读取图像文件。
函数size可以给出一幅图像的行数和列数: >>size(f) ans =
256 256
也可使用如下形式自动确定一幅图像的大小: >>[M,N]=size(f);
将返回图像的行数(M)和列数(N)。 2.显示图像
使用函数imshow来显示图像,该函数在显示图像的同时创建了一个图形图像句柄对象,可以通过句柄的一些参数设置显示模式。
例1 显示灰度图像
J=imread('eight.tif');
subplot(121);
imshow(J,[100,200]); %在灰度范围[100,200]内显示图像 subplot(122);
imshow(J,20); %以灰度等级20显示图像
当用imshow显示另一幅图像时,MATLAB会在屏幕上用新图像替换旧图像。为保持第一幅图像并同时显示第二幅图像,可以使用figure函数:
例2 显示二值图像
BW= imread('circles.tif');
imshow(BW) %显示二值图像 figure(2)
imshow(~BW) %显示颜色反转后的二值图像
3.保存图像
使用函数imwrite可以将图像写到磁盘上,该函数的语法为 imwrite(f,'filename')
若filename中不包含路径信息,则imwrite会将文件保存到当前的工作目录中。另一种常见但只适用于JPEG图像的函数语法是
imwrite(f,'filename.jpg','quality',q)
其中,q是一个在0到100之间的整数(由于JPEG压缩,q越小,图像的退化就越严重)。
4.特殊图像显示技术 例3 添加颜色条
I=imread('saturn.tif'); H=[121;000;-1-2-1]; I2=filter2(h,I);
imshow(I2,[]),colorbar
例4 显示多图像序列
mri=uint8(zeros(128,128,1,27)); for frame=1:27
[mri(:,:,:,frame),map]=imread('mri.tif',frame); end
imshow(mri(:,:,:,3),map);
例5 显示多帧图像
mri=uint8(zeros(128,128,1,27)); for frame=1:27
[mri(:,:,:,frame),map]=imread('mri.tif',frame); end
%montage(mri,map);
例6 动画显示
mri=uint8(zeros(128,128,1,27)); for frame=1:27
[mri(:,:,:,frame),map]=imread('mri.tif',frame); end
mov=immovie(mri,map); movie(mov);
练习使用:zoom on, zoom off, imresize, imadjust, subimage, imrotate, imcrop, warp
例7 把真彩色图像映射到柱面上
[x,y,z]=cylinder;
RGB=imread('eight.tif'); warp(x,y,z,RGB);
5.图像颜色转换技术
(1) 褪色函数 imapprox, rgb2ind 例8 图像的褪色
[X,map]=imread('canoe.tif');
[Y,newmap]=imapprox(X,map,20); imshow(X,map)
figure, imshow(Y,newmap)
(2) 练习使用颜色模型转换函数:rgb2hsv, hsv2rgb, ntsc2rgb, rgb2ntsc, rgb2ycbcr, ycbcr2rgb, rgb2gray, im2bw
rgb2hsv 函数—将RGB模型转换为HSV模型。其调用格式如下:
hsvmap=rgb2hsv(rgbmap) 将RGB空间中m×3的色彩表rgbmap转换成HSV色彩空间的颜色映射表hsvmap;
HSV=rgb2hsv(RGB) 将真彩色图像RGB转换为HSV色彩空间中的图像HSV。
rgb2ntsc函数——将RGB模型转换为NTSC模型。其调用格式如下: yiqmap=rgb2ntsc(rgbmap) 将RGB空间中m×3的色彩表rgbmap转换成YIQ色彩空间的颜色映射表yiqmap;
YIQ=rgb2ntsc(RGB) 将真彩色图像RGB转换为YIQ色彩空间中的图像YIQ。
rgb2ycbcr函数——将RGB模型转换为YCbCr模型。其调用格式如下: ycbrmap=rgb2ycbcr(rgbmap) 将RGB空间中的色彩表rgbmap转换成YCbCr空间中的颜色映射表ycbrmap;
Ycbcr=rgb2ycbcr(RGB) 将真彩色图像RGB转换为YCbCr空间中的图像YCbCr。
hsv2rgb函数——将HSV模型转换为RGB模型。其调用格式如下:
rgbmap=hsv2rgb(hsvmap) 将HSV色彩空间的颜色映射表hsvmap转换成RGB空间中的色彩表rgbmap,rgbmap和hsvmap都是m×3的矩阵;
RGB=hsv2rgb(HSV) 表示将HSV色彩空间的图像HSV转换为真彩色图像RGB。
ntsc2rgb函数——将NTSC色彩空间值转换为RGB色彩空间值。其调用格式如下:
rgbmap=ntsc2rgb(yiqmap) 将YIQ空间中m×3的颜色映射表yiqmap转换成RGB空间中的色彩表rgbmap;
RGB=ntsc2rgb(YIQ) 将NTSC色彩空间的图像YIQ转化为真彩色图像RGB。
ycbc2rgb函数——YCbCr模型转换为RGB模型。其调用格式如下:
rgbmap=ycbcr2rgb(ycbcrmap) 将YCbCr色图ycbcrmap转换到RGB色图rgbmap。rgbmap和ycbcrmap都是m×3的数组。
RGB=ycbcr2rgb(YCBCR) 将YCbCr图像YCBCR转换成真彩色图像RGB。
四.撰写技术分析报告(略)