实验 图像处理指导书.docx
《实验 图像处理指导书.docx》由会员分享,可在线阅读,更多相关《实验 图像处理指导书.docx(33页珍藏版)》请在冰豆网上搜索。
实验图像处理指导书
实验一图像的显示与格式变换
一、实验目的
1、练习图像读写命令并进行图像文件格式间的转换;
2、练习索引图像与不同比特图像的存储与转换;
3、熟悉各种模块函数。
二、实验内容
练习图像读写命令imread、imwrite、imshow并进行图像文件格式间的转换。
特别是索引图像与1,4,8,16比特图像的存储与转换。
熟悉下列模块函数
图像文件读写显示.
imread读取图像文件
colorbar显示颜色条.
imshow显示图像.
subplot在一个图形窗口中显示多幅图像
warp纹理映射.
Imagesc图像色彩缩放
图像类型转换(索引图像、灰度图像、二值图像、RGB图像)
索引图像:
灰度图像:
在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像。
这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。
灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;灰度图像在黑色与白色之间还有许多级的颜色深度。
但是,在数字图像领域之外,“黑白图像”也表示“灰度图像”,例如灰度的照片通常叫做“黑白照片”。
二值图像:
是指每个像素不是黑就是白,其灰度值没有中间过渡的图像。
二值图像一般用来描述文字或者图形,其优点是占用空间少,缺点是,当表示人物,风景的图像时,二值图像只能描述其轮廓,不能描述细节。
这时候要用更高的灰度级。
RGB图像:
RGB色彩模式(也翻译为“红绿蓝”,比较少用)是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
一般的
gray2ind将灰度图像转换为索引图像
ind2gray将索引图像转换为灰度图像
ind2rgb将索引图像转换为RGB图像
mat2gray通过比例化数据,将矩阵中的数据转换为灰度图像
rgb2gray将RGB图像转换为灰度图像
rgb2ind将RGB图像转换为索引图像
三、思考题
怎样将数据矩阵转换为灰度图像,并映射到柱面上?
四、实验报告要求
写实验报告,并附
(1)-(7)的实验数据及图像。
五、实验步骤
(1)从硬盘读入cameraman.tif图像(用imread函数).
(2)在图形窗口中显示图像(用imageorimshow函数).
(3)在图像旁边显示颜色条(用colorbar函数)..
(4)在柱面上画cameraman图像(用warp函数).
(5)将灰度图像转变为索引图像
(6)将索引图像转变为其他图像
(7)将真彩图像转换为其他图像
六、附参考程序
(1)显示指定灰度范围的图像
I=imread('D:
\matlab\work\shiyanzhidao\tuxiang\rice.png');
imshow(I,[100200]);title('显示指定灰度范围的图像');
图1.1显示指定灰度范围的图像
(2)特殊显示图像
I=imread('D:
\matlab\work\shiyanzhidao\tuxiang\rice.png');
imshow(I,20);title('按指定的灰度等级显示图像');
colorbar;
[x,y,z]=cylinder;
figure,warp(x,y,z,I);title('纹理映射图像');
图1.2特殊显示图像
(3)显示灰度缩放的图像
I=imread('D:
\matlab\work\shiyanzhidao\tuxiang\moon.tif');
imshow(I);title('原始图像');
figure,imagesc(I,[0256]);
colormap(gray);title('灰度缩放的图像');
图1.3显示灰度缩放的图像
(4)显示索引图像
[x,map]=imread('D:
\matlab\work\shiyanzhidao\tuxiang\canoe.tif');
image(x);title('显示索引图像');
colormap(map);
图1.4显示索引图像
(5)灰度图像转变为索引图像
I=imread('D:
\matlab\work\shiyanzhidao\tuxiang\rice.png');
[x1,map]=gray2ind(I,6);
x2=grayslice(I,16);
imshow(I);title('原始图像');
figure,imshow(x1,map);title('按指定的灰度级数转变的索引图像');
figure,imshow(x2,hot(16));title('按均匀量化等级转换的索引图像');
图1.5灰度图像转变为索引图像
(6)索引图像转变为其他图像
[I,map]=imread('D:
\matlab\work\shiyanzhidao\tuxiang\trees.tif');
gray=ind2gray(I,map);
RGB=ind2rgb(I,map);
BW=im2bw(I,map,0.2);
imshow(I);title('原始图像');
figure,imshow(BW);title('二值图像');
figure,imshow(gray);title('灰度图像');
figure,image(RGB);title('真彩图像');
图1.6索引图像转变为其他图像
(7)真彩图像转换为其他图像
[x,map]=imread('D:
\matlab\work\shiyanzhidao\tuxiang\canoe.tif');
newmap=rgb2gray(map);
subplot(2,2,1);imshow(x,map);title('原始图像');
subplot(2,2,2);imshow(x);title('灰度图像');
subplot(2,2,3);imshow(x,newmap);title('灰度索引图像');
图1.7真彩图像转换为其他图像
实验二图像直方图变换
一、实验目的
1.掌握阈值的选择;
2、熟练掌握相应模块的函数。
3、对于不同的阈值进行直方图的变换。
二、实验内容
灰度变换是图像增强的一种重要手段,使图像对比度扩展,图像更加清晰,特征更加明显。
灰度级的直方图给出了一幅图像概貌的描述,通过修改灰度直方图来得到图像增强。
练习图像灰度调整函数imhist、imadjust、histeq、adapthisteq、decorrestretch并进行图像灰度变换。
.
imhist 显示图像直方图
imadjust 将灰度值调整到一个指定的范围.
histeq 直方图均衡化.
adapthisteq有限对比适应性直方图均衡化.
decorrestretch去相关拉伸.
三、思考题
对光照不均的图像rice.tif进行光照校正。
提示:
(1)首先估计图像背景的灰度。
一般是取图像中每个32*32大小的图形块中的最小值作为图像背景的灰度。
(2)将粗略估计出的背静灰度矩阵扩展成和原始图像大小相同的矩阵。
(3)从原始图像中减去前两步计算出的背静灰度矩阵,校正光照的不均匀;但此操做同时也会导致前景图像变暗。
(4)通过调整图像的灰度校正。
四、实验报告要求
(1)简述灰度直方图均衡化原理
(2)总结在实验中遇到的问题
(3)附
(1)-(4)的实验数据及图像。
五、实验步骤
(1)计算出一幅灰度图像的直方图(用imhist函数)
(2)对输入图像的直方图均衡化、规定化处理(用histeq函数)
(3)对图像对比度的变换(用imadjust函数)。
(4)图像二值化(选取一个域值,将图像变为黑白图像)
六、附参考程序
(1)计算出一幅灰度图像的直方图
clear;
closeall;
I=imread('D:
\matlab\work\shiyanzhidao\tuxiang\rice.PNG');
figure;
subplot(2,2,1);imshow(I);title('原始图像');
subplot(2,2,2);imhist(I);title('原始图像直方图');
图2.1灰度图像的直方图
(2)对输入图像的直方图均衡化、规定化处理
clear;
closeall;
I=imread('D:
\matlab\work\shiyanzhidao\tuxiang\tire.tif');
figure,
subplot(2,2,1);imshow(I);title('原始图像');
subplot(2,2,2);imhist(I);title('原始图像直方图');
J1=histeq(I);
subplot(2,2,3);imshow(J);title('直方图均衡化图像');
subplot(2,2,4);imhist(J1);title('均衡化图像直方图');
J2=adapthisteq(I);
figure,
subplot(2,2,1);imshow(J2);title('有限对比适应性直方图均衡化图像');
subplot(2,2,2);imhist(J2);title('有限对比适应性均衡化图像直方图');
[J1,T]=histeq(I);
figure,plot((0:
255)/255,T);title('均衡化变换曲线');
hgram=0:
255;
J3=histeq(I,hgram);
figure,
subplot(1,2,1);imshow(J3);title('直方图规定化图像');
subplot(1,2,2);imhist(J3);title('规定化图像直方图');
图2.2输入图像的直方图均衡化、规定化处理
(3)对图像对比度的变换
[X,map]=imread('D:
\matlab\work\shiyanzhidao\tuxiang\forest.tif');
I=ind2gray(X,map);
J=imadjust(I,[00.2],[0.51]);
figure,
subplot(2,2,1);imshow(I);title('原始图像');
subplot(2,2,2);imshow(J);title('指定调整限制图像');
J1=imadjust(I,stretchlim(I),[01]);
subplot(2,2,3);imshow(J1);title('自动设置调整限制图像');
J1=imadjust(I,[],[],0.5);
J2=imadjust(I,[],[],1);
J3=imadjust(I,[],[],2);
figure,
subplot(2,2,1);imshow(J1);title('gamma为0.5的变换');
subplot(2,2,2);imshow(J2);title('gamma为1的变换');
subplot(2,2,3);imshow(J3);title('gamma为2的变换');
图2.3图像对比度的变换
(4)图像二值化
clear;
closeall;
I=imread('D:
\matlab\work\shiyanzhidao\tuxiang\pout.tif');
figure;
subplot(2,2,1);imshow(I);title('原始图像');
subplot(2,2,2);imhist(I);title('原始图像直方图');
BW=im2bw(I,0.4);
subplot(2,2,3);imshow(BW);title('二值图像');
subplot(2,2,4);imhist(BW);title('二值图像直方图');
图2.4图像二值化
(5)思考题参考程序
I=imread('D:
\matlab\work\shiyanzhidao\tuxiang\rice.png');
subplot(2,2,1);imshow(I);title('原始图像');
I1=im2double(I);
bg32=blkproc(I1,[3232],'min(x(:
))');
bg256=imresize(bg32,[256256],'bicubic');
subplot(2,2,2);imshow(bg256);title('背景灰度扩展结果');
d=I1-bg256;
subplot(2,2,3);imshow(d);title('原始图像减去背景图像');
adjustI=imadjust(d,[0max(d(:
))],[01],1);
subplot(2,2,4);imshow(adjustI);title('最终处理结果');
图2.5图像光照不均的校正
实验三模板运算
一、实验目的
1、掌握邻域平均模板对图像进行平滑滤波的原理;
2、掌握不同算子对模糊图像进行图像边缘锐化的原理;
3、熟练掌握相应模块的函数。
二、实验内容
平滑的目的是模糊和消除噪声,在空域中用模板卷积完成,在频域中用低通滤波器完成。
数字图像中往往存在各种类型的噪声,工具箱提供了多个不同的函数来删除和减少图像中的噪声。
锐化的目的是使模糊的图像变清晰,在空域中用模板卷积完成,在频域中用高通滤波器完成。
工具箱提供了多个不同的函数来进行锐化处理。
练习图像平滑函数filter2、medfilter2、wiener2并进行图像去噪。
练习图像锐化算子laplacian算子、sobel算子、prewitt算子、log算子及函数filter2、fspecial并进行图像锐化。
.
imnoise 在图像上添加不同种类的噪声
filter2 实现均值滤波器滤波.
medfilter2 实现中值滤波器滤波.
wiener实现wiener滤波.
fspecial创建一个指定的滤波器模板
filter2滤波函数
三、思考题
对含有较少噪声的图像facets.mat进行去噪。
四、实验报告要求
(1)简述图像平滑和低通滤波方法的原理和图像高通滤波和锐化的方法原理。
(2)总结在实验中遇到的问题
(3)附
(1)-(7)的实验数据及图像。
五、实验步骤
(1)加入噪声
(2)利用低通邻域平均模板进行平滑
(3)利用中值滤波进行平滑
(4)利用wiener滤波器进行平滑
(5)创建不同的锐化滤波器
(6)对图像进行锐化
(7)比较各种锐化的效果
六、附参考程序
(1)不同模板的均值滤波比较
I=imread('D:
\matlab\work\shiyanzhidao\tuxiang\eight.tif');
J=imnoise(I,'salt&pepper',0.02);
subplot(2,2,1);imshow(I);title('原始图像');
subplot(2,2,2);imshow(J);title('噪声图像');
k1=filter2(fspecial('average',3),J)/255;
k2=filter2(fspecial('average',5),J)/255;
k3=filter2(fspecial('average',7),J)/255;
figure,
subplot(2,2,1);imshow(k1);title('3*3模板均值滤波');
subplot(2,2,2);imshow(k2);title('5*5模板均值滤波');
subplot(2,2,3);imshow(k3);title('7*7模板均值滤波');
图3.1不同模板的均值滤波比较
(2)不同模板的中值滤波比较
I=imread('D:
\matlab\work\shiyanzhidao\tuxiang\eight.tif');
J=imnoise(I,'salt&pepper',0.02);
subplot(2,2,1);imshow(I);title('原始图像');
subplot(2,2,2);imshow(J);title('噪声图像');
k1=medfilt2(J,[33]);
k1=medfilt2(J,[55]);
k1=medfilt2(J,[77]);
figure,
subplot(2,2,1);imshow(k1);title('3*3模板中值滤波');
subplot(2,2,2);imshow(k2);title('5*5模板中值滤波');
subplot(2,2,3);imshow(k3);title('7*7模板中值滤波');
图3.2不同模板的中值滤波比较
(3)wiener滤波
I=imread('D:
\matlab\work\shiyanzhidao\tuxiang\eight.tif');
J=imnoise(I,'gaussian',0,0.005);
subplot(2,2,1);imshow(I);title('原始图像');
subplot(2,2,2);imshow(J);title('噪声图像');
k=wiener2(J,[55]);
subplot(2,2,3);imshow(k);title('wiener滤波图像');
图3.3wiener滤波
(4)不同锐化滤波器锐化效果比较
I=imread('D:
\matlab\work\shiyanzhidao\tuxiang\rice.png');
figure,subplot(2,3,1);imshow(I);title('原始图像');
h1=fspecial('laplacian');
h2=fspecial('sobel');
h3=fspecial('prewitt');
h4=fspecial('log');
k1=filter2(h1,I);
k2=filter2(h2,I);
k3=filter2(h3,I);
k4=filter2(h4,I);
subplot(2,3,2);imshow(k1);title('laplacian算子滤波');
subplot(2,3,3);imshow(k2);title('sobel算子滤波');
subplot(2,3,4);imshow(k3);title('prewitt算子滤波');
subplot(2,3,5);imshow(k4);title('log算子滤波');
图3.4不同锐化滤波器锐化效果比较
实验六形态学变换
一、实验目的
1、掌握结构元素选取方法;
2、熟练掌握二值形态学的基本运算函数;
3、理解图像的击中、击不中变换;
4、了解图像细化函数。
二、实验内容
练习使用结构元素进行二值形态学的基本运算,使用细化、骨架函数对二值图像进行细化和提取骨架。
.
strel创建任意大小和形状的STREL对象
imdilate膨胀运算函数
imerode腐蚀运算函数
imopen开运算函数
imclose闭运算函数
imtophat高帽变换
imbothat低帽变换
bwmorph对图像做指定的形态运算函数
三、思考题
检测board.png图像中的微小结构。
提示:
(1)对原始图像进行阈值分割,得到图像中微小的物体的图像。
(2)对原始图像进行闭合、开启运算,得到图像中较大的物体的图像。
(3)对第1步、第2步的结果进行与操作,得到结果。
四、实验报告要求
(1)简述图像分割的方法原理,比较不同阈值图像分割的结果。
(2)总结在实验中遇到的问题
(3)附
(1)-(7)的实验数据及图像。
五、实验步骤
(1)创建不同的结构元素
(2)对图像进行膨胀运算
(3)对图像进行腐蚀运算
(4)对图像进行开运算
(5)对图像进行闭运算
(6)细化图像,提取骨架
(7)对图像做高帽、低帽变换
六、附参考程序
(1)基本形态学运算比较
bw=imread('D:
\matlab\work\shiyanzhidao\tuxiang\circbw.tif');
se=strel('line',11,90);
bw21=imdilate(bw,se);
bw22=imerode(bw,se);
bw23=bwmorph(bw,'open');
bw24=bwmorph(bw,'close');
subplot(2,3,1);imshow(bw);title('原始图像');
subplot(2,3,2);imshow(bw21);title('膨胀图像');
subplot(2,3,3);imshow(bw22);title('腐蚀图像');
subplot(2,3,4);imshow(bw23);title('开启运算图像');
subplot(2,3,5);imshow(bw24);title('闭合运算图像');
图6.1基本形态学运算比较
(2)细化图像,提取骨架
bw=imread('D:
\matlab\work\shiyanzhidao\tuxiang\circles.png');
bw21=bwmorph(bw,'remove');
bw22=bwmorph(bw,'skel',inf);
bw23=bwmorph(bw,'thin',inf);
subplot(2,2,1);imshow(bw);title('原始图像');
subplot(2,2,2);imshow(bw21);title('去除内点图像');
subplot(2,2,3);imshow(bw22);title('图像骨架');
subplot(2,2,4);imshow(bw23);title('图像细化');
图6.2细化图像,提取骨架
(3)对图像做高帽、低帽变换
I=imread('D:
\matlab\work\shiyanzhidao\tuxiang\rice.png');
se=strel('disk',12);
J1=imtophat(I,se);J2=imbothat(I,se);
k1=imadjust(J1,stretchlim(J1));
k2=imadjust(J2,stretchlim(J2));
subplot(2,3,1);imshow(I);title('原始图像');
subplot(2,3,2);imshow(J1);title('高帽变换图像');
subplot(2,3,3);imshow(J2);title('低帽变换图像');
subplot(2,3,5);imshow(k1);title('高帽对比