版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MATLAB软件使用简介MATLAB是一个功能强大的数学软件,它不但可以解决数学中的数值计算问题,还可以解决符号演算问题,并且能够方便地绘出各种函数图形。MATLAB自1984年由美国的MathWorks公司推向市场,现已成为国际最优秀的科技应用软件之一。一、MATLAB的工作界面启动MATLAB后,出现MATLAB命令窗口,空白区域是MATLAB的工作区,在此可输入和执行命令。二、MATLAB操作的注意事项在工作区输入MATLAB命令后,按下Enter键才能执行命令。MATLAB是区分字母大小写的。如果不想显示结果,只要在所输入命令的后面加上一个分号“;”即可。如:x二2+3/x=5x=2+
2、3;/不显示结果5如果一个表达式一行写不下,可以在行尾键入“”来换行。如:q=5飞+sin(pi)+exp(3)+(1+2+3+4+5).-5+1/2-567命令行与M文件中的百分号“”标明注释。三、MATLAB的变量与表达式MATLAB的变量名MATLAB的变量名是用一个字母打头,后面最多跟19个字母或数字。应该注意不要用MATLAB中的内部函数或命令名作为变量名。列出当前工作空间中的变量命令为:who将内存中的当前变量以简单形式列出;whos列出当前内存变量的名称、大小、类型等信息;clear清除内存中的所有变量与函数。MATLAB常用的预定义变量ans:保存计算结果的缺省变量;Inf或i
3、nf:无穷大;i或j:虚数单位、匚1;pi:圆周率n。MATLAB的运算符数学运算符:+,-,*,(左除),/(右除),(乘幂)关系运算符:,=,=(等于),=(不等于)逻辑运算符:&(逻辑与),|(逻辑或),(逻辑非)MATLAB的表达式及语句表达式由运算符、函数、变量名和数字组成的式子MATLAB语句由变量、表达式及MATLAB命令组成,用户输入的语句由MATLAB系统解释运行oMATLAB语句的2种最常见的形式为:形式1:表达式形式2:变量=表达式在第一种形式中,表达式运算后产生的结果如果为数值类型,系统自动赋值给变量ans,并显示在屏幕上。例1:用两种形式计算56+sin兀+e3算术运
4、算结果。解:形式1:5飞+sin(pi)+exp(3)/ans=1.5645e+004形式2:a=5飞+sin(pi)+exp(3)/a=1.5645e+004A二例2:已知矩阵12,对它们做简单的关系与逻辑运算解:A=1,2;1,2;/B=1,1;2,2;/C=(AB)&(A=B)/C=四、MATLAB的数据显示格式虽然在MATLAB系统中数据的存储和计算都是双精度进行的,但MATLAB可以利用菜单或format命令来调整数据的显示格式oFormat命令的格式和作用如下:format|formatshort5位定点表示formatlong15位定点表示formatshorte5位浮点表示fo
5、rmatlonge15位浮点表示formatshortg系统选择5位定点和5位浮点中更好的表示formatlongg系统选择15位定点和15位浮点中更好的表示formatrat近似的有理数的表示formathex十六进制的表示formatbank用元角分(美制)定点表示formatcompact变量之间没有空行formatloose变量之间有空行例3:解:对数a=5sin7用五位定点、十五位定点以及有理数形式表示出来。a=5+sin(7),formatshort,a/5.6570formatrat,a/3117/551formatlong,a/5.65698659871879五、MATLAB中
6、的常用函数数学上的函数,MATLAB基本上都有。表5.1常用的三角函数函数名称函数功能sinx函数名称函数功能sin(x)正弦函数cosxasin(x)反正弦函数asinxcos(x)余弦函数tanxacos(x)反余弦函数acosxtan(x)正切函数cotxatan(x)反正切函数atanxcot(x)余切函数cotxacot(x)反余切函数acotxsec(x)正割函数secxasec(x)反正割函数asecxsinh(x)双曲函数sinhxasinh(x)反双曲函数asinhx表5.2常用的计算函数函数名称函数功能abs(x)求变量x绝对值|x|sqrt(x)求变量x的算术平方根旅re
7、al(x)求复数X的实部image(x)求复数x的虚部round(x)四舍五入至最诉整数fix(x)无论正负,舍去小数至最近整数sign(x)符号函数rem(x,y)求X除以y的余数exp(x)自然指数expow2(x)2的指数2xlog(x)自然对数lnxlog2(x)以2为底的对数log2xloglO(x)以10为底的对数1giox六、矩阵的操作MATLAB的基本单位是矩阵,它是的MATLAB精髓,掌握矩阵的输入、各种数值运算以及矩阵函数的使用是以后能否学好MATLAB的关键。矩阵的输入(1)直接输入创建矩阵整个矩阵以“”和“”作为首尾,同行的元素用“,”或空格隔开,不同行的元素用“;”或
8、按Enter键来分隔;矩阵的元素可以为数字也可以为表达式,如果进行的是数值计算,表达式中不可包含未知的变量。例4:直接输入创建矩阵解:A=1,2,3;4,15,60;7,8,9/(2)用矩阵函数来生成矩阵MATLAB提供了大量的函数来创建一些特殊的矩阵。例5:输入矩阵。解:ones(3)/%生成元素都为1的3阶方阵表5.3常用的矩阵函数函数名称函数功能函数名称函数功能zeros(m,n)m行n列的零矩阵eig(A)求矩阵A的特征值eye(n)n阶方矩阵poly(A)求矩阵A特征多项式ones(m,n)m行n列兀素为1的矩阵trace(A)求矩阵A的迹rand(m,n)m行n列的随机矩阵cond
9、(A)求矩阵A的条件数randn(m,n)m行n列的正态随机矩阵rref(A)求矩阵A的行最简形magic(n)n阶魔方矩阵inv(A)求矩阵A的逆矩阵hess(A)hess矩阵det(A)求矩阵A的行列式sqrtm(A)求矩阵A的平方根expm(A)求矩阵A的指数值funm(A)按矩阵计算的函数值logm(A)求矩阵A的对数值rank(A)求矩阵A的秩morm(A,1)求矩阵A的范数例6:输入矩阵解:zeros(2,5)/%生成元素都为0的2行5列零矩阵例7:生成3阶魔方矩阵。解:magic(3)/操作符“:”的说明j:k表示步长为1的等差数列构成的数组:j,j+1,j+2,,kj:i:k表
10、示步长为i的等差数列构成的数组:j,j+i,j+2kA(i:j)表示A(i),A(i+1),,A(j)例8:操作符冒号”:”的应用解:1:5/%步长为1的等差数列。1:2:7/%步长为2的等差数列。8:-2:0/%步长为-2的等差、递减数列。对矩阵元素的操作A(i,j)表示矩阵A的第i行第j列元素。A(:,j)表示矩阵A的第j列。A(i,:)表示矩阵A的第i行。A(:,:)表示A的所有元素构造2维矩阵A(:)表示以矩阵A的所有元素按列做成的一个列矩阵。A(i)表示矩阵A(:)的第i个元素。表示空矩阵元素的抽取与赋值例9:已知矩阵,抽取与修改矩阵A的一些元素解:A=12356;sin(3)79;
11、log(2)61/%输入矩阵A。A(2,3)/A(4)/%求矩阵A的第一行第三列兀素。%求矩阵A的第四个元素。A(2:4)/%取矩阵A的A(2),A(3),A(4)。A(1,:)/A(:,3)a=A(1,3)/A(2,1)=100/%取矩阵A的第一行。%取矩阵A的第三列%把矩阵A的第一行第三列元素赋值给变量a。%把矩阵A的第二行第一列元素修改为100。矩阵的扩充A二例10:已知矩阵9B=05,C二13100、8,利用A与B生成矩阵690丿D=(AB),(AAA=k+1disp(int2str(m)endend(2)执行命令文件exam2.m。%求m的算术平方根然后取整%求整数m与i的余数%以字
12、符串的形式显示素数.解:x二-pi:pi/2:pi;/%定义自变量x解:x二-pi:pi/2:pi;/%定义自变量xwhile循环解:x二-pi:pi/2:pi;/%定义自变量xwhile逻辑表达式循环体语句end例19:利用while循环来计算1!+2!+.+50!的值。解:(1).建立命令文件exam3.m%利用while循环来计算1!+2!+.+50!的值sum=0;i=1;whilei51prd=1;j=1;whilej=iprd=prd*j;j=j+1;endsum=sum+prd;i=i+1;enddisp(1!+2!+.+50!的和为:)sum(2)执行命令文件exam3.mif
13、-else-end分支(1)if逻辑表达式执行语句end功能:如果表达式的值为真,就执行语句,否则执行end后面的语句.(2)if逻辑表达式执行语句1else执行语句2end功能:如果表达式的值为真,就执行语句1,否则执行语句2.(3)if逻辑表达式1执行语句1elseif逻辑表达式2执行语句2else语句nend功能:如果表达式1的值为真,就执行语句1,然后跳出if执行语句;否则判断表达式2,如果表达式2的值为真,就执行语句2,然后跳出if执行语句.否则依此类推,一直进行下去.如果所有的表达式的值都为假,就执行end后面的语句.f(x)=,3x-111x1010 x30例19:编一函数计算函
14、数值:sinxlnxx30解:(1).建立M函数文件yx.m。functiony=yx(x)ifx=1&x10&x=30y=3*x-11elsey=sin(x)+log(x)end(2).调用M函数文件计算f(0.2),f(2),f(30),f(10兀)。result二yx(0.2),yx(2),yx(30),yx(10*pi)/switch-case-end分支switch表达式case常量表达式1语句块1case常量表达式2语句块2case常量表达式n,常量表达式n+1,语句块notherwise语句块n+1end功能:switch语句后面的表达式可以为任何类型;每个case后面的常量表达
15、式可以是多个,也可以是不同类型;与if语句不同的是,各个case和otherwise语句出现的先后顺序不会影响程序运行的结果。例20:编一个转换成绩等级的函数文件,其中成绩等级转换标准为考试成绩分数在90,100分显示优秀;在80,90)分显示良好;在60,80)分显示及格;在0,60)分显示不及格。解:(1).建立M函数文件ff.mfunctionresult=ff(x)n=fix(x/10);switchncase9,10disp(优秀)case8disp(良好)case6,7disp(及格)otherwisedisp(不及格)end(2).调用M函数文件判断99分,56分,72分各属于哪
16、个范围.。ff(99)/%优秀ff(56)/%不及格ff(72)/%及格十、Matlab绘图1plot(y)功能:画一条或多条折线图。其中y是数值向量或数值矩阵。说明:当y是数值向量时,lot(y)在坐标系中顺序的用直线段连接顶点(i,y(i)画出一条折线图;当y是数值矩阵时,Matlab为矩阵的每一列画出一条折线,绘图时,以矩阵y每列元素的相应行下标值为横坐标,以y的元素为纵坐标绘制的连线图。例21:画出向量1,3,2,9,0.5折线图。解:y=l,3,2,9,0.5;/plot(y)/plot(x,y)功能:画一条或多条折线图。其中x可以是长度为n的数值向量或是nxm的数值矩阵,y也可以是
17、长度为n的数值向量或是nxm的数值矩阵。说明:当x,y都是长度为n的数值向量时,plot(x,y)在坐标系中顺序的用直线段连接顶点(x(i),y(i)画出一条折线图;当x是长度为n的数值向量且y是nxm的数值矩阵时,plot(x,y)用向量x分别与矩阵y的每一列匹配,在同一坐标系中绘出m条不同颜色的折线图;当x和y都是nxm的数值矩阵时,plot(x,y)分别用矩阵x的第i列与矩阵y的第i列匹配,在同一坐标系中绘出m条不同颜色的折线图。注:plot(x,y)命令可以用来画通常的函数f(x)图形,此时向量x常用命令x=a:h:b的形式获得f(x)函数在绘图区间a,b上的自变量点向量数据,对应的函
18、数向量值取为丫=f(x)。步长h可以任意选取,一般,步长越小,曲线越光滑,但是步长太小,会增加计算量,运算速度要降低。通常步长h取为0.1可以达到较好的绘图效果。如果想在图形中标出网格线,用命令:plot(x,y),gridon即可。例22:画出函数y二sinX2在-5x5的图形。解:x=-5:.1:5;/%取绘图横坐标向量点xy=sin(x.2);/plot(x,y),gridon/x2y2+,1例23:画出椭圆5222的曲线图。fx,5cost(0t2)解:对于这种情形,首先把它写成参数方程y,2sintt=0:pi/50:2*pi;/x=5*cos(t);/y=2*sin(t);/plo
19、t(x,y),gridonplot(x1,y1,x2,y2,x3,y3)功能:在同一图形窗口画出多条不同颜色曲线,曲线关系为:y1,f(xl),y2,f(x2),y3,f(x3),.。例24:在同一图形窗口画出三个函数y二cos2x,y=x2,y=x的图形。解:x=-2:.1:2;/plot(x,cos(2*x),x,x.2,x,x)/legend(cos(2x),x2,x)/4ezplot(F,xmin,xmax)功能:画出符号函数F在区间xmin,xmax内的图像说明:F是只含有一个变量的函数。如果区间xmin,xmax缺省,默认区间为-2pi,2pi2t3ye2COStc4.-1例25:
20、绘制32在0,4*pi间的图形。解ezplot(2/3*exp(-1/2)*cos(3/2*t),0,4*pi)/5二维特殊图形除了plot指令外,Matlab还提供了许多其它的二维绘图指令,这些指令大大扩充了Matlab的曲线作图指令,可以满足用户的不同需要。表2.4绘制二维图形的指令函数名称功能函数名称功能bar直方图loglog双对数曲线barh垂直的直方图semilogxx轴对数坐标曲线bar3三维直方图semilogyy轴对数坐标曲线bar3h垂直的二维直方图polar极坐标曲线hist统计直方图stairs阶梯图pie饼图stem火柴棍图pie3三维饼图pcolor伪彩图fplot
21、数值函数二维曲线area面积图ezplot符号函数二维曲线errorbar误差棒棒图gplot绘拓扑图quiver矢量场图fill平面多边形填色ribbon代状图例26:练习扌旨令bar,stairs,pie,pie3,stem,area.解:x=1:5;subplot(2,3,l),bar(x),title(直方图)/subplot(2,3,2),stairs(x),title(阶梯图)/subplot(2,3,3),stem(x,rp),title(火柴棍图)/subplot(2,3,4),pie(x),title(饼图)/subplot(2,3,5),pie3(x),title(三维饼图
22、)/subplot(2,3,6),area(x),title(面积图)/6.三维网格命令mesh由函数meshgrid生成格点矩阵后,就可以求出各格点对应的函数值,然后利用三维网格命令mesh与三维表面命令surf画出空间曲面。函数mesh用来生成函数的网格曲面。函数mesh有如下三种形式:mesh(X,Y,Z)X,Y,Z是同维数的矩阵mesh(x,y,Z)x,y是向量,而Z是矩阵。X,Y二meshgrid(x,y)等价于mesh(X,Y,Z)mesh(Z)若提供参数x,y,等价于mesh(x,y,Z),否则默认x=l:n,y=l:m,其中ZOTn例27:画出函数z二sin(x+siny)在3
23、x,y3及z二x2-2y2在-10 x,yn|(D(p,q)-D(p,q-1)nl(D(p,q)-D(p+1,q)n|(D(p,q)-D(p-1,q)nl(D(p,q)-D(p-1,q+1)n|(D(p,q)-D(p+1,q-1)n|(D(p,q)-D(p-1,q-1)n|(D(p,q)-D(p+1,q+1)nT(p,q)=0;%置边界点为黑色elseT(p,q)=255;%置非边界点为白色end;end;end;subplot(2,1,1);image(A);title(灰度图原图);axisimage;subplot(2,1,2);image(T);title(提取轮廓线);axisima
24、ge;%将窗口分割为两行列,下图显示于第行%显示原图像%图释%保持图片显示比例%下图显示于第二行%显示提取轮廓线后的图片%图释%保持图片显示比例注释:pix为要提取轮廓线的灰度图名(带路径),由单引号括住。n自定义的灰度值差值,超过该值就是轮廓线上的点,反之不然。这是一个最重要的参数,通过调节它的值,修整轮廓线的效果,取范围在040之间的任何有理数。AMATLAB读取原图片后返回的数据矩阵,2维(MN)T新建的与A矩阵同等行列数的矩阵,待放入比较后结果,代码的主体是讦一elseend部分,其原理就是将中心点与其周围的8个点依次比较,发现有一个差值大于自定义的值时,就判断其为轮廓线上的点并将之置
25、为黑色;若其与周围8个点的比较值都小于自定义值时,则其不在轮廓线上,置白色。灰度图提取轮廓线示例(n=20):5U10015U2002a3CGES0和Iffi150曲D篦D彩色图提取图像轮廓线彩色图片经过IMREAD函数读取后,由于它的每一个像素点都是由红、绿、蓝三色的强度值一起定义其颜色的,所以,生成的是一个3维的(MN3)矩阵。矩阵平面(:,:,1)代表对应像素点的红色强度值,矩阵平面(:,:,2)是绿色强度值,矩阵平面(:,:,3)则是蓝色强度值。在每一个矩阵平面中强度值的范围是0,255的正整数。位于轮廓线上的点,它的红、绿、蓝三色的强度值与其周围的点必然有一定的差值,也正式利用这些差
26、值的比较,可以将那些位于边缘的点提取出来。在算法上,彩色图与灰度图不同的是,彩图的每一个单色矩阵可以单独用来判定该点是否位于轮廓线上。其算法与灰度图的原理非常相似。在彩色图的算法中,加入了对判定矩阵的选择,即提供使用者自由选择用图片的哪一个单色矩阵进行轮廓线提取。因为根据图片本身的特点,选择更适合于进行提取的矩阵,其效果是十分不同的,在下面的讨论中将会再次提到这个问题。算法关键的地方同样是对IMREAD生成的矩阵进行了线性变换。首先,将这个矩阵从8位无符号型变成双精度的数值存储;然后才能进行下一步的将其每个值都除以255,这样就把每个数值都调整为01之间的小数;再用正弦sin函数将这些值做变换
27、,并取求得的结果放大40倍。这样一来,本来是在0255之间的正整数,就被变换到01之间的小数,然后再离散成040之间的双精度数值。其目的是为了在进行比较单色强度值的时候,方便自定义各种带小数的差值。彩色图轮廓线提取的源代码(.m文件)如下:functioncolordrawout(pix,n)A=imread(pix);B=A(:,:,1);C=A(:,:,2);D=A(:,:,3);fori=1:3%彩色图片轮廓线提取函数%读取指定彩色图片%红色强度值矩阵%绿色强度值矩阵%蓝色强度值矩阵%依次从三个矩阵中提取轮廓线%从红色矩阵提取E=B;elseifi=2E=C;elseE=D;end;en
28、d;H=double(E);F=40*sin(1/255*H);k,j=size(B);T=A;forp=2:k-1forq=2:j-1%从绿色矩阵提取%从蓝色矩阵提取%将选择的矩阵变为双精度矩阵%进行非线性变换%k,j分别为矩阵D的行数和列数ifi=1解:x二-pi:pi/2:pi;/%定义自变量xif(F(p,q)-F(p,q+1)n|(F(p,q)-F(p,q-1)n|(F(p,q)-F(p+1,q)n|(F(p,q)-F(p-1,q)n|(F(p,q)-F(p-1,q+1)n|(F(p,q)-F(p+1,q-1)n|%置边界点黑色(F(p,q)-F(p-1,q-1)n|(F(p,q)-
29、F(p+1,q+1)nT(p,q,1)=0;T(p,q,2)=0;T(p,q,3)=0;elseT(p,q,1)=255;T(p,q,2)=255;T(p,q,3)=255;%置非边界点白色end;end;end;subplot(2,2,i+1);%将窗口分割为两行两列,下图显示于第i+1位置image(T);%显示轮廓线title(i);%图释axisimage;%保持图片显示比例%下图显示于第1位置%显示原彩色图片%图释%保持图片显示比例end;subplot(2,2,1);image(A);title(彩色图原图);axisimage;注释:pix为要提取轮廓线的灰度图名(带路径),由单
30、引号括住。n自定义的强度值值差值,超过该值就是轮廓线上的点,反之不然。这是一个最重要的参数,通过调节它的值,修整轮廓线的效果范围为040之间的任何有理数。AMATLAB读取原图片后返回的数据矩阵,3维(MN3)T新建的与A矩阵同等行列数的矩阵,待放入比较后结果。代码中加入的部分是对单色强度值矩阵的选择。从比较中可以看出,选择彩色图片中最大程度的颜色矩阵,可以提高提取轮廓线的效果。譬如:图片以红色为主,就选择1红色矩阵。代码的主体同样是讦一elseend部分。其原理仍是将中心点与其周围的8个点依次比较,发现有一个差值大于自定义的值时,就判断其为轮廓线上的点并将T矩阵中对应点置为黑色;若其与周围8
31、个点的比较值都小于自定义值时,则其不在轮廓线上,T矩阵对应点置白色。彩色图提取轮廓线示例:501001502002503002SO10O1502002503001501LIO150200250300501150200250300注:n值为1.6时,1)由红色矩阵提取的轮廓线;2)由绿色矩阵提取的轮廓线;3)由蓝色矩阵提取的轮廓线。六、结论与应用在前面的算法中,在逐行逐列扫描比较各个象素点是否属于轮廓线上的点的过程中,事先预设除去边框的所有点,这是为了得到比较精简实用的算法。否则,算法会相对复杂,首先需将图像的边框引入,在算法中便多了四条特殊的线和四个特殊点,就是上下左右的边线及图像的四个顶点。
32、拿四个顶点而言,可供它们进行比较的参考点只有三个,而且对于每个点而言,三个参考点的位置都不相同,这样就造成了算法的累赘冗余。同理,边线也是,边线上的点只有五个参考点,也是各边方向不同,需要大量相似的代码。实验证明,提取轮廓线时,加上边框与不加边框的区别非常不明显,故采用后者的精简算法。在灰度图和彩色图的算法中,对读取生成的图片数据矩阵进行了线性变换,为的是更好的调节自定义强度值的差值,从而得到令人满意的结果。选择三角函数sin,用其进行变换后,可以保证结果值都落到01之间,从而控制扩大后的数值都在040的范围。其实这个函数也可以使用其他离散函数,譬如log,它的离散作用更加明显,可以将值都变换
33、到0,)区间上。)由于噪声和模糊的存在,轮廓线可能会变宽或在某些点处发生间断。在算法中,发现图片出现断点,可以通过减小n值来提高轮廓线的精度从而减少断点。但是,轮廓线变粗的同时,弊处是也使原有的清晰的其他线条变得更加粗,甚至出现了模糊的散点。为此,只能寻找一个合适的n值,使断点不至于太多,轮廓线也不会太黑糊。在MATLAB的图像处理中,导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点处算得的值比较高,因此可将这些导数值作为相应点的边界强度,通过设置门限的方法,提取边界点集。一阶导数与是最简单的导数算子,它们分别求出了灰度在x和y方向上的变化率,而方向a上的灰度变化率可以用相
34、应公式进行计算;对于数字图像,应该采用差分运算代替求导,差分公式参考相关教材。函数f在某点的方向导数取得最大值的方向是,方向导数的最大值是称为梯度模。利用梯度模算子来检测边缘是一种很好的方法,它不仅具有位移不变性还具有各向同性。为了运算简便,实际中采用梯度模的近似形式。另外,还有一些常用的算子,如Roberts算子和Sobel算子。由于Sobel算子是滤波算子的形式,用于提取边缘。也可以利用快速卷积函数,简单有效,因此应用很广泛。拉普拉斯高斯(loG)算法是一种二阶边缘检测方法。它通过寻找图像灰度值中二阶微分中的过零点(ZeroCrossing)来检测边缘点。其原理为,灰度级变形成的边缘经过微
35、风算子形成一个单峰函数,峰值位置对应边缘点;对单峰函数进行微分,则峰值处的微分值为0,峰值两侧符号相反,而原先的极值点对英语二阶微分中的过零点,通过检测过零点即可将图像的边缘提取出来。MATLAB的图像处理工具箱中提供的edge函数可以实现检测边缘的功能,其语法格式如下:1:采用Sobel算子进行边缘检测BW=edge(I,sobel)2:指定算子方向的Sobel算子边缘检测BW=edge(I,sobel,direction)其中:direction=horizontal,为水平方向;direction=vertical,为垂直方向;direction=both,为水平和垂直两个方向。3:Ro
36、berts算子BW=edge(I,roberts)4:拉普拉斯高斯算子BW=edge(I,log)七、练习1任意选取一个灰度图像和彩色图像,对算法中若干关键语句中的参数进行调整,得出不同的实验结果,并对这些结果进行分析。2根据自己所学知识,提出自己的轮廓线提取方法,与简单阈值法进行比较分析。3.练习matlab自带算子的检测结果。4写出图像轮廓线提取的实验报告。实验2RGB向量空间中的图像分割技术一、实验目的与要求:1、能熟练应用matlab去分析问题、解决问题;2、熟悉对matlab的图像处理的功能,掌握基本的图像处理的若干命令;3、在应用matlab进行图像处理方面具备一定的编程能力。4、
37、掌握figure,imread,image,colormap,imshow,imwrite,subplot,title,rgb2gray,imfinfo等语句的基本使用方法。5、掌握图像分割技术中的简单方法并上机实现。6、进一步提高对复杂图像处理的能力。二、问题描述“图像分割”简单地说,就是要把图像中有意义的区域与背景分离开,依据的原则是同一区域具有“同质性”。“区域”是图像中相邻的具有类似性质的点组成的集合。图像分割是在图像预处理的基础上对信息进行组织与加工,它是在对图像自动识别与理解之前必不可少的步骤,其目标就是将图像划分为具有区域强相关性的各组成部分。三、问题分析“图像分割”模拟提取图像
38、中景物的信息。因此,可以通过图像中物体所具备的特征(如大小、形状、颜色、纹理等)来指导分割,并利用这些特征之间的相互信息,进行更复杂的分割。常见的分割方法有:阈值法、类间最大距离法、区域增长法等。本实验重点实现前面两种方法。四、背景知识介绍重点介绍两种简单的分割方法,简单阈值法和类间最大距离法。1简单阈值法在理想状态下,背景与对象之间的灰度值相差很大,且同一个对象具有基本相同的灰度值。体现在图像的灰度直方图上,就是直方图呈明显的双峰分布,两类灰度级之间无交叠。因此,可以认为处于直方图谷底的灰度值就是目标对象和背景之间的分界线。称该灰度为“阈值”,选取了阈值以后,根据实际情况,把灰度高于该阈值的
39、像素点置为白色,低于该阈值的像素点置为黑色。这样处理之后就可以把目标图像和背景分开了。设f(x,y)表示原图像,g(x,y)表示分割后的图像,T为选定的灰度阈值,分割算法表示为:g(x,y)255,0,f(x,y)Tf(x,y)T从表达式可以看出,算法的关键在于阈值T的确定。在理想状态下,我们可以取直方图中处于谷底的点作为阈值;或者通过多次调试,确定效果最优的灰度值作为阈值。2类间最大距离法前面介绍的简单阈值法有一个最大的不足,就是阈值的选取不够智能化。于是我们想寻求一种智能的分割方法。类间最大距离法就是其中一种方法。显然,一幅灰度图像的目标区域跟背景区域有较大的灰度区别,才能使我们分辨出目标
40、和背景。因此可以设计一种算法,以不同区域之间的距离达到最大为目标,用运筹学中的规划方法,得到实现目标的最优阈值。现在,关键的问题是如何定义区域之间的“距离”。可以采用不同的方法来衡量距离,这里采取一种相对简单的方法,就是把两类区域像素灰度均值的方差作为度量的距离。灰度均值的计算:ui=工f(x,y)/N;1)其中:f(x,y)表示二维图像(x,y)处像素点的灰度值,N表示像素点的个数。两区域间相对距离的计算:给定一个初始阈值ThO,将图像分为C1和C2两区域,对应区域的灰度均值分别为Ul、U2。则两区域的相对距离为:S=(U2-ThO)X(ThO-U1)/(U2-U1厂2(2)选择最佳的阈值给
41、定阈值变化的区间a,b,用优化函数fmin()获得区间范围内的最佳阈值Th,使得图像按照该阈值Th分为C1和C2两类后,满足:S=maxSThTa,bT五、实验过程l简单阈值分割实验实验流程图:解:x二-pi:pi/2:pi;/%定义自变量x用珀m饕懸養崇畀势饪fi:为国4/心TCKjy=255T=OIIV=V-l囂=囂+1显示固像T从直方图中得到阙值ThT=Atl,ITiJ=miEECA)X=1y=1W解:x二-pi:pi/2:pi;/%定义自变量x4/退出源代码(.m文件):functionI=smpthrshd(A,T)%简单阀值法的源代码,为了提高函数的可重用型,把原图像作为参数I=A
42、;n,m=size(I);fori=1:nforj=1:m讦A(i,j)TI(i,j)=255;%I是目标图像,与原图像大小相同%读出原图像的大小%两重循环,实现扫描矩阵的每一个像素点%以下代码实现:%当像素点的灰度小于阈值则置为黑色%当像素点的灰度大于阈值则置为白色end;end;end;imshow(I);%显示分割后的图像title(经过简单阀值分割后的图像);类间最大距离法分割实验算法流程图如下:U1=0;%如果区域1为空,则设置其灰度均值为0解:x二-pi:pi/2:pi;/%定义自变量x新mH-size(A)k=1;y=lICk,y)=255ICx,y)=ax-x+L;y=y-H,
43、-in&ymiT算法源代码(.m文件)如下:%子函数1,计算灰度均值%functionU1,U2=getaverage(I,Th)%计算两个区域的灰度均值%阈值Th把图像分成两个区域:灰度高于Th的区域和灰度低于Th的区域n,m=size(I);suml=0;%设置灰度和的初始值sum2=0;num1=0;%设置每个区域像素点个数的初值num2=0;fori=1:n%两重循环,实现扫描整个矩阵forj=1:m讦I(i,j)=Th%如果灰度小于或等于阈值,则属于区域1num1=num1+1;%区域1的像素个数加1sum1=sum1+I(i,j);%区域1灰度之和加上当前像素点的灰度else%否则
44、,该像素点属于区域2sum2=sum2+I(i,j);%区域2灰度之和加上当前像素点的灰度end;end;end;num2=n*m-num1;%区域2的像素个数等于所有像素数减区域1的像素数讦num1=0%如果区域1不为空U1=sum1/num1;%区域1的灰度均值等于灰度和除以区域1的像素个数else解:x二-pi:pi/2:pi;/%定义自变量xend;ifnum2=0%如果区域2不为空U2=sum2/num2;%区域2的灰度均值等于灰度和除以区域2的像素个数elseU2=0;%如果区域2为空,则设置其灰度均值为0end;%子函数2获取类间距离%functionS=get_S(Th,I)%
45、获得距离的函数U1,U2=getaverage(I,Th);%调用函数getaverage,返回两区域的灰度均值if(U1-U2)=0%如果两个区域的灰度均值不相等S=-(U1-Th)*(Th-U2)/(U1-U2)A2;%用式2.2计算距离elseS=0;%如果灰度均值相等,则距离为0end;%主函数,用类间最大距离法进行分割%functionI=maxsp(A)%利用类间最大距离法实现分割,其中用到两个函数:getaverage,get_SA=double(A);%因为要对矩阵元素进行加减操作,先转成双精度类型%下面用优化函数获取使距离达到最大的那个阈值%Th,option=fmin(ge
46、t_S,0,255,1,1.e-12,A);%formatlab6.5.1Th=fminbnd(Th)get_S(Th,A),0,255);%formatlab7.0.1%得到最优的阈值后,下面的操作与简单阈值法相同I=A;n,m=size(I);fori=1:nforj=1:mifA(i,j)ThI(i,j)=255;end;end;end;imshow(I);title(经过类间最大距离法分割后的图像);六、结论与应用1简单阈值分割实验F面以肝癌的CT图片为例进行实验。图1肝癌的CT图片(左侧两箭头指向的区域为癌块)图2原图的灰度直方图灰度直方图的分析:从图2可以看出直方图出现了两个波峰,
47、对照原图,我可以发现图1中根据像素基本上可以分为两个区域。这两个区域分别具有不同的亮度,恰好对应着直方图中的两个波峰。因此,理论上我们可以取100到230之间的任何一个灰度作为阈值,但为了分割后图像的效果较为美观,阈值最好取在100到170之间。图3取T=100后的分割效果简单阈值法只考虑直方图的灰度信息,没有利用图像的其他信息,如图像中包含物体的大小,光源的位置等。在图像直方图为单峰或者图像较复杂的情况下无效。而且这种方法的一个最大的不足就是对阈值的选取不够智能化,必须根据直方图,通过人工的判断,并经过多次尝试才能得到好的分割效果。虽然对于简单的图片,这种算法分割的效果比较能让人满意,但如果
48、有大量的图片需要处理或者人工无法干预的情况下该怎么办呢?有没有一种更智能一些的方法呢?我们可以先不要求有那么高的处理效果,但要求智能,以减少工作量。2.类间最大距离法分割实验把图1作为原图,采用类间最大距离法进行分割,得到最优的阈值为133.5159,分割效果图如下:经过类间最大距离法分割后的图像图4阈值为89.5448的分割效果图类间最大距离法实现了智能选取阈值的功能,分割效果不错。对于一些特殊的图像,相信根据实际情况给出新的距离的定义,也可以得到很好的分割效果。但这种方法依然没有解决简单阈值法中提到的一个问题,就是同样只考虑直方图的灰度信息,没有考虑到图像的其他有用信息,如图像的大小和光源
49、的位置等等!如果能把这些有用的信息考虑进去,对图像的分割将可以达到更好的效果。七、练习任意选取一个灰度图像,对算法中若干关键语句中的参数进行调整,得出不同的实验结果,并对这些结果进行分析。根据自己所学知识,提出自己的阈值选取方法,与类间最大聚类法的分割效果进行比较分析。写出图像分割的实验报告。实验一用矩阵变换实现对图像形状及颜色畸变的校正八、实验目的与要求让学生了解数字图像的数学表达及相关概念,通过实验让学生加深对数学在相关学科的应用价值的认识,培养学生的实际操作能力,并引导他们建立基础学科在处理具体问题时方法上联系。九、问题描述对于在颜色或形状上发生畸变的图像,通过数学的方法实现校正。三、问
50、题分析先由教师讲授数字图像的基本概念(包括图像的数学化、采样、量化、灰度、各种数学图像的文件格式、表色系、颜色映像等),再通过具体的实例给学生示范对于在颜色或形状上发生畸变的图像如何通过数学的方法实现校正的过程。最后让学生动手完成对某些特殊畸变的图像的校正,写出数学原理和实验报四、背景知识介绍数字图像的数值描述及分类图像是对客观存在物体的一种相似性的生动模仿与描述,是物体的一种不完全的不精确的描述。数字图像是用一个数字阵列来表示的图像。数字阵列中的每个数字,表示数字图像的一个最小单位,称为像素。采样是将空域上或时域上连续的图像变换成离散采样点(像素)集合的一种操作。对一幅图像采样后,若每行像素
51、为M个,每列像素为N个,则图像大小为MN个像素。例如,一幅640480的图像,就表示这幅连续图像在长、宽方向上分别分成640个和480个像素。显然,想要得到更加清晰的图像质量,就要提高图像的采样像素点数,即使用更多的像素点来表示该图像。客观世界是三维的,从客观场景中所拍摄到的图像是二维信息。因此,一幅图像可以定义为一个二维函数f(x,y),其中x,y是空间坐标。对任何一对空间坐标(x,y)上的幅值f(x,y),成为表示图像在该点上的强度或灰度,或简称为像素值。因为矩阵是二维结构的数据,同时量化值取整数,因此,一幅数字图像可以用一个整数矩阵来表示。矩阵的元素位置(ij),就对应于数字图像上的一个
52、像素点的位置。矩阵元素的值f(i,j)就是对应像素点上的像素值。值得注意的是矩阵中元素f(i,j)的坐标含义是i为行坐标,j是列坐标。而像素f(x,y)的坐标含义一般指直角坐标系中的坐标,两者的差异如下图:0列坐标纵坐标(y)矩阵元素f(i,j)像素f(x,y)0横坐标(x)行坐标(i)图1.1矩阵坐标系与直角坐标系对应于不同的场景内容,数字图像可以大致分为二值图像,灰度图像,彩色图像三类。二值图像它是指每个像素不是黑就是白,其灰度值没有中间过度的图像。二值图像对画面的细节信息比较粗略,适合于文字信息图像的描述。它的矩阵取值非常简单,即f(i,j)=0(黑),或f(i,j)=1(白),除此之外
53、没有其他的取值。当然,0和1表示黑或白都只是人定义的,可以人为地反过来定义。这种图像具有数据量小的优点。灰度图像它是指每个像素的信息由一个量化后的灰度级来描述的数字图像,灰度图像中不包含彩色信息。标准灰度图像中每个像素的灰度有一个字节表示,灰度级数位256级,每个像素可以是0255(从纯黑到纯白)之间的任何一个值。值越接近0就越黑,越接近255就越白。彩色图像常用的图像彩色模式有RGB模式、CMYK模式和HIS模式,一般情况下只使用RGB模式。它是根据三基色成像原理来实现对自然界中的色彩描述的。这一原理认为,自然界中的所有颜色都可以由红,绿,蓝(R,G,B)三基色组合而成。如果三种基色的灰度分
54、别用一个字节(8bit)表示,则三基色之间不同的灰度组合可以形成不同的颜色。数字图像质量决定因素数字图像的效果与以下几个评价参数有关。图像分辨率即采样所获得的图像总像素的多少。采样密度即在图像上单位长度所包含的采样点数。采样密度的倒数是像素间距。采样频率即一秒钟采样的次数。它反映了采样点之间的间隔大小,采样频率越高,丢失的信息越少,图像的质量越好。扫描分辨率表示一台扫描仪输入图像的细微程度,指每英寸扫描所得的点,单位是DPI(DotPerlnch)。数字越大,表示被扫描的图像转化为数字化图像越逼真,扫描仪质量也越好。彩色空间三基色原理近代的三色学说研究认为,人眼的视网膜中存在着三种锥体细胞,它
55、们包含不同的色素,对光的吸收和反射特性不同,对于不同的光就有不同的颜色感觉.研究发现,第一种锥体细胞专门感受红光,第二和第三种锥体细胞则分别感受绿光和蓝光.它们三者共同作用,使人们产生了不同的颜色感觉.这三种色光以不同比例混合,几乎可以得到自然界中的一切色光,混合色域最大;而且这三种色光具有独立性,其中一种原色不能由另外的原色光混合而成,由此,称红,绿,蓝为色光三原色.为了统一认识,1931年国际照明委员会(CIE)规定了三原色的波长nmR0.700=九,nmG1.546=九,nmB8.435=九。彩色的基本特征色调(hue)色调又称为色相,是当人眼看到一种或多种波长的光时所产生的彩色感觉,它
56、反映颜色的种类,是决定颜色的基本特性.色调用红,橙,黄,绿,青,蓝,靛,紫等术语来刻画.不透明物体的色调是指该物体在日光的照射下,所反射的各光谱成分作用于人眼的综合效果;透明物体的色调则是透过该物体的光谱综合作用的效果。饱和度(saturation)饱和度是指颜色的纯度,即色彩含有某种单色光的纯净程度,它可用来区别颜色的深浅程度.对于同一色调的彩色光,饱和度越深颜色越鲜明或说越纯,例如鲜红色饱和度高,而粉红色的饱和度低.完全饱和的颜色是指没有渗入白光所呈现的颜色,例如仅由单一波长组成的光谱色就是完全饱和的颜色。亮度(brightness)亮度是视觉系统对可见物体辐射或者发光多少的感知属性.亮度
57、是光作用于人眼时所引起的明亮程度的感觉,它与被观察物体的发光强度有关.由于其强度的不同,看起来可能会亮一些或暗一些.对于同一物体,照射光越强,反射光也越强,感觉越亮;对于不同的物体在相同照射情况下,反射越强者看起来越亮。通常把色调和饱和度通称为色度.亮度是用来表示某彩色光的明亮程度,而色度则表示颜色的类别与深浅程度。五、实验过程1图像畸变介绍从数字图像处理的观点来考察畸变校正,实际上是一个图像恢复的过程,是对一幅退化了的图像进行恢复。在图像处理中,图像质量的改善和校正技术也就是图像复原,当初是在处理从人造卫星发送回来的劣质图像的过程中发展完善的。目前,图像畸变校正的应用领域越来越广,几乎所有涉
58、及应用扫描和成像的领域都需要畸变校正。图像在生成和传送的过程中,很可能会产生畸变,如:偏色、模糊、几何失真、几何倾斜等等。前几种失真主要是体现在显示器上,而后一种失真则多与图像集角度有关。不正确的显影,打印、扫描,抓拍受反射光线的影响等方式,都会使图像产生偏色现像。模糊、几何畸变主要是在仪器采集图片过程中产生,大多是因机器故障或操作不当影响导致,如在医学成像方面。而几何空间失真广泛存在于各种实际工程应用中,尤其是在遥感、遥测等领域。2图像畸变校正过程所用到的重要工具灰度直方图是关于灰度级分布的函数,是对图象中灰度级分布的统计。灰度直方图是将数字图象中的所有像素,按照灰度值的大小,统计其所出现的
59、频度。通常,灰度直方图的横坐标表示灰度值,纵坐标为想像素个数。直方图上的一个点的含义是,图像存在的等于某个灰度值的像素个数的多少。这样通过灰度直方图就可以对图像的某些整体效果进行描述。从数学上讲,图像的灰度直方图是图像各灰度值统计特征与图像灰度值出现的频率。从图形上来讲,它是一个一维曲线,表征了图像的最基本的统计特征。作为表征图像特征的信息而在图像处理中起着重要的作用。由于直方图反映了图像的灰度分布状况,所以从对图像的观察与分析,到对图像处理结果的评价,灰度直方图都可以说是最简单、最有效的工具。3图像颜色畸变校正介绍图像颜色畸变现象可以是由摄像器材导致,也可以是由于真实环境本身就偏色导致,还有
60、的是由于图像放置过久氧化、老化导致。无论其产生的原因如何,其校正方法都是类似的。图像颜色畸变校正在社会生活、工作中应用十分广泛。小到家庭生活图像处理,大到医学成像应用、罪犯识别和国防侦察,都离不开它。由于灰度图比较简单,因此本文跳过灰度图,直接研究彩色图的颜色畸变校正,但无论是灰度图还是彩色图,其校正原理都是一样的,程序实现上只须对程序进行小小的调整。如果用Matlab显示颜色畸变的图像RGB基色直方图,发现相对正常图像,颜色畸变的图像的直方图的三种基色的直方图中至少有一个直方图的像素明显集中集中在一处,或则集中在0处或则集中在255处,而另一部分有空缺,或则集中在中间而两边空,因此通过调整该
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年通义千问GEO优化服务商TOP3权威测评:六维评估模型精准识别靠谱服务商
- 主顶油缸保养技术规范
- T∕CSF 0141-2025 遥控便携式森林灭火弹(火箭)通 用技术规范
- 上犹五年级英语陡水阅读冲刺押题卷
- 《数控机床加工零件》课件-首件试切的直径精度控制要领1
- 2025年国务院发展研究中心有关直属单位招聘考试真题
- 2025年天津海运职业学院招聘真题
- 2025年广西体育高等专科学校招聘考试真题
- 《商务数据可视化》课件-5.5 掌握数据规约
- 2026年本溪市文化局系统事业单位人员招聘考试备考试题及答案详解
- 人教版八年级下册物理期末考试试卷及答案
- DB64-T 1974-2024 公路稳定类钢渣基层应用技术规范
- 青少年软件编程(图形化)等级考试试卷(三级)附有答案
- DL∕T 1919-2018 发电企业应急能力建设评估规范
- 【A房地产销售公司销售人员绩效考核问题及完善策略5900字(论文)】
- JBT 10960-2024 带式输送机 拉绳开关(正式版)
- 雷克萨斯ES说明书
- 唐太宗李世民人物简介模板
- 9.3 LLDPE物质安全资料表-2
- 2023年广东交通职业技术学院单招综合素质模拟试题及答案解析
- YC/T 88.1-2006烟草机械喂料机第1部分:型式与基本参数
评论
0/150
提交评论