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

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

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

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

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

数字图像处理实验指导书

实验一Matlab图像处理工具箱的初步练习

一、实验目的和任务

1、 初步了解与掌握MATLAB语言的基本用法;

2、 掌握MATLAB语言中图象数据与信息的读取方法;

3、 掌握在MATLAB语言中图像类型的转换。

二、实验仪器、设备及材料

1、计算机

2、MatLab软件/语言包括图像处理工具箱(ImageProcessingToolbox)

3、实验所需要的图片

三、实验原理

将数字图像的RGB表示转换为YUV表示;

Y=0.30R+0.59G+0.11B

U=0.70R-0.59G-0.11B

V=-0.30R-0.59G+0.89B

四、实验步骤

1、阅读资料并熟悉MatLab的基本操作

2、读取MATLAB中的图象数据

3、显示MATLAB中的图象文件。

用MATLAB在自建的文件夹中建立m文件,在这个文件的程序中,将MATLAB目录下work文件夹中的tree.tif图象文件读出,用到imread,imfinfo等命令,观察一下图象数据,了解一下数字图象在MATLAB中的处理就是处理一个矩阵的本质。

4、将3中的图象显示出来(用imshow)。

5、对MATLAB目录下work文件夹中的flowers.tif进行真彩色图像、索引色图像、灰度图像、二值图像之间的相互变换,并显示。

6、进行真彩色图像RGB(lenacolor.jpg)、YIQ图像、HSV图像、YcbCr图像的相互转换,并显示。

五、实验报告要求

1、描述实验的基本步骤;

2、用图片给出步骤4、5、6中取得的实验结果;

六、实验所需图片

lenacolor.jpg

七、实验注意事项

1、学生应提前预习

2、请大家在E盘建一个目录(matlab),在每次启动时都要将这个目录加入到MATLAB的搜索路径中,添加的方法为File----SetPath----Tool---AddPath

八、思考题

1、图像之间转换的基础是什么,为什么可以实现相互的转换

九、附录

MATLAB简介

(1)

MATLAB全称是MatrixLaboratory(矩阵实验室),一开始它是一种专门用于矩阵数值计算的软件,从这一点上也可以看出,它在矩阵运算上有自己独特的特点。

实际上MATLAB中的绝大多数的运算都是通过矩阵这一形式进行的。

这一特点也就决定了MATLAB在处理数字图像上的独特优势。

理论上讲,图像是一种二维的连续函数,然而在计算机上对图像进行数字处理的时候,首先必须对其在空间和亮度上进行数字化,这就是图像的采样和量化的过程。

二维图像进行均匀采样,就可以得到一幅离散化成M×N样本的数字图像,该数字图像是一个整数阵列,因而用矩阵来描述该数字图像是最直观最简便的了。

而MATLAB的长处就是处理矩阵运算,因此用MATLAB处理数字图像非常的方便。

MATLAB支持五种图像类型,即索引图像、灰度图像、二值图像、RGB图像和多帧图像阵列;支持BMP、GIF、HDF、JPEG、PCX、PNG、TIFF、XWD、CUR、ICO等图像文件格式的读,写和显示。

MATLAB对图像的处理功能主要集中在它的图像处理工具箱(ImageProcessingToolbox)中。

图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、二值图像操作以及形态学处理等图像处理操作。

1、MATLAB中图象数据的读取

A、imread

imread函数用于读入各种图象文件,其一般的用法为

[X,MAP]=imread(‘filename’,‘fmt’)

其中,X,MAP分别为读出的图象数据和颜色表数据,fmt为图象的格式,filename为读取的图象文件(可以加上文件的路径)。

例:

[X,MAP]=imread(’flowers.tif’,’tif’);

 

B、imwrite

imwrite函数用于输出图象,其语法格式为:

imwrite(X,map,filename,fmt)

imwrite(X,map,filename,fmt)按照fmt指定的格式将图象数据矩阵X和调色板map写入文件filename。

 

C、imfinfo

imfinfo函数用于读取图象文件的有关信息,其语法格式为

imfinfo(filename,fmt)

imfinfo函数返回一个结构info,它反映了该图象的各方面信息,其主要数据包括:

文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图象的类型等。

例:

imfinfo('rice.tif')

2、MATLAB中图象文件的显示

imshow

imshow函数是最常用的显示各种图象的函数,其语法如下:

imshow(X,map)

其中X是图象数据矩阵,map是其对应的颜色矩阵,若进行图象处理后不知道图象数据的值域可以用[]代替map。

需要显示多幅图象时,可以使用figure语句,它的功能就是重新打开一个图象显示窗口。

例:

I=imread(‘rice.tif’);

Imshow(I);

J=imread(‘flowers.tif’);

figure,imshow(J);

3、其它命令有

rgb2gray将RGB图像转换成灰度图像

ind2gray将索引色图像转换成灰度图像

rgb2ind将RGB图像转换成索引色图像

ind2rgb将索引色图像转换成RGB图像

im2bw将图像转换成黑白图像

实验二图像的空域处理方法

一、实验目的和任务

1、掌握在MATLAB中绘制灰度直方图的方法,了解灰度直方图的均衡化的方法;

2、了解图象滤波的基本定义及目的;

3、了解空域滤波的基本原理及方法;

4、掌握用MATLAB语言进行图象的空域滤波的方法。

二、实验仪器、设备及材料

1、计算机

2、MatLab软件/语言包括图像处理工具箱(ImageProcessingToolbox)

3、实验所需要的图片

三、实验原理

1、灰度变换是对一幅图象的灰度级进行变换,

B(x,y)=f[A(x,y)]

2、

用均值滤波器去除图像中的噪声;

3、用中值滤波器去除图像中的噪声;

四、

实验步骤

1、运行matlab-help—demos—toolboxes—imageprocessing—IntensityAdjustmentandHistogram,做灰度变换和直方图变换,进一步了解变换的原因;

2、读出men.bmp这幅图像,显示它的图象及灰度直方图,可以发现其灰度值集中在一段区域,用imadjust函数将它的灰度值调整到[0,1]之间,并观察调整后的图象与原图象的差别,调整后的灰度直方图与原灰度直方图的区别。

3、运行matlab-help—demos—toolboxes—imageprocessing—NoiseReductionfilter,进一步理解空域滤波的原理;

4、读出lena.bmp这幅图像,给这幅图像加入椒盐噪声

5、用均值滤波器去除图像中的噪声;

6、用中值滤波器去除图像中的噪声;

7、比较两种方法的处理结果。

五、实验报告要求

1、描述实验的基本步骤;

2、用数据和图片给出步骤2、4、5、6中取得的实验结果并进行必要的讨论;取得的实验结果并进行必要的讨论实验报告必须包括原始图像及其处理后的图像,注意对比各种增强方法对于不同图像处理的效果。

六、实验所需图片

men.bmpLenna.bmp

七、实验注意事项

1、学生应提前预习

2、由于实验室的管理规定所有的程序不能存在C盘和D盘,因此请大家在E盘建一个目录(matlab),在每次启动时都要将这个目录加入到MATLAB的搜索路径中,添加的方法为File----SetPath----Tool---AddPath

八、思考题

1、小结一下本实验所用的增强方法

2、比较一下均值滤波和中值滤波处理的效果并指出其中异同

九、附录

MATLAB简介(3)

本实验中需要了解/使用的函数

1.MATLAB中灰度直方图的显示

MATLAB图象处理工具箱提供了imhist函数来计算和显示图象的直方图,imhist函数的语法格式为:

imhist(I,n)

imhist(X,map)

其中imhist(I,n)计算和显示灰度图象I的直方图,n为指定的灰度级数目,默认值为256。

imhist(X,map)计算和显示索引色图象X的直方图,map为调色板。

例:

I=imread('rice.tif');

imshow(I)

figure,imhist(I)

2.对比度增强

如果原图象f(x,y)的灰度范围是[m,M],我们希望调整后的图象g(x,y)的灰度范围是[n,N],那么下述变换,,就可以实现这一要求。

MATLAB图象处理工具箱中提供的imadjust函数,可以实现上述的线性变换对比度增强。

Imadjust函数的语法格式为:

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

J=imadjust(I,[low_inhigh_in],[low_outhigh_out])返回图象I经过直方图调整后的图象J,[low_inhigh_in]为原图象中要变换的灰度范围,[low_outhigh_out]指定了变换后的灰度范围。

例:

I=imread('pout.tif');

J=imadjust(I,[0.30.7],[]);

imshow(I),figure,imshow(J)

3.均值滤波

均值滤波是在空间域对图象进行平滑处理的一种方法,易于实现,效果也挺好。

均值滤波 的算法是由某像素领域内各点灰度值的平均值来代替该像素原来的灰度值。

  可用模块反映领域平均算法的特征。

对于四点领域和八点领域,可分别由下述摸板表征:

    

   模版沿水平和垂直两个方向逐点移动,相当于用这样一个模块与图像进行卷积运算,从而平滑了整幅图象。

模版内各系数和为1,用这样的模版处理常数图象时,图像没有变化;对一般图象处理后,整幅图像灰度的平均值可不变。

4.中值滤波

  中值滤波是一种非线性处理技术,能抑制图象中的噪声。

它是基于图象的这样一种特性:

噪声往往以孤立的点的形式出现,这些点对应的象素很少,而图象则是由像素数较多、面积较大的小块构成。

  在一维的情况下,中值滤波器是一个含有奇数个像素的窗口。

在处理之后,位于窗口正中的像素的灰度值,用窗口内各像素灰度值的中值代替。

例如若窗口长度为5,窗口中像素的灰度值为80、90、200、110、120,则中值为110,因为按小到大(或大到小)排序后,第三位的值是110。

于是原理的窗口正中的灰度值200就由110取代。

如果200是一个噪声的尖峰,则将被滤除。

然而,如果它是一个信号,则滤波后就被消除,降低了分辨率。

因此中值滤波在某些情况下抑制噪声,而在另一些情况下却会抑制信号。

  中值滤波很容易推广到二维的情况。

二维窗口的形式可以是正方形、近似圆形的或十字形的。

在图像增强的具体应用中,中值滤波只能是一种抑制噪声的特殊工具,在处理中应监视其效果,以决定最终是否采用这种方案。

实施过程中的关键问题是探讨一些快速算法。

  MATLAB中提供了卷积运算的函数命令conv2,其语法格式为:

  C=conv2(A,B)

C=conv2(A,B)返回矩阵A和B的二维卷积C。

若A为ma×na的矩阵,B为mb×nb的矩阵,则C的大小为(ma+mb+1)×(na+nb+1)。

例:

A=magic(5)

MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为:

Y=filter2(h,X)

其中Y=filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。

例如:

其实filter2和conv2是等价的。

MATLAB在计算filter2时先将卷积核旋转180度,再调用conv2函数进行计算。

Fspecial函数用于创建预定义的滤波算子,其语法格式为:

h=fspecial(type)

h=fspecial(type,parameters)

参数type制定算子类型,parameters指定相应的参数,具体格式为:

type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]。

type='gaussian',为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为0.5。

type='laplacian',为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的形状,取值范围为[0,1],默认值为0.2。

type='log',为拉普拉斯高斯算子,参数有两个,n表示模版尺寸,默认值为[3,3],sigma为滤波器的标准差,单位为像素,默认值为0.5

type='prewitt',为prewitt算子,用于边缘增强,无参数。

type='sobel',为著名的sobel算子,用于边缘提取,无参数。

type='unsharp',为对比度增强滤波器,参数alpha用于控制滤波器的形状,范围为[0,1],默认值为0.2。

下面举一个均值滤波的例子:

在MATLAB图像处理工具箱中,提供了medfilt2函数用于实现中值滤波。

Medfilt2函数的语法格式为:

B=medfilt2(A)       用3×3的滤波窗口对图像A进行中值滤波。

B=medfilt2(A,[mn])   用指定大小为m×n的窗口对图像A进行中值滤波。

例:

I=imread('moon.tif');

h=fspecial('unsharp');

I2=imfilter(I,h);

imshow(I),title('Originalimage')

figure,imshow(I2),title('Filteredimage')

在MATLAB中提供了给图像加入噪声的函数imnoise

imnoise的语法格式为

J=imnoise(I,type)

J=imnoise(I,type,parameters)

其中J=imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。

参数type和parameters用于确定噪声的类型和相应的参数。

下面的命令是对图像eight.tif分别加入高斯噪声、椒盐噪声和乘性噪声,其结果如图所示:

例:

I=imread('eight.tif');

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

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

J3=imnoise(I,'speckle',0.02);

subplot(2,2,1),imshow(I),title('原图像');

subplot(2,2,2),imshow(J1),title('加高斯噪声');

subplot(2,2,3),imshow(J2),title('加椒盐噪声');

subplot(2,2,4),imshow(J3),title('加乘性噪声');

实验三图像分割和目标识别

一、实验目的和任务

1、掌握在MATLAB中边缘检测的方法;

2、了解图像分割的基本策略及方法;

3、掌握用MATLAB语言进行边缘检测和目标识别的方法。

二、实验仪器、设备及材料

1、计算机

2、MatLab软件/语言包括图像处理工具箱(ImageProcessingToolbox)

3、实验所需要的图片

三、实验原理

1、阈值分割是对一幅图象的目标和背景进行判定,

2、

用中值滤波器去除图像中的噪声;

3、二值形态学基本公式:

设A表示一副二值图像,B为结构元素则A关于B的膨胀和腐蚀变换分别定义为:

其中

是B的映像。

腐蚀是表示用某种形状的结构元素对一个图像进行探测,以便找出图像内部可以放下该结构元素的区域。

它是一种消除边界点,使边界向内部收缩的过程。

可以用来消除小且无意义的物体。

四、实验步骤

1、读出chrimage.bmp这幅图像,转换为灰度图像。

2、用中值滤波器去除图像中的噪声;

3、采用阈值分割将图像转换为二值图像;

4、对二值图像进行形态学操作,获得分析值。

五、实验报告要求

1、描述实验的基本步骤;

2、用数据和图片给出各步骤中取得的实验结果并进行必要的讨论;报告必须包括原始图像及其处理后的图像,注意对比不同阈值分割对图像处理的不同效果。

六、实验所需图片

chrimage.bmp

七、实验注意事项

4、学生应提前预习

5、由于实验室的管理规定所有的程序不能存在C盘和D盘,因此请大家在E盘建一个目录(matlab),在每次启动时都要将这个目录加入到MATLAB的搜索路径中,添加的方法为File----SetPath----Tool---AddPath

八、思考题

1、小结一下本实验所用的分割和统计方法

九、附录

待处理的图像如下所示。

图像有明显的噪音,部分染色体有断开和粘连的情况。

要识别其中的染色体并统计其数目,我们采用Matlab平台提供的一些图像处理函数。

基本方法如下:

1、读取待处理的图像,将其转化为灰度图像,然后反白处理。

I=imread('chrimage.bmp');

I2=rgb2gray(I);

s=size(I2);

I4=255*ones(s

(1),s

(2),'uint8');

I5=imsubtract(I4,I2);

2、对图像进行中值滤波去除噪音。

经试验,如果采用3×3的卷积因子,噪音不能较好地去除,染色体附近毛糙严重。

而5×5和7×7的卷积因子能取得较好的效果。

图示滤噪前后的效果对比。

I3=medfilt2(I5,[55]);

3、将图像转化为二值图像。

经试验,采用门限值为0.3附近时没有染色体断开和粘连(如下左图),便于后期统计。

I3=imadjust(I3);

bw=im2bw(I3,0.3);

在此步骤,如果使用graythresh函数自动寻找门限,得到的图像染色体断开的比较多(如下中图),此时可以将白色区域膨胀,使断开的的染色体连接(如下右图)。

level=graythresh(I3);

bw=im2bw(I3,level);

se=strel('disk',5);

bw=imclose(bw,se);

两种方法相比,前者对染色体面积的计算比较准确,后者对不同图像的适应性较强。

下面的步骤将基于前一种方法。

4、去除图像中面积过小的,可以肯定不是染色体的杂点。

这些杂点一部分是滤噪没有滤去的染色体附近的小毛糙,一部分是图像边缘亮度差异产生的。

bw=bwareaopen(bw,10);

5、标记连通的区域,以便统计染色体数量与面积。

[labeled,numObjects]=bwlabel(bw,4);

6、用颜色标记每一个染色体,以便直观显示。

此时染色体的断开与粘连问题已基本被解决。

最终效果如下图。

RGB_label=label2rgb(labeled,@spring,'c','shuffle');

7、统计被标记的染色体区域的面积分布,显示染色体总数。

统计总数为46,与人工数出数目的相同。

chrdata=regionprops(labeled,'basic')

allchrs=[chrdata.Area];

num=size(allchrs)

nbins=20;

figure,hist(allchrs,nbins);

title(num

(2))

至此,染色体识别与统计完成。

此方法采用Matlab已有的函数,简单且快捷。

但缺点是此程序是专为这一幅待处理图像写的,诸如门限、滤噪方法的特定性强。

同时没有经过大量同类待处理图像的测试,系统通用性不强。

不过作为实验,了解提取与分析目标图像中的有效信息的基本方法,是足够的。

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

当前位置:首页 > 高等教育 > 农学

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

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