武汉理工大学《Matlab课程设计》课程设计
运算;结构元素创建与处理;基于边缘的处理;色彩映射表操作;色彩空间变换;图像类型与类型转换。
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’);
6
武汉理工大学《Matlab课程设计》课程设计
⑵ 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:\\zy1.jpg') image(J); title('zy1')
⑶ 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行的算术平均值。
7
武汉理工大学《Matlab课程设计》课程设计
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])的作用一样。
8
武汉理工大学《Matlab课程设计》课程设计
2.数据采集
2.1 MATLAB的读取方法
2.1.1图像的读取
从电脑中调用保存的图片两张,图像为800*600和800*600像素保存为zy1.jpg和zy2.jpg,如图1.1和1.2所示
图2.1 zy1
9
武汉理工大学《Matlab课程设计》课程设计
图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 读取图片
10