MATLAB仿图像的数据分析.docx
- 文档编号:27770890
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:18
- 大小:1.24MB
MATLAB仿图像的数据分析.docx
《MATLAB仿图像的数据分析.docx》由会员分享,可在线阅读,更多相关《MATLAB仿图像的数据分析.docx(18页珍藏版)》请在冰豆网上搜索。
MATLAB仿图像的数据分析
目录
1.Matlab及课程设计所用函数简介5
1.1Matlab简介5
1.2课程设计所用函数简介6
2.数据采集9
2.1MATLAB的读取方法9
3图像数据统计处理13
3.1图像数据处理原理13
3.2各像素点中最大值的获取14
3.3各像素点中最小值的获取14
3.4各像素点值的均值的获取15
3.5各像素点值的中值的获取16
3.6各像素点值的和的获取17
3.7各像素点值的标准差的获取18
3.8各像素点值的方差的获取19
3.9两图中各像素点值的协方差的获取20
3.10两图的相对系数的获取20
4.心得体会22
参考文献23
Matlab及课程设计所用函数简介
1.1Matlab简介
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
Matlab是一套功能十分强大的工程计算及数据分析软件,其应用范围涵盖了数学、工业技术、电子科学、医疗卫生、建筑、金融、数字图像处理等各个领域。
许多工程师和研究人员发现,matlab能迅速测试其构思,综合评测系统性能,并能借此快速设计出更多的解决方案,达到更高的技术要求。
Matlab的图像处理工具箱,功能十分强大,支持的图像文件格式丰富,如JPEG、RAS、PCX、TIFF、PNG、HDF、GIF、ICO、CUR、XWD、BMP等。
用Matlab所提供的图像处理与分析工具,结合其强大的数据处理能力,研究人员可利用前人已取得的研究成果,可以把精力集中在新技术理论的研究上,而不必关心图像文件的格式、读写、显示和已有成果的技术细节.并快速测试其图像处理与分析的新方案。
测试既可方便地得到统计数据,同时又可得到直观图示。
Matlab提供了20类图像处理函数,涵盖了图像处理的包括近期研究成果在内的几乎所有的技术方法,是学习和研究图像处理的人员难得的宝贵资料和加工工具箱。
这些函数按其功能可分为:
图像显示;图像文件I/O;图像算术运算;几何变换;图像登记;像素值与统汁;图像分析;图像增强;线性滤波;线性二元滤波设计;图像去模糊;图像变换;邻域与块处理;灰度与二值图像的形态学运算;结构元素创建与处理;基于边缘的处理;色彩映射表操作;色彩空间变换;图像类型与类型转换。
Matlab作为一种科学计算的高级语言之所以受欢迎,就是因为它有丰富的函数资源和工具箱资源,编程人员可以根据自己的需要选择函数,而无需再去编写大量繁琐的程序代码,从而减轻了编程人员的工作负担。
被称为第四代编程语言的Matlab最大的特点就是简洁开放的程序代码和直观实用的开发环境。
具体地说Matlab主要有以下特点:
(1)库函数资源丰富;
(2)语言精炼,代码灵活;
(3)运算符多而灵活;(4)面向对象,控制功能优良 ;
(5)程序设计自由;(6)图形功能强大;
(7)程序的兼容性好 ;(8)源代码开放
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
1.2课程设计所用函数简介
下面简单介绍本次课设会用到的一些Matlab中的函数。
MATLAB中图象数据的读取
imread
imread函数用于读入各种图象文件,其一般的用法为
[X,MAP]=imread(‘filename’,‘fmt’)
其中,X,MAP分别为读出的图象数据和颜色表数据,可建立一个数组I来简单表示。
fmt为图象的格式,filename为读取的图象文件。
例:
[X,MAP]=imread(’flowers.tif’,’tif’);
或者I=imread(’flowers.tif’,’tif’);
MATLAB中图象文件的显示
Imshow
imshow函数是最常用的显示各种图象的函数,imshow主要用于调用图像索引,比如:
imshow(X,map)
其功能等同于:
image(X)
colormap(map)
但是,inshow的功能要强大一些,比如用于灰度图像,RGB图像,二进制图像,都可以应用。
其中X是图象数据矩阵,map是其对应的颜色矩阵,若进行图象处理后不知道图象数据的值域可以用[]代替map。
需要显示多幅图象时,可以使用figure语句,它的功能就是重新打开一个图象显示窗口。
例:
I=imread(‘rice.tif’);
Imshow(I);
J=imread(‘flowers.tif’);
figure,imshow(J);
或者J=imread('H:
\pic1.jpg')
image(J);
title('pic1')
MATLAB中图象文件灰度图像的转化
rgb2gray
转换RGB图像或颜色映像表为灰度图像
语法:
I=rgb2gray(RGB)或者newmap=rgb2gray(map)
图像数据分析相关的函数
求矩阵的最大值和最小值
求矩阵A的最大值的函数有3种调用格式,分别是:
max(A):
返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。
[Y,U]=max(A):
返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。
max(A,[],dim):
dim取1或2。
dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。
求最小值的函数是min,其用法和max完全相同。
求平均值和中值
求数据序列平均值的函数是mean,求数据序列中值的函数是median。
两个函数的调用格式为:
mean(X):
返回向量X的算术平均值。
median(X):
返回向量X的中值。
mean(A):
返回一个行向量,其第i个元素是A的第i列的算术平均值。
median(A):
返回一个行向量,其第i个元素是A的第i列的中值。
mean(A,dim):
当dim为1时,该函数等同于mean(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的算术平均值。
median(A,dim):
当dim为1时,该函数等同于median(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的中值。
求和
数据序列求sum设X是一个向量,A是一个矩阵,函数的调用格式为:
sum(X):
返回向量X各元素的和。
sum(A):
返回一个行向量,其第i个元素是A的第i列的元素和。
sum(A,dim):
当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素之和。
求标准差与方差
在MATLAB中,提供了计算数据序列的标准差的函数std与计算方差的函数Var。
对于向量X,std(X)返回一个标准差。
对于矩阵A,std(A)返回一个行向量,它的各个元素便是矩阵A各列或各行的标准差。
std函数的一般调用格式为:
Y=std(A,flag,dim)
Var的一般调用格式为:
Y=var(A,flag,dim)
求协方差与相关系数
MATLAB提供了cov函数可以求出数据的协方差
函数的调用格式为cov(X)%
MATLAB提供了corrcoef函数,可以求出数据的相关系数矩阵。
corrcoef函数的调用格式为:
corrcoef(X):
返回从矩阵X形成的一个相关系数矩阵。
此相关系数矩阵的大小与矩阵X一样。
它把矩阵X的每列作为一个变量,然后求它们的相关系数。
corrcoef(X,Y):
在这里,X,Y是向量,它们与corrcoef([X,Y])的作用一样。
2.数据采集
2.1MATLAB的读取方法
2.1.1图像的读取
从电脑中调用保存的图片两张,图像为800*600和800*600像素保存为pic1.jpg和pic2.jpg,如图
Matlab显示图像的最基本的手段是使用image函数。
该函数还产生了图像对象的句柄,并允许对对象的属性进行设置,利用图像读取函数imread()可完成图形图像文件的读取。
利用函数存放在电脑中的两张图片pic1.jpg和pic2.jpg,并将其分别存储到名为I1和I2的数组中,其具体实现程序如下,得到结果如图
I1=imread('pic1.jpg');
I2=imread('pic2.jpg');
image(I2)
上述张图片满足像素要求,但图像为彩图,不是灰度图,无法进行接下来的分析,需将彩图转换为灰度图,利用MATLAB中的rgb2gray()命令实现RGB图像到灰度图像的转化。
转化后在使用命令isgray()判断图像是否变为灰度图,如果是灰度图将返回为1,不是将返回0。
灰度图转换成功后,将转化后的灰度图读取出来。
灰度转换程序如下:
I=rgb2gray(I1);
I2=rgb2gray(I2);
figure;
imshow(I1);
figure;
imshow(I2);
转换后灰度图如图2.4,2.5所示
图2.4pic1灰度图
3图像数据统计处理
3.1图像数据处理原理
一幅图像可以被看作是空间各点光强度的集合。
MATLAB把灰度图像存储为一个数据矩阵,该数据矩阵中的元素分别代表了图像中的像素。
一幅行数为M、列数为N的图像大小为M×N的矩阵形式为,如图3.1
图3.1矩阵形式
键入命令M=imread('pic2.jpg')可得出pic2的灰度矩阵,如图3.2所示
图3.2pic2灰度矩阵
因此可利用灰度矩阵来分析图片的各种参数以及对数据进行处理,而且由于在应用图片的方面,对图像各项参数的要求不同,所以要对图片进行适当的数据处理,来考察图片的不同参数。
例如均值,标准差,方差就是图像的一些相关的参数,可以用作对图片的质量来作评价。
3.2各像素点中最大值的获取
3.2.1引用函数
Matlab中max()函数用于求最大值。
程序如下:
image_maxpic1=max(max(I1))
Image_maxpic2=max(max(I2))
3.2.2计算结果
图像最大值分析结果如下图所示
图3.3最大值分析
3.3各像素点中最小值的获取
3.3.1引用函数
Matlab中min()函数用于求最小值。
程序如下:
image_minpic1=min(min(I1))
image_minpic2=min(min(I2))
3.3.2计算结果
图像最小值分析结果如下图所示
图3.4最小值分析
3.4各像素点值的均值的获取
3.4.1引用函数
MATLAB中提供均值计算函数mean()和mean2(),函数的使用方法如下:
例如用mean2(X)求出矩阵X所有元素的均值。
若要求整个矩阵的均值,则为mean(mean(X))。
>>X=[123
456]
>>mean(mean(X))=3.5
也可使用mean2函数:
>>mean2(X)=3.5
题目要求计算图像各像素点的均值,因而可通过调用mean2()函数进行计算,在命令行中输入mean2(A_gray)即可求得灰度图各像素点的均值。
程序如下:
image_meanpic1=mean2(I1)
image_meanpic2=mean2(I2)
3.4.2计算结果
图像均值分析结果如图
3.5各像素点值的中值的获取
3.5.1引用函数
MATLAB中提供的median()函数可求出中值。
例如:
median(M),每一列返回一个值为该列从大到小排列的中值.median(M,dim),dim为1,2。
其中1表示按每列返回一个值,为该列从大到小排列的中间值,2表示按每行返回一个值,为该行从大到小排列的中间值.
注意:
如果行或列的个数为偶数,返回中间两个值的平均值。
求I1,I2中像素点值的中值程序如下:
image_medianpic1=median(I1(:
))
image_medianpic2=median(I2(:
))
3.5.2计算结果
图像中值分析结果如下图所示
图3.6中值分析
3.6各像素点值的和的获取
3.6.1引用函数
MATLAB中提供的sum()函数为求和函数,sum(x,2)表示矩阵x的横向相加,求每行的和,结果是列向量。
而缺省的sum(x)就是竖向相加,求每列的和,结果是行向量。
利用sum()函数可求出各像素点的和
程序如下:
image_sumpic1=sum(sum(I1))
image_sumpic2=sum(sum(I2))
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这里是维数,比如说
1234
4561
如果b是1,就是按照行分,如果b是2就是按照列分
如果是三维的矩阵,b=3就按照第三维来分数据。
求个像素点值标准差程序如下:
image_stdpic1=std2(I1(:
))
image_stdpic2=std2(I2(:
))
3.7.2计算结果
图像标准差分析结果如下图所示
图3.8标准差分析
3.8各像素点值的方差的获取
3.8.1引用函数
MATLAB中提供的var()函数可求出方差
程序如下:
image_varpic1=var(double(I1(:
)))
image_varpic2=var(double(I2(:
)))
3.8.2计算结果
图像方差分析结果下图所示
3.9两图中各像素点值的协方差的获取
3.9.1引用函数
MATLAB中提供的cov()函数可求出两数组间的协方差
程序如下:
image_covpic=cov(double(I1),double(I2))
3.9.1计算结果
pic1和pic2两图像像素点值协方差分析结果如上图所示
3.10两图的相对系数的获取
3.10.1引用函数
MATLAB中提供的corrcoef函数可求出两数组间的相对系数。
程序如下:
image_corrcoefpic=corrcoef(double(I1),double(I2))
3.11.2计算结果
图像pic1和pic2的相对系数分析结果如下图所示
3.11两图相对系数分析
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 图像 数据 分析