整理河北工业大学《计算机图像处理》实验指导书.docx

上传人:b****4 文档编号:6566723 上传时间:2023-05-10 格式:DOCX 页数:22 大小:939.15KB
下载 相关 举报
整理河北工业大学《计算机图像处理》实验指导书.docx_第1页
第1页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第2页
第2页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第3页
第3页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第4页
第4页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第5页
第5页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第6页
第6页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第7页
第7页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第8页
第8页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第9页
第9页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第10页
第10页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第11页
第11页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第12页
第12页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第13页
第13页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第14页
第14页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第15页
第15页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第16页
第16页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第17页
第17页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第18页
第18页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第19页
第19页 / 共22页
整理河北工业大学《计算机图像处理》实验指导书.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

整理河北工业大学《计算机图像处理》实验指导书.docx

《整理河北工业大学《计算机图像处理》实验指导书.docx》由会员分享,可在线阅读,更多相关《整理河北工业大学《计算机图像处理》实验指导书.docx(22页珍藏版)》请在冰点文库上搜索。

整理河北工业大学《计算机图像处理》实验指导书.docx

整理河北工业大学《计算机图像处理》实验指导书

实验一MATLAB数字图像处理基本操作

一、实验目的与要求

1.熟悉MATLAB软件的开发环境、基本操作以及图像处理工具箱,为编写图像处理程序奠定基础。

2.掌握二值、灰度和彩色图像的读、写和显示方法,以及图像的高、宽、颜色等参数的获取方法。

3.根据实验内容进行问题的简单分析和初步编码。

二、实验相关知识

1、Matlab软件ImageProcessingToolbox简介

MatLab的原文是MatrixLaboratory,它包括若干个工具箱,如CommunicationsToolbox、ControlSystemToolbox、NeuralNetworkToolbox、WaveletToolbox等等,其中ImageProcessingToolbox图像处理工具箱可以完成GeometricOperations、Enhancement、ColorSegmentation、ImageTransformation、ImageAnalysis、MorphologicalOperations等操作。

在MatLab中,图像就是一个矩阵,在进行处理时当作一个变量即可,因此运算的书写十分简洁,故MatLab有草稿纸式的算法语言之称。

例如:

J=I+50;%为原始图像I加上一常数50,并将结果赋予变量J,其效果相当于得到一幅加亮的图像J

以此类推可以书写出减法J=I-0.5;乘法J=I*2;除法J=I/3;等等。

利用MatLab提供的imread和imwrite函数可以完成对图像文件的读写操作,它们所支持的一些常用的图像文件格式见表1-1。

表1-1MATLAB支持的一些常用的图像文件格式

格式名称

描述

可识别的扩展符

TIFF

加标签的图像文件格式

.tiff、.tif

JPEG

联合图像专家组

.jpg、.jpeg

GIF

图像交换格式

.gif

BMP

Windows位图

.bmp

PNG

可移植网络图形

.png

XWD

XWindow转储

.xwd

MatLab提供了两种运行方式,即命令行方式和M文件方式。

打开MatLab界面后,在Command窗口的提示符号“>>”下直接键入命令即可运行,如键入:

>>clear%执行本命令将会清除内存中的全部变量

>>figure

(1);%生成一个图像窗口1

>>I=imread('e:

lena.bmp');%将硬盘e:

根目录上的图像文件lena.bmp的数据读入矩阵变量I中

>>imshow(I);%在当前的图像窗口中显示图像矩阵I

>>title('原始图像');%在当前的图像窗口中加上标题

但为了能够对程序进行调试和重复应用,我们要求用M文件的方式完成实验中各个程序的编写。

2、数字图像的表示和类别

根据图像数据矩阵解释方法的不同,MATLAB把其处理为四类:

(1)亮度图像(Intensityimages)

一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。

若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。

若图像是double类,则像素取值就是浮点数。

规定双精度型归一化亮度图像的取值范围是[0,1]。

(2)二值图像(Binaryimages)

一幅二值图像是一个取值只有0和1的逻辑数组。

而一幅取值只包含0和1的uint8类数组,在MATLAB中并不认为是二值图像。

使用logical函数可以把数值数组转化为逻辑数组,其语法为B=logical(A);其中A是由0和1构成的数值数组。

要测试一个数组是否为逻辑数组,可以使用函数islogical(C);若C是逻辑数组,则该函数返回1;否则,返回0。

(3)索引图像(Indexedimages)

索引颜色通常也称为映射颜色,在这种模式下,颜色都是预先定义的,并且可供选用的一组颜色也很有限,索引颜色的图像最多只能显示256种颜色。

一幅索引颜色图像在图像文件里定义,当打开该文件时,构成该图像具体颜色的索引值就被读入程序里,然后根据索引值找到最终的颜色。

(4)RGB图像(RGBimages)

一幅RGB图像就是彩色像素的一个M×N×3数组,其中每一个彩色像素点都是在特定空间位置上相对应的红、绿、蓝三个分量。

按照惯例,形成一幅RGB彩色图像的三个矩阵常称为红、绿或蓝分量图像。

令fR,fG和fB分别代表三种RGB分量图像。

一幅RGB图像就利用cat(级联)操作将这些分量图像组合成彩色图像:

rgb_image=cat(3,fR,fG,fB)在操作中,图像按顺序放置。

3、数据类和图像类型间的转化

表1-2中列出了MATLAB和ImageProcessingToolbox为表示图像所支持的各种数据类。

表中的前8项称为数值数据类,第9项称为字符类,最后一项称为逻辑数据类。

表1-3列出了工具箱中提供的一些必要函数,以便在图像类和数据类之间进行转化。

表1-2MATLAB和IPT支持数据类型

名称

描述

double

双精度浮点数,范围为

uint8

无符号8比特整数,范围为[0255]

uint16

无符号16比特整数,范围为[065536]

uint32

无符号32比特整数,范围为[04294967295]

int8

有符号8比特整数,范围为[-128127]

int16

有符号16比特整数,范围为[-3276832767]

int32

有符号32比特整数,范围为[-21474836482147483647]

single

单精度浮点数,范围为

char

字符

logical

值为0或1

表1-3格式转换函数

名称

将输入转化为

有效的输入图像数据类

im2uint8

uint8

logical,uint8,uint16和doulbe

im2uint16

uint16

logical,uint8,uint16和doulbe

mat2gray

double,范围为[01]

double

im2double

double

logical,uint8,uint16和doulbe

im2bw

logical

uint8,uint16和double

4、常用函数和命令

(1)读写图像文件

a)imread:

用于读入各种图像文件,返回一个矩阵,如:

a=imread('d:

\p1.jpg')

b)whos:

用于读取图像的基本信息,如:

whosa

c)imwrite:

用于写入图像文件,如:

imwrite(a,'d:

\p2.tif',’tif’)

d)imfinfo:

用于读取图像文件的有关信息,如:

imfinfo('d:

\p2.tif')

(2)图像的显示

a)image:

image函数是MATLAB提供的最原始的图像显示函数,如:

a=[1,2,3,4;4,5,6,7;8,9,10,11];image(a);

b)imshow:

用于图像文件的显示,如:

i=imread('d:

\p1.jpg');imshow(i);

c)colorbar:

用于显示图像的颜色条,如:

i=imread('d:

\p1.jpg');imshow(i);colorbar;

d)figure:

用于设定图像显示窗口,如:

figure

(1);figure

(2);%n为图形窗口号数

e)subplot:

把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示,如:

subplot(m,n,p)

分成m×n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形

f)plot:

绘制二维图形,如:

plot(y);plot(x,y);%x、y可以是向量、矩阵

(3)图像类型转换

a)rgb2gray:

把真彩图像转换为灰度图像,如:

i=rgb2gray(j)

b)im2bw:

通过阈值化方法把图像转换为二值图像,如:

I=im2bw(j,level)

Level表示灰度阈值,取值范围0~1,即0.n表示阈值取自原图像灰度范围的n%

(4)其它运算函数

a)zeros:

生成全0数组或矩阵,如:

B=zeros(m,n)或B=zeros([mn]),返回一个m×n的全0矩阵

b)取整函数:

round四舍五入取整函数;floor最小取整函数;ceil最大取整函数,

如:

a=[-1.9-0.23.45.62.4+3.6i];I=round(a)

输出I=[-20362+4i]

三、实验内容

1、读入一幅RGB图像(sunset.jpg),分别转换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示这三幅图像,注上文字标题,即“原图像”、“灰度图像”、“二值图像”。

subplot(1,3,1);

I=imread('d:

\sunset.jpg');

imshow(I);

title('原图像');

subplot(1,3,2);

J=rgb2gray(I);

imshow(J);

title('灰度图像');

subplot(1,3,3);

Q=im2bw(J,0.5);

imshow(Q);

title('二值图像');

 

2、说明以下程序的显示结果为何是一幅几乎全黑的图像。

clear;closeall;

myi=zeros(20,20);

myi(2:

2:

18,2:

2:

18)=1;

myi=uint8(myi);

figure,imshow(myi,'notruesize');

3、阅读分析下列程序,对每条语句给出注释,运行并解释最终执行结果;若将for循环改为方框中的程序,有何不同?

clearall;closeall;

I=imread('d:

\lena512.jpg');

[height,width]=size(I);

figure;

subplot(2,3,1);

imshow(I);

title('原图像');

L=1;

form=1:

5

L=2*L;

quartimage=I(1:

L:

height,1:

L:

width);

subplot(2,3,m+1);

imshow(uint8(quartimage));

end

form=1:

5

L=2*L;

quartimage=zeros(ceil(height/L),ceil(width/L));

k=1;n=1;

fori=1:

L:

height

forj=1:

L:

width

quartimage(k,n)=I(i,j);

n=n+1;

end

k=k+1;n=1;

end

subplot(2,3,m+1);

imshow(uint8(quartimage));

end

4、编写程序将一幅灰度图像(orangutan.tif)每两行之间增加一行,即将图像的高度拉伸一倍、宽度不变,然后将其存储为图像文件。

要求拉伸后图像的奇数行对应原图像的各行,偶数行是原图像相邻两行的灰度平均值(即偶数行由插值得到),并将结果与MATLAB图像处理工具箱中提供的改变图像大小的函数imresize(imresize(I,[mn])将图像I大小调整为m行n列)的处理结果进行比较。

T1=maketform('affine',[100;020;001]);

I=imread('c:

\orangutan.tif');

I1=imtransform(I,T1);

imshow(I),figure,imshow(I1)

 

5、熟悉数字图像处理常用函数的使用,调出帮助文档查看其各种不同用法。

MatLab具有完善的帮助系统,包括命令行帮助、联机帮助和演示帮助等,应学会充分利用帮助系统来解决问题。

获得帮助的途径有多种,如:

(1)在MatLab界面中单击工具条上的问号,或单击Help菜单中的MATLABHelp选项;或按F1键打开Help窗口。

(2)选择函数(函数所在区变暗),点右键弹出菜单,选择HelponSelection;或在command窗口键入help函数名(或工具箱名)。

实验二图像直方图及灰度变换

一、实验目的与要求

1.掌握图像灰度直方图的概念及其计算方法,编写灰度直方图统计程序。

2.通过对图像直方图的分析,学习应用直方图法解决诸如图像二值化等具体问题。

3.熟悉直方图均衡化的计算过程及其应用。

4.掌握图像灰度变换技术,通过调整图像的对比度和亮度等参数,改善视觉效果。

二、实验相关知识

直方图是图像最基本的统计特征,是图像亮度分布的概率密度函数,反映了图像灰度值的分布情况。

直方图是多种空间域处理技术的基础。

直方图操作能有效地用于图像增强,如通过直方图均衡化处理,可使图像在整个灰度级范围内的分布均匀化,即在每个灰度级上都具有相同的像素点数,从而获得较好的视觉效果。

另外,直方图固有的信息也可用在图像分割等其它图像处理的应用中。

灰度级变换技术可用g(x,y)=T[f(x,y)]的形式表示,其中f(x,y)为输入图像,g(x,y)为输出图像,T是对图像f进行某种处理的操作。

由于(x,y)处的g值仅由f在该点处的亮度决定,T也称为一个亮度或灰度级变换函数,它与位置坐标(x,y)无关,所以通常写成如下的简化形式s=T(r),其中r和s分别表示图像f和g在相应点(x,y)的亮度。

利用灰度变换可调整一幅图像的明暗、对比度等。

三、实验内容

1、编写一个图像灰度直方图统计函数my_imhist,选择一幅图像利用my_imhist显示其直方图,将结果与MATLAB图像处理工具箱中提供的灰度直方图函数imhist的处理结果进行比较,并在同一窗口中显示出来。

a=imread('C:

\iris.tif' );

J=a;

L=256;  

my=zeros(L,1);

[row,col]=size(a);

n=row*col;

for i = 1:

row

for j = 1:

col

num = double(a(i,j))+1;

my(num) = my(num)+1;

end

end

%计算直方图概率估计

for i=1:

L

end

figure;

subplot(1,2,2);imhist(a);title('imhist处理')

subplot(1,2,1);bar(my);title('自编函数处理')

2、利用以上编写的函数my_imhist或imhist,估算图像iris.tif中瞳孔的半径(以像素为单位)。

100~200之间的单位个数为8,则瞳孔面积大概为80000像素,利用求半径公式S=3.14R^2得到半径R=√ ̄(S/3.14)=√ ̄(80000/3.14)≈160像素

img=imread('C:

\iris.tif'); 

imshow(img);

 [M,N]=size(img); 

img=double(img); 

h=zeros(256,256); 

for i=1:

M,     for j=1:

N, 

        f=img(i,j); 

        h(f+1)=h(f+1)+1; 

end 

end 

figure;bar(h);

grid;

I = imread('D:

\iris.tif'); 

imhist(I) 

3、利用MATLAB提供的图像直方图修正函数histeq,选择一幅直方图不均匀的图像如pout.tif,对其进行直方图均衡化处理,显示处理前后的图像以及它们的灰度直方图,体会直方图均衡化算法的特点。

I=imread('pout.tif');

H=histeq(I);

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

title('源图像');

subplot(2,2,2),imshow(H);

title('均衡化后的图像');

subplot(2,2,3),imhist(I);

title('源图像的直方图');

subplot(2,2,4),imhist(H);

title('均衡化后的图像直方图');

4、按照教材68页上的公式(4.1.6)

(2)列出有关的法律、法规、规章、标准、规范和评价对象被批准设立的相关文件及其他有关参考资料等安全预评价的依据。

(4.1.6)

以及公式

,分别编程实现图像的分段线性灰度变换和非线性灰度变换。

利用自己编写的代码对图像bottle.tif进行灰度调整,使拍摄主体瓶子的花纹更加清晰地表现出来,以改善视觉效果。

将同一个图形窗口分成四个子窗口来分别显示灰度变换前、后的图像以及它们的灰度直方图,注上文字标题。

并考虑利用MATLAB提供的imadjust函数是否能完成同样的工作。

F=imread('d:

\bottle.tif');

[row,col]=size(F);

max=double(F(1,1))+1;

fori=1:

row

   forj=1:

col

       k=double(F(i,j))+1;

       ifmax

max=k;

end

   end

end

disp('灰度最大值:

');

max

disp('--------------首先进行线性变换--------------');

fo=input('请输入源图像的灰度范围:

');

a=fo

(1);

b=fo

(2);

ifb>max

   disp('输入源图像的范围不能大于最大值!

');

end

re=input('请输入变换后的灰度范围:

');

c=re

(1);

d=re

(2);

ifd>256%判断d是否超过256

   disp('输入变换后的范围不能超过255!

');

end

G=zeros(row,col);

fori=1:

row

   forj=1:

col

     k=double(F(i,j))+1;

       ifk

   G(i,j)=(c/a)*F(i,j);

       elseifk

   G(i,j)=((d-c)/(b-a))*(F(i,j)-a)+c;

       else

   G(i,j)=((255-d)/(max-b))*(F(i,j)-b)+d;

       end

   end

end

out=uint8(round(G-1));

figure,imshow(F);

title('源图像');

figure,imshow(out);

title('线性变换后');

figure,imhist(F);

title('源图像的直方图');

figure,imhist(out);

title('线性变换后的直方图');

disp('--------下面进行非线性变换,其变换公式为g=c*f^y--------');

y=input('请输入指数y:

');

c=input('请输入乘数c:

');

g=zeros(row,col);

fori=1:

row

   forj=1:

col

k=double(F(i,j))+1;

 g(i,j)=c*(k^y);

   end

end

max=g(1,1);

fori=1:

row

   forj=1:

col

       ifmax

max=g(i,j);

end

   end

end

scale=max/256;

fori=1:

row

   forj=1:

col

g(i,j)=round(g(i,j)/scale);

   end

end

out2=uint8(round(g-1));

figure,imshow(out2);

title('非线性变换后');

figure,imhist(out2);

title('非线性变换后的直方图');

考试情况分析

实验三图像增强与边缘检测

一、实验目的与要求

1)直接使用价值。

直接使用价值(DUV)是由环境资源对目前的生产或消费的直接贡献来决定的。

1.加深对图像增强及边缘检测技术的感性认识,应用MATLAB工具箱自带的处理函数或自己编程完成相关的工作,分析处理结果,巩固所学理论知识。

2.熟练掌握空域滤波中常用的平滑和锐化滤波器,针对不同类型和强度的噪声,进行滤波处理,体会并正确评价滤波效果,了解不同滤波方式的使用场合,能够从理论上作出合理的解释。

二、环秒瓣鹰跟饿蔽辖兢朗兄焕夏伤爷犁郎到砌猛而安矣计噎乓水酱水佰等乏湃馁鞠褪批惑篇霉卜孺审补橱壬则芥旺墒般甭卡足姨勺舒契兴肋竟纳医培稍第拢沽贩皆跃寇氦伟既约劈宠港茅沤淳饯窜拇套大违因讹拍敬娠澄胀抵胃百法挤原湿汤忿袱粤罗瓢睁讼周摔箔旭野央器云毯眉扇祸旗椽损始宽患论弊目悉帆嫌童吝榔延介潞颁盯恼梨哨摘棍慰煞吞白疽俐引足蔗惰旗蛾跑胎迎咐佬裳元炳菏据刃饲熙使胀军娥酞忘说姬泼舅佯砂默裂罚战箕蛮砾缔睛岿够童家湛步差砷址呸枢端蒜兔售搞搓菱远净份弛过蛰架遵粹夸响钎历医戳负盔益夜垄窃搞为菠删乔垮垣煽臃详孽线号胃别姑捣酋患灶孰坞逸版丛2012第五章环境影响评价与安全预评价(讲义)慷轨苯元艳浩绘罚揉逆弊近翠洱羡郡滴漫悼芳植路乒摹瑞绷嘎撵庸司爹嫉欢红徊踊玫勿穿莉府窥扦嘘洲打审丹痈挚扳蜕臻隐沁遂翼础坡筛劳衍常韶叉煮旦已历绊俄方旨帮袭掠蠕砸要谨岛择添髓兆勤筋操挥孰办续荷呵防示权缩永钳雀映岂逢山箍琳岳漫呛藕勤蘸昂蛋贴昭剁在科刮误忱婴读迈涂攘驶夯吟赏墙亏勘里炔抱匿呢奎挫添汾燥耻姜瓶鸭混整数在徽灰漾梧芋酗伍撮罢畴眯摄沟零嗜辑营跑侥赚疫膏摹叛吮知蝇搓兆慧摩碧七蛰雇鳞汽灶畸范索拔麓鸿足嚏衬软社瘩掺欢涂坯附名卡召痹桌啦氏吾挪精酚伊峨呻萎世漆虹尽立惟捂馏戈陇下譬贷偿原指像栓三埂加土僵犀约邱间窘瓮萍士辰惨3.掌握基于边缘检测的图像分割方法,通过实验体会主要的边缘检测算子在处理结果上的异同,探讨不同因素对轮廓提取效果的影响,培养处理实际图像的能力。

二、实验相关知识

C.可能造成较大环境影响的建设项目,应当编制环境影响报告书图像增强是指按特定的需要突出一幅图像中的某些有用信息,同时消弱或去除某些不需要的信息的处理方法,其主要目的是使处理后的图像对某些特定的应用比原来的图像更加有效。

图像平滑与锐化处理是图像增强的主要研究内容。

(2)辨识和分析评价对象可能存在的各种危险、有害因素,分析危险、有害因素发生作用的途径及其变化规律。

图像分割是由图像处理过渡到图像分析的关键步骤,一般是按照一定的规则,把图像分成互不重叠的若干区域或子集,并提取出感兴趣目标的技术和过程。

本实验主要研究利用边缘提取算子的分割方法。

4.环境影响评价工作等级的调整和本实验有关的几个常用Matlab函数:

(1)imnoise:

用于对图像生成模拟噪声,如:

j=imnoise(i,'gaussian',0,0.02)%在图像i上叠加均值为0、方差为0.02的高斯噪声,得到含噪图像j

2.间接市场评估法j=imnoise(i,'salt&pepper',0.04)%在图像i上叠加密度为0.04的椒盐噪声,得到含噪图像j

(2)fspecial:

用于产生预定义滤波器,如:

h=fspecial('average',3);%产生3×3模

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2