利用MATLAB仿真软件系统进行图像的数据分析

更新时间:2023-06-04 17:19:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2.数据采集

2.1 MATLAB的读取方法

2.1.1图像的读取

从电脑中调用保存的图片两张,图像为800*600和800*600像素保存为zy1.jpg和zy2.jpg,如图1.1和1.2所示

图2.1 zy1

图2.2 zy2

Matlab显示图像的最基本的手段是使用image函数。该函数还产生了图像对象的句柄,并允许对对象的属性进行设置,利用图像读取函数imread()可完成图形图像文件的读取。

利用函数存放在电脑中的两张图片zy1.jpg和zy2.jpg,并将其分别存储到名为Y和F的数组中,其具体实现程序如下,得到结果如图2.3

Y=imread('F:\zy1.jpg'); F=imread('F:\zy2.jpg');

image(F)

图2.3 读取图片

上述张图片满足像素要求,但图像为彩图,不是灰度图,无法进行接下来的分析,需将彩图转换为灰度图,利用MATLAB中的rgb2gray()命令实现RGB图像到灰度图像的转化。转化后在使用命令isgray()判断图像是否变为灰度图,如果是灰度图将返回为1,不是将返回0。灰度图转换成功后,将转化后的灰度图读取出来。

灰度转换程序如下: Y=rgb2gray(Y); F=rgb2gray(F); figure;

imshow(Y); figure;

imshow(F);

转换后灰度图如图2.4,2.5所示

图2.4

图2.4 zy1灰度图

图2.5 zy2灰度图

3 图像数据统计处理

3.1图像数据处理原理

一幅图像可以被看作是空间各点光强度的集合。MATLAB把灰度图像存储为一个数据矩阵,该数据矩阵中的元素分别代表了图像中的像素。一幅行数为M、列数为N的图像大小为M×N的矩阵形式为,如图3.1

图3.1 矩阵形式

键入命令M= imread('F:\zy2.jpg')可得出zy2的灰度矩阵,如图3.2所示

图3.2 zy2灰度矩阵

因此可利用灰度矩阵来分析图片的各种参数以及对数据进行处理,而且由于在应用图片的方面,对图像各项参数的要求不同,所以要对图片进行适当的数据处理,来考察图片的不同参数。例如均值,标准差,方差就是图像的一些相关的参数,可以用作对图片的质量来作评价。

3.2各像素点中最大值的获取 3.2.1 引用函数

Matlab中max()函数用于求最大值。 程序如下:

image_maxzy1=max(max(Y)) Image_maxzy2=max(max(F))

3.2.2计算结果

图像最大值分析结果如下图所示

图3.3最大值分析

3.3各像素点中最小值的获取 3.3.1引用函数

Matlab中min()函数用于求最小值。 程序如下:

image_minzy1=min(min(Y)) image_minzy2=min(min(F))

3.3.2计算结果

图像最小值分析结果如下图所示

图3.4 最小值分析

3.4各像素点值的均值的获取 3.4.1引用函数

MATLAB中提供均值计算函数mean()和mean2(),函数的使用方法如下:例如用mean2(X)求出矩阵X所有元素的均值。

若要求整个矩阵的均值,则为mean(mean(X))。 >>X=[1 2 3 4 5 6]

>>mean(mean(X))=3.5 也可使用mean2函数: >>mean2(X)=3.5

题目要求计算图像各像素点的均值,因而可通过调用mean2()函数进行计

算,在命令行中输入mean2(A_gray)即可求得灰度图各像素点的均值。

程序如下:

image_meanzy1= mean2(Y) image_meanzy2= mean2(F)

3.4.2计算结果

图像均值分析结果如图

3.5

图3.5 均值分析

3.5各像素点值的中值的获取 3.5.1引用函数

MATLAB中提供的median()函数可求出中值。例如:

median(M),每一列返回一个值为该列从大到小排列的中值.median(M,dim),dim为1,2。其中1表示按每列返回一个值,为该列从大到小排列的中间值,2表示按每行返回一个值,为该行从大到小排列的中间值.

注意:如果行或列的个数为偶数,返回中间两个值的平均值。

求Y,F个像素点值的中值程序如下: image_medianzy1=median(Y(:)) image_medianzy2=median(F(:))

3.5.2计算结果

图像中值分析结果如下图所示

图3.6 中值分析

3.6各像素点值的和的获取 3.6.1引用函数

MATLAB中提供的sum()函数为求和函数,sum(x,2)表示矩阵x的横向相加,求每行的和,结果是列向量。 而缺省的sum(x)就是竖向相加,求每列的和,结果是行向量。利用sum()函数可求出各像素点的和

程序如下: image_sumzy1=sum(sum(Y)) image_sumzy2=sum(sum(F))

3.6.2计算结果

图像各像素点值的和分析结果如下图所示

图3.7 像素的点和分析

3.7各像素点值的标准差的获取 3.7.1引用函数

MATLAB中提供的std()函数可求出标准差。std(x) 算出x的标准偏差。 x可以是一行的matrix或者一个多行matrix矩阵。

如果只有一行,那么就是算一行的标准偏差,如果有多行,就是算每一列的标准偏差。

std(x,a)也是x的标准偏差但是a可以=0或者1.如果是0和前面没有区别,如果是1就是最后除以n,而不是n-1. std (x, a,b)这里a表示是要用n还是n-1,如果是a是0就是除以n-1,如果是1就是除以n。b这里是维数,比如说 1 2 3 4 4 5 6 1

如果b 是1,就是按照行分,如果b是2就是按照列分 如果是三维的矩阵,b=3就按照第三维来分数据。

求个像素点值标准差程序如下: image_stdzy1=std2(Y(:)) image_stdzy2=std2(F(:))

3.7.2计算结果

图像标准差分析结果如下图所示

图3.8 标准差分析

3.8各像素点值的方差的获取 3.8.1引用函数

MATLAB中提供的var()函数可求出方差 程序如下:

image_varzy1=var(double(Y(:))) image_varzy2=var(double(F(:)))

3.8.2计算结果

图像方差分析结果下图所示

图3.9 方差分析

3.9两图中各像素点值的协方差的获取 3.9.1引用函数

MATLAB中提供的cov()函数可求出两数组间的协方差 程序如下:

image_covzy=cov(double(Y),double(F))

3.9.1计算结果

zy1和zy2两图像像素点值协方差分析结果如下图所示

图3.10 协方差分析

3.10两图的相对系数的获取 3.10.1引用函数

MATLAB中提供的corrcoef函数可求出两数组间的相对系数。 程序如下:

image_corrcoefzy=corrcoef(double(Y),double(F))

3.11.2计算结果

图像zy1和zy2的相对系数分析结果如下图所示

3.11 两图相对系数分析

4.心得体会

在这次课程设计中,我初步了解并掌握了一些MATLAB的使用方法,对MATLAB语言的发展和特点有了更深的了解,掌握了MATLAB的基本语法,了解了MATLAB程序书写的一般思路及一般步骤,学会了用MATLAB进行图像分析的方法,如读取图像并求出图像的最大值、最小值、均值、中值、和、标准差、两图像的协方差、相关系数等。这些都为我以后更进一步的深入学习MATLAB打下了基础,总的来说,在这次课程设计中算是受益匪浅,感受良多。

在这次课程设计之前,我从未接触过MATLAB这款软件。我先是通过互联网和图书馆中的书籍了解到这是一款功能强大的计算软件。而我这一次的题目所要完成的主要就是运用MATLAB本身所带有的函数进行图像的分析,我通过多种渠道学会了这些函数的使用方法,然后开始进行调试。尽管过程并不是一帆风顺,但我终究还是讲图片成功的分析出来了,看着自己分析的结果显示在屏幕上,学习的尽头更足了。这次不仅锻炼了我的动手能力,而且考验了我查阅资料和独立思考解决问题的能力,我相信这对今后的学习都会有很大的帮助。在一次次失败,检查,修改的过程中,我学会了耐心,同时也知道了实践更能检查知识的掌握程度。

通过这次的课程设计,我明白了自己的不足,也增长了知识,综合能力也有了一定的的提升,对今后的进一步学起到了不小的作用。当然,我也还需要增大相关知识的阅读量,扩大知识面从而更好的运用这款软件。

参考文献

[1] 周建兴 《MATLAB从入门到精通》[M] 人民邮电出版社

[2] Vinay K.Ingle 《数字信号处理及其MATLAB实现》[M] 电子工业出版社 [3] 张德丰 《详解MATLAB数字图像处理》[M] 电子工业出版社

[4] 王洪元《MATLAB语言及其在电子信息工程中的应用》[M] 清华大学出版社 [5] 卡斯尔曼 《数字图像处理》[M] 电子工业出版社

本科生课程设计成绩评定表

年 月 日

本文来源:https://www.bwwdw.com/article/5pl1.html

Top