《数字图像处理》实验指导书.docx

上传人:b****5 文档编号:8202586 上传时间:2023-01-29 格式:DOCX 页数:27 大小:124.18KB
下载 相关 举报
《数字图像处理》实验指导书.docx_第1页
第1页 / 共27页
《数字图像处理》实验指导书.docx_第2页
第2页 / 共27页
《数字图像处理》实验指导书.docx_第3页
第3页 / 共27页
《数字图像处理》实验指导书.docx_第4页
第4页 / 共27页
《数字图像处理》实验指导书.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

《数字图像处理》实验指导书.docx

《《数字图像处理》实验指导书.docx》由会员分享,可在线阅读,更多相关《《数字图像处理》实验指导书.docx(27页珍藏版)》请在冰豆网上搜索。

《数字图像处理》实验指导书.docx

《数字图像处理》实验指导书

《数字图像处理》

实验指导书

 

山东建筑大学

信息与电气工程学院

2011年3月

目录

实验守则……………………………………………………………………1

实验一图像增强与平滑…………………………………………………2

实验二图像分割与边缘检测…………………………………………5

实验三图像的几何变换………………………………………………7

实验四图像形态学处理………………………………………………9

实验五频域变换………………………………………………………12

实验六数字图像处理应用………………………………………14

附录1MATLAB简介……………………………………………………16

附录2实验报告范例---LOG滤波器提取边缘………………………17

实验守则

为了加强实验室管理,提高实验教学质量,培养学生理论联系实际的学风,提高实际操作技能,确保人身和设备的安全,特制定如下守则:

1.实验前要认真预习,了解实验目的、实验原理、实验线路、实验步骤及欲测的物理量。

熟悉和实验有关的仪器设备的用途、使用方法及注意事项。

能回答指导教师的提问。

2.每个实验小组要选出组长1名,实验时要认真分工,轮流当记录员和操作者,以便每个人都能得到较全面的训练。

实验线路接好后,各组学生要自行检查,然后请指导教师检查,经检查无误后方可接通电源。

改接线路必须先断开电源,以免触电及损坏仪表。

改接后的线路仍需经教师检查。

3.实验时应听从教师指导,严格按实验步骤进行,如实记录实验数据,积极思考和分析实验中发生的现象。

实验中如遇事故应立即关断电源、保持现场,报告指导教师及时处理。

如有损坏仪器或器件,要填写事故原因及报损单。

4.实验完毕应立即关断电源,把实验记录交指导教师检查合格后方可拆除线路。

如发现实验记录有不当和错误之外,应立即重作。

要把所有仪器、仪表、工具、导线整理好。

经指导教师清点后方可离开实验室。

5.要爱护公物。

实验室所有的仪表、工具、器件等一律不得擅自带出。

实验中如需更换仪器、仪表、工具、器件等,必须经指导教师同意。

不得擅自更换或乱拿他组物品。

未经允许,不得擅自拆卸实验用的仪器、设备。

6.实验时要严肃认真,讲究文明、礼貌,要保持安静和室内整洁,不随地吐痰和乱抛杂物。

实验完毕要打扫实验室卫生。

7.书写实验报告时,语言要力求简练,书写应端正,作图应正规。

实验报告一般应包括以下内容:

(1)实验目的;所用仪器、仪表、器件的名称及规格型号;实验电路原理图。

(2)实验项目(指导书中的详细内容不必抄录);测试记录表;波形图及现象记录。

(3)实验数据整理,计算后的结果、及根据实验数据绘制的曲线。

(4)实验分析,应包括与理论计算值的比较、现象分析。

8.关于实验考核:

学生在实验课中的实际技能水平与实验报告的质量是评定本课程实验成绩的标准。

因各种原因缺做实验和缺交实验报告者,实验成绩要受影响。

实验一图像增强与平滑

一.实验目的及要求

1.了解MATLAB的操作环境和基本功能。

2.掌握MATLAB中图像增强与平滑的函数的使用方法。

3.加深理解图像增强与平滑的算法原理。

二、实验内容

(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。

熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

(可将每段程序保存为一个.m文件)

1.直方图均衡化

clearall;closeall%CleartheMATLABworkspaceofanyvariables

%andcloseopenfigurewindows.

I=imread('pout.tif');%Readsthesampleimages‘pout.tif’,andstoresitin

imshow(I)%anarraynamedI.displaytheimage

figure,imhist(I)%Createahistogramoftheimageanddisplayitin

%anewfigurewindow.

[I2,T]=histeq(I);%Histogramequalization.

figure,imshow(I2)%Displaythenewequalizedimage,I2,inanewfigurewindow.

figure,imhist(I2)%CreateahistogramoftheequalizedimageI2.

figure,plot((0:

255)/255,T);%plotthetransformationcurve.

imwrite(I2,'pout2.png');%WritethenewlyadjustedimageI2toadiskfilenamed

%‘pout2.png’.

imfinfo('pout2.png')%Checkthecontentsofthenewlywrittenfile

注意:

imadjust()

功能:

调整图像灰度值或颜色映像表,也可实现伽马校正。

语法:

J=imadjust(I,[low_inhigh_in],[low_outhigh_out],gamma)

newmap=imadjust(map,[low_inhigh_in],[low_outhigh_out],gamma)

RGB2=imadjust(RGB1,...)

2.直接灰度变换

clearall;closeall

I=imread('cameraman.tif');

J=imadjust(I,[00.2],[0.51]);

imshow(I)

figure,imshow(J)

[X,map]=imread('forest.tif');

figure,imshow(X,map)

I2=ind2gray(X,map);

J2=imadjust(I2,[],[],0.5);

figure,imshow(I2)

figure,imshow(J2)

J3=imadjust(I2,[],[],1.5);

figure,imshow(J3)

helpimadjust%Displaytheimadjust()functioninformation.

3.空域平滑滤波(模糊、去噪)

clearall;closeall

I=imread('eight.tif');

h1=ones(3,3)/9;

h2=ones(5,5)/25;

I1=imfilter(I,h1);

I2=imfilter(I,h2);

figure

(1),imshow(I),title('OriginalImage');

figure

(2),imshow(I1),title('FilteredImageWith3*3')

figure(3),imshow(I2),title('FilteredImageWith5*5')

%加入Gaussian噪声

J1=imnoise(I,'gaussian',0,0.005);

%加入椒盐噪声

J2=imnoise(I,'salt&pepper',0.02);

%对J1、J2进行平均值平滑滤波

K1=imfilter(J1,fspecial('average',3));

K2=imfilter(J2,fspecial('average',3));

figure(4);

subplot(2,2,1),imshow(J1),title('gaussian');

subplot(2,2,2),imshow(J2),title('salt&pepper');

subplot(2,2,3),imshow(K1),title('average');

subplot(2,2,4),imshow(K2);

%对J1、J2进行中值滤波

K3=medfilt2(J1,[33]);

K4=medfilt2(J2,[33]);

figure(5);

subplot(2,2,1),imshow(J1),title('gaussian');

subplot(2,2,2),imshow(J2),title('salt&pepper');

subplot(2,2,3),imshow(K3),title('Medianfiltering');

subplot(2,2,4),imshow(K4)

4.空域锐化滤波

clearall;closeall

I=imread('moon.tif');

w=fspecial('laplacian',0)

w8=[1,1,1;1,-8,1;1,1,1]

I1=imfilter(I,w,'replicate');

figure

(1);imshow(I),title('OriginalImage');

figure

(2),imshow(I1),title('LaplacianImage');

f=im2double(I);

f1=imfilter(f,w,'replicate');

figure(3),imshow(f1,[]),title('LaplacianImage');

f2=imfilter(f,w8,'replicate');

f4=f-f1;

f8=f-f2;

figure(4),imshow(f4);

figure(5),imshow(f8);

5.图像的伪彩色处理—密度分割

clearall,closeall

I=imread('ngc4024m.tif');

X=grayslice(I,16);

imshow(I),title('OriginalImage')

figure,imshow(X,jet(16)),title('IndexColorImage')

(二)采用MATLAB底层函数编程实现以下灰度线性变换

假定原图像f(x,y)的灰度范围为[a,b],希望变换后图像g(x,y)的灰度范围扩展至[c,d],则线性变换可表示为:

用MATLAB底层函数编程实现上述变换函数。

观察图像‘pout.tif’的灰度直方图,选择合适的参数[a,b]、[c,d]对图像‘pout.tif’进行灰度变换,以获得满意的视觉效果。

三、实验设备

1.PIII以上微机;

2.MATLAB6.5;

四、预习与思考

1.预习实验内容,阅读教材熟悉实验原理;

2.查阅资料,熟悉MATLAB的操作环境和基本功能。

熟悉实验中涉及的有关函数。

3.利用课余时间,用MATLAB底层函数编程实现实验内容

(二)中的灰度线性变换。

4.你能否给出实现样例程序功能的其它方法?

五、实验报告要求

1.简述试验的目的和试验原理;

2.叙述各段程序功能,改变有关函数的参数,分析比较实验结果;

3.打印出所编写的实验程序。

4.写出本实验的心得体会及意见。

实验二图像分割与边缘检测

一.实验目的及要求

1.利用MATLAB研究图像分割与边缘检测的常用算法原理;

2.掌握MATLAB图像域值分割与边缘检测函数的使用方法;

3.了解边缘检测的算法和用途,比较Sobel、Prewitt、Canny等算子边缘检测的差异。

二、实验内容

(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。

熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

1.图像阈值分割

clearall,closeall;

I=imread('rice.tif');

figure

(1),imshow(I)

figure

(2);imhist(I)

T=120/255;

Ibw1=im2bw(I,T);%选择阈值T=120/255对图像二值化;

figure(3);

subplot(1,2,1),imshow(Ibw1);

T=graythresh(I);%采用Otsu方法计算最优阈值T对图像二值化;

L=uint8(T*255)

Ibw2=im2bw(I,T);

subplot(1,2,2),imshow(Ibw2);

helpim2bw;

helpgraythresh;

(令T取不同值,重做上述试验,观察试验结果)

2.边缘检测

clearall,closeall;

I=imread('rice.tif');

BW1=edge(I,'sobel');

BW2=edge(I,'canny');

BW3=edge(I,'prewitt');

BW4=edge(I,'roberts');

BW5=edge(I,'log');

figure

(1),imshow(I),title('OriginalImage');

figure

(2),imshow(BW1),title('sobel');

figure(3),imshow(BW2),title('canny');

figure(4),imshow(BW3),title('prewitt');

figure(5),imshow(BW4),title('roberts');

figure(6),imshow(BW5),title('log');

%在完成上述试验后,查看函数edge()使用说明。

helpedge

%仔细阅读函数edge()使用说明后,研究IPT提供的边缘检测演示程序。

edgedemo

(二)利用MATLAB熟悉并验证其它图像分割方法

(三)采用MATLAB编程实现自动全局阈值算法,对图像'rice.tif'进行二值化分割

算法步骤:

1)选取一个的初始估计值T;

2)用T分割图像。

这样便会生成两组像素集合:

G1由所有灰度值大于T的像素组成,而G2由所有灰度值小于或等于T的像素组成。

3)对G1和G2中所有像素计算平均灰度值1和2。

4)计算新的阈值:

T=(1+2)/2

5)重复步骤

(2)到(4),直到逐次迭代所得到的T值之差小于一个事先定义的参数To,即,如果|Tn–Tn-1|

三、实验设备

1.PIII以上微机;

2.MATLAB6.5;

四、预习与思考

1.预习实验内容,阅读教材熟悉实验原理;

2.查阅资料,熟悉实验中涉及的有关MATLAB函数;

2.利用课余时间,采用MATLAB底层函数编程实现实验内容

(二)中的自动全局阈值算法。

五、实验报告要求

1.简述试验的目的和试验原理;

2.叙述各段程序功能,改变有关函数的参数,分析比较实验结果;

3.打印出所编写的实验程序。

4.写出本实验的心得体会及意见。

 

实验三图像的几何变换

一.实验目的及要求

掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其MATLAB编程实现方法。

二、实验内容

(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。

熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

1.图像缩放

clearall,closeall

I=imread('cameraman.tif');

Scale=1.35;%将图像放大1.35倍

J1=imresize(I,Scale,'nearest');%usingthenearestneighborinterpolation

J2=imresize(I,Scale,'bilinear');%usingthebilinearinterpolation

imshow(I),title('OriginalImage');

figure,imshow(J1),title('ResizedImage--usingthenearestneighborinterpolation');

figure,imshow(J2),title('ResizedImage--usingthebilinearinterpolation');

%查看imresize使用帮助

helpimresize

说明:

注意观察不同插值方法的图像表现;

改变图像缩放因子Scale,重做上述实验。

2.图像旋转

clearall,closeall

I=imread('cameraman.tif');

Theta=45;%将图像逆时针旋转45。

J1=imrotate(I,Theta,'nearest');%usingthenearestneighborinterpolation

%andenlargetheoutputimage

Theta=-45;%将图像顺时针旋转45。

J2=imrotate(I,Theta,'bilinear','crop');%usingthebilinearinterpolation

%andcropstheoutputimage

imshow(I),title('OriginalImage');

figure,imshow(J1),title('RotatedImage--usingthenearestneighborinterpolation');

figure,imshow(J2),title('RotatedImage--usingthebilinearinterpolation');

%查看imrotate使用帮助

helpimrotate

说明:

注意观察不同插值方法和输出图像后处理方法的图像表现;

改变旋转角度大小和方向,重做上述实验。

3.图像水平镜象

clearall,closeall

I=imread('cameraman.tif');

I1=flipdim(I,2);

I2=flipdim(I,1);

figure

(1),subplot(1,2,1),imshow(I);

subplot(1,2,2),imshow(I1);

figure

(2),subplot(2,1,1),imshow(I);

subplot(2,1,2),imshow(I2);

(二)用MATLAB编程实现以下图像几何变换

1.图像平移

2.图像转置

图像的转置是将给定图像像素的x坐标和y坐标互换的几何变换,设点P0(x0,y0)转置后的对应点为P(x,y),转置变换可表述为:

,对应的逆变换为:

转置后图像的宽、高发生改变,即输出图像的高度为原始图像的宽度,输出图像的宽度为原始图像的高度。

三、实验设备

1.PIII以上微机;

2.MATLAB6.5;

四、预习与思考

1.预习实验内容,阅读教材熟悉实验原理;

2.查阅资料,熟悉实验中涉及的有关MATLAB函数;

3.利用课余时间,采用MATLAB底层函数编程实现实验内容

(二)中的图像平移、图像转置等几何变换。

五、实验报告要求

1.简述试验的目的和试验原理;

2.叙述各段程序功能,改变有关函数的参数,分析比较实验结果;

3.打印出所编写的实验程序。

4.写出本实验的心得体会及意见。

实验四图像形态学处理

一.实验目的及要求

1.利用MATLAB研究二值形态学图像处理常用算法;

2.掌握MATLAB形态学图像处理基本操作函数的使用方法;

3.了了解形态学的基本应用。

二、实验内容

(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。

熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

1.膨胀与腐蚀(DilationandErosion)

(1)对简单二值图像进行膨胀与腐蚀

clearall,closeall

BW=zeros(9,10);

BW(4:

6,4:

7)=1;

BW

SE=strel('square',3)

BW1=imdilate(BW,SE)

BW2=imerode(BW,SE)

figure

(1),

subplot(1,2,1),imshow(BW,'notruesize'),title('OriginalImage');

subplot(1,2,2),imshow(BW1,'notruesize'),title('DilatedImage');

figure

(2),

subplot(1,2,1),imshow(BW,'notruesize'),title('OriginalImage');

subplot(1,2,2),imshow(BW2,'notruesize'),title('ErodedImage');

(2)对文本图像进行膨胀与腐蚀

clearall,closeall

I=imread('text.tif');

SE=[0,1,0;1,1,1;0,1,0]

BW1=imdilate(I,SE);

BW2=imerode(I,SE);

figure

(1),

subplot(1,2,1),imshow(I,'notruesize'),title('OriginalImage');

subplot(1,2,2),imshow(BW1,'notruesize'),title('DilatedImage');

figure

(2),

subplot(1,2,1),imshow(I,'notruesize'),title('OriginalImage');

subplot(1,2,2),imshow(BW2,'notruesize'),title('ErodedImage');

2.开、闭运算(OpenandClose)

clearall,closeall

I=imread('nodules1.tif');

bw=~im2bw(I,graythresh(I));

se=strel('disk',5);

bw2=imopen(bw,se);

subplot(1,2,1),imshow(bw),title('ThresholdedImage')

subplot(1,2,2),imshow(bw2),title('Afteropening')

bw3=imclose(bw,se);

figure;

subplot(1,2,1),imshow(bw,'truesize'),title('ThresholdedImage')

subplot(1,2,2),imshow(bw3,'tr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1