基于MATLAB的图像处理的基本运算.docx

上传人:b****5 文档编号:5176655 上传时间:2022-12-13 格式:DOCX 页数:34 大小:1.45MB
下载 相关 举报
基于MATLAB的图像处理的基本运算.docx_第1页
第1页 / 共34页
基于MATLAB的图像处理的基本运算.docx_第2页
第2页 / 共34页
基于MATLAB的图像处理的基本运算.docx_第3页
第3页 / 共34页
基于MATLAB的图像处理的基本运算.docx_第4页
第4页 / 共34页
基于MATLAB的图像处理的基本运算.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

基于MATLAB的图像处理的基本运算.docx

《基于MATLAB的图像处理的基本运算.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的图像处理的基本运算.docx(34页珍藏版)》请在冰豆网上搜索。

基于MATLAB的图像处理的基本运算.docx

基于MATLAB的图像处理的基本运算

课程设计任务书

学生姓名:

专业班级:

指导教师:

工作单位:

信息工程学院

题目:

基于MATLAB的图像处理的基本运算

初始条件:

(1)Matlab应用软件的基本知识及操作;

(2)高等数学、线性代数等基础数学运算;

(3)图像处理基础知识。

要求完成的主要任务:

1、必做题:

采用MATLAB选用适当的函数或矩阵进行如下计算

(1)极限的计算、微分的计算、积分的计算、级数的计算、求解代数方程、求解常微分方程;

(2)矩阵的最大值、最小值、均值、方差、转置、逆、行列式、特征值的计算、矩阵的相乘、右除、左除、幂运算;

(3)多项式加减乘除运算、多项式求导、求根和求值运算、多项式的部分分式展开、多项式的拟合、插值运算。

2、选做题:

基于MATLAB的图像处理的基本运算

(1)能够对图像亮度和对比度变化调整,并比较结果

(2)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的和旋转操作,并保存,比较几种插值的效果

(3)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。

(4)对图像加入各种噪声,比较效果。

指导教师签名:

年月日

系主任(或责任教师)签名:

年月日

目录

摘要I

AbstractII

1.Matlab基本运算的知识1

1.1运算的基本函数1

1.2矩阵的基本函数1

1.3多项式的基本函数3

2.Matlab基本运算4

2.1符号计算4

2.1.1符号表达式极限4

2.1.2符号表达式微分4

2.1.3符号表达式积分5

2.1.4级数的计算5

2.1.5代数方程的求解7

2.1.6常微分方程的求解8

2.2矩阵的基本运算8

2.2.1矩阵的最大最小值8

2.2.2矩阵的均值、方差9

2.2.3矩阵的转置10

2.2.4矩阵的逆11

2.2.5矩阵的行列式11

2.2.6矩阵的特征值11

2.2.7矩阵的乘除12

2.2.8矩阵的幂运算13

2.3多项式的基本运算14

2.3.1多项式的四则运算14

2.3.2多项式的求导15

2.3.3多项式的求根15

2.3.4多项式的求值16

2.3.5多项式的部分分式展开16

2.3.6多项式的拟合17

2.3.7多项式的插值运算19

3.图像处理的基本运算21

3.1图像的选取21

3.2原始图像的读入和显示21

3.3真彩图像转换为灰阶图像23

3.4图像亮度对比度调整24

3.5图像放大和缩小26

3.6图像的旋转27

3.7图像直方图统计和均衡29

3.8图像加入噪声30

4心得体会33

5参考文献34

摘要

MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

本篇主要分别介绍了matlab在高等数学中微机分的一些基本运算,线性代数中矩阵的一些基本计算以及多项式中的计算,采用具体举例,然后根据具体的例子建模,然后编写m文件,然后实际调试运行来得出结果的方式来整理报告。

报告通过设计matlab进行图像的亮度对比度变化、亮度的缩小放大和旋转、直方图统计和直方图均衡、以及加入各种噪声,使用各种程序和函数,来完成上述功能,并分别对结果进行分析与调试。

总结了程序调试的经验及各个函数的使用技巧。

很好的实现了matlab的图像处理功能。

关键字:

微积分、矩阵、多项式、图形、matlab图像处理、函数、经验总结

 

Abstract

MATLABisthematrixlaboratories(MatrixLaboratory),istheshortnameoftheUnitedStatesMathWorkscompanyproducescommercialmathematicssoftwareforalgorithmdevelopment,datavisualization,dataanalysisandnumericalcalculationofadvancedtechnicalcomputinglanguagesandinteractiveenvironment,includingMATLABandSimulinktwomost.

ThemaindifferenceIhaveintroducedinadvancedmathematicsmatlabcomputerpointsinsomeofthebasicoperations,linearalgebra.Somebasiccalculationsinthematrixandthecalculationofthepolynomial,usingconcreteexamples,andthenthespecific.Examplesofmodeling,thenwritemfile,andthentothecommissioningwaytoorganizethefindingsreported.

Thisdesignthroughmatlabimagebrightness/contrastchange,brightnessnarrowingamplifierandrotating,histogramstatisticsandhistogramequalization,andjoinallnoises,useavarietyofprogramsandfunctions,tocompletetheabovefunctions,andseparatelyintheanalysisanddebugging.Summarizestheprogramtestexperienceandeachfunctionuseskill.Verygoodrealizedmatlabimageprocessingfunction.

Keywords:

Calculus,matrix,polynomial,graphics,matlab,image,processingfunction,experience

1.Matlab基本运算的知识

1.1运算的基本函数

sin()  正弦(变量为弧度)  

cot()  余切(变量为弧度)

sind()  正弦(变量为度数)  

cotd()  余切(变量为度数)

asin()  反正弦(返回弧度)    

acot()  反余切(返回值为值弧度)  

asind()反正弦(返回值为度数)  

acotd()反余切(返回值为度数)  

cos()  余弦(变量为弧度)    

exp()  指数    

cosd()  余弦(变量为度数)  

log()  对数  

acos()  余正弦(返回值为弧度)  

log10()以10为底对数

acosd()余正弦(返回值为度数)    

sqrt()  开方    

tan()  正切(变量为弧度)    

realsqrt()返回值为非负根

tand()  正切(变量为度数)     

abs()  取绝对值  

atan()  反正切(返回弧度)    

angle()返回值为复数的相位角

atand()反正切(返回度数)      

mod(x,y)返回x/y的余数  

sum(  )  向量元素求和

1.2矩阵的基本函数

ones()  创建一个所有元素都为1的矩阵,其中可以制定维数

zeros()  创建一个所有元素都为0的矩阵

eye()   创建对角元素为1,其他元素为0的矩阵

diag()  根据向量创建对角矩阵,即以向量的元素为对角元素

magic()  创建魔方矩阵

rand()  创建随机矩阵,服从均匀分布

randn()  创建随机矩阵,服从正态分布

randperm()   创建随机行向量

horcat   C=[A,B],水平聚合矩阵,还可以用cat(1,A,B)

vercat   C=[A;B],垂直聚合矩阵,还可以用cat(2,A,B)

repmat(M,v,h)   M在垂直方向上聚合v次水平方向上聚合h次

blkdiag(A,B) 以A,和B为块创建块对角矩阵

length   返回矩阵最长维的的长度

ndims    返回维数

numel    返回矩阵元素个数

size   返回每一维的长度,[rows,cols]=size(A)

reshape   重塑矩阵

rot90    旋转矩阵90度,逆时针方向

fliplr   沿垂轴翻转矩阵

flipud 沿水平轴翻转矩阵

transpose   沿主对角线翻转矩阵

ctranspose    转置矩阵,也可用A’或A.’

inv   矩阵的逆

det   矩阵的行列式值

trace   矩阵对角元素的和

norm   矩阵或矢量的范数,norm(a,1),norm(a,Inf)…….

normest   估计矩阵的最大范数矢量

chol   矩阵的cholesky分解

cholinc 不完全cholesky分解

lu   LU分解

luinc 不完全LU分解

qr   正交分解

kron(A,B) A为m×n,B为p×q,则生成mp×nq的矩阵,A的每一个元素都会乘上B,并占据p×q大小的空间

rank   求出矩阵的秩

pinv   求伪逆矩阵

1.3多项式的基本函数

conv        多项式的乘法

deconv      多项式的除法,[a,b]=deconv(s),返回商和余数

poly        求多项式的系数(由已知根求多项式的系数)

polyeig      求多项式的特征值

Polyfit(x,y,n) 多项式的曲线拟合,x,y为被拟合的向量,n为拟合多

项式阶数

polyder      求多项式的一阶导数,polyder(a,b)返回ab的导数

[a,b]=polyder(a,b)返回a/b的导数。

polyint      多项式的积分

polyval      求多项式的值

polyvalm    以矩阵为变量求多项式的值

residue      部分分式展开式

roots      求多项式的根,返回所有根组成的向量

 

2.Matlab基本运算

2.1符号计算

符号计算包括符号表达式的极限计算,微分计算,积分计算,级数的计算,代数方程的求解及常微分方程的求解。

2.1.1符号表达式极限

Matlab中计算极限的函数为limit,格式如下:

limit(F,x,a)%计算符号表达式F=F(x)当x→a时的极限值。

limit(F,a)%用命令findsym(F)确定F中的自变量,设为变量x,再计算F当x→a时的极限值。

limit(F)%用命令findsym(F)确定F中的自变量,设为变量x,再计算F当x→0时的极限值。

limit(F,x,a,'right')或limit(F,x,a,'left')%计算符号函数F的单侧极限:

左极限x→a-或右极限x→a+。

limit(F,inf)%用命令findsym(F)确定F中的自变量,设为变量x,再计算F当x→无穷大时的极限值。

例:

计算极限

示例程序如下:

symsxy%定义两个变量x,y

limit(limit(log(x+exp(y))/sqrt(x*x+y*y),x,1),y,0)%利用函数limit计算

运行结果如下:

ans=

log

(2)

2.1.2符号表达式微分

Matlab中计算微分的函数为diff,格式如下:

diff(S,'v')、diff(S,sym('v'))%对表达式S中指定符号变量v计算S的1阶微分。

diff(S)%对表达式S中的符号变量v计算S的1阶微分,其中v=findsym(S)。

diff(S,n)%对表达式S中的符号变量v计算S的n阶微分,其中v=findsym(S)。

diff(S,'v',n)%对表达式S中指定的符号变量v计算S的n阶微分。

例:

计算

cos2(3x+2)的微分;

示例程序如下:

symsx%定义变量x

y=sqrt(7)*cos(3*x+2)^2;

dy=diff(y)%对符号变量x计算y的1阶微分

运行结果如下:

dy=

-6*7^(1/2)*cos(3*x+2)*sin(3*x+2)

2.1.3符号表达式积分

Matlab中计算积分的函数为int,格式如下:

R=int(S,v)%对符号表达式S中指定的符号变量v计算不定积分。

需要注意的是,表达式R只是函数S的一个原函数,后面没有带任意常数C。

R=int(S)%对符号表达式S中的符号变量v计算不定积分,其中v=findsym(S)。

R=int(S,v,a,b)%对表达式s中指定的符号变量v计算从a到b的定积分。

R=int(S,a,b)%对符号表达式s中的符号变量v计算从a到b的定积分,其中v=findsym(S)。

例:

计算积分

示例程序如下:

symstx;%定义变量t,x

y=(1+t)^(3/2);

f=int(y,t,x,x^2)%对符号表达式y中的符号变量t计算从x到x2的积分

运行结果如下:

f=

2/5*(1+x^2)^(5/2)-2/5*(1+x)^(5/2)

2.1.4级数的计算

2.1.4.1级数的求和

Matlab中计算级数和的函数为symsum,格式如下:

r=symsum(S)%对符号表达式s中的符号变量k从0到k-1求和,其中k=findsym(S)。

r=symsum(S,v)%对符号表达式s中指定的符号变量v从0到v-1求和。

r=symsum(S,a,b)%对符号表达式s中的符号变量k从a到b求和,其中k=findsym(S)。

r=symsum(s,v,a,b)%对符号表达式s中指定的符号变量v从a到b求和。

例:

计算级数

示例程序如下:

symsxn%定义变量x,n

y=symsum(x^n,n,0,Inf)%对符号表达式y中符号变量n从0到无穷大求和

运行结果如下:

y=

-1/(x-1)

2.1.4.2符号表达式的Taylor级数展开式

Matlab中计算符号函数的Taylor级数展开式的函数为taylor,格式如下:

r=taylor(f,n,v)%返回符号表达式f中指定的符号自变量v的n-1阶的Maclaurin多项式(即在零点附近v=0)近似式。

r=taylor(f)%返回符号表达式f中符号变量v的6阶的Maclaurin多项式近似式,其中v=findsym(f)。

r=taylor(f,n,v,a)%返回符号表达式f中指定的符号自变量v的n-1阶的Taylor级数(在指定的a点附近v=a)的展开式。

示例程序如下:

symsxym%定义变量x,y,m

f=sin(x+pi/3);

T7=taylor(f,y,m)%或taylor(f,m,y),taylor命令中输入参量f、y与m次序任意

运行结果如下:

T7=

sin(m+1/3*pi)+cos(m+1/3*pi)*(x-m)-1/2*sin(m+1/3*pi)*(x-m)^2-1/6*cos(m+1/3*pi)*(x-m)^3+1/24*sin(m+1/3*pi)*(x-m)^4+1/120*cos(m+1/3*pi)*(x-m)^5

2.1.5代数方程的求解

Matlab中求解代数方程的函数为solve,格式如下:

g=solve(eq)%若eq是一符号表达式或没有等号的字符串,则solve(eq)对方程eq中的缺省变量(由命令findsym(eq)确定)求解方程eq=0。

若输出参量g为单一变量,则对于有多重解的非线性方程,g为一行向量。

g=solve(eq,var)%对符号表达式或没有等号的字符串eq中指定的变量var求解方程eq(var)=0。

g=solve(eq1,eq2,…,eqn)%该命令对方程组eq1,eq2,…,eqn中由命令findsym确定的n个变量求解。

若g为单个变量,则g为包含n个解的结构;若g为有n个变量的向量,则分别返回结果给相应的变量。

g=solve(eq1,eq2,…,eqn,var1,var2,…,varn)%对方程组eq1,eq2,…,eqn中指定的n个变量var1,var2,…,varn求解。

例:

求方程组

关于的x,y的解

示例程序如下:

Symsxy%定义变量x,y

S=solve('3*x+5*y=28','x*x-3*y=30');%对方程组中x,y变量求解

disp('S.x'),disp(S.x),disp('S.y'),disp(S.y)%显示的x,y解

运行结果如下:

S.x

-39/5

6

S.y

257/25

2

2.1.6常微分方程的求解

Matlab中求解常微分方程的函数为dsolve,格式如下:

r=dsolve('eq1,eq2,…','cond1,cond2,…','v')

对给定的常微分方程(组)eq1,eq2,…中指定的符号自变量v,与给定的边界条件和初始条件cond1,cond2,….求解r;若没有指定变量v,则缺省变量为t;在微分方程(组)的表达式eq中,大写字母D表示对自变量x的微分算子,如D=d/dx,D2=d2/dx2,微分算子D后面的字母为待求解的未知函数。

初始和边界条件由字符串表示,如y(a)=b,D2y(e)=f;若边界条件少于方程(组)的阶数,则返回的结果r中会出现任意常数如C1,C2。

例:

求解微分方程

示例程序如下:

symsxy%定义变量x,y

y=dsolve('x*D2y-2*Dy=x^2','y

(1)=0','y

(2)=5','x')%解微分方程

运行结果如下:

y=

1/3*x^3*log(x)-1/9*x^3+1/3*(52/21-8/7*log

(2))*x^3+8/21*log

(2)-5/7

2.2矩阵的基本运算

Matlab即“矩阵实验室”,它是以矩阵为基本运算单元,以下为矩阵的基本运算。

2.2.1矩阵的最大最小值

2.2.1.1矩阵的最大值

Matlab中求一个向量的最大值的函数为max,格式如下:

max(A)%如果A是一个向量,则返回A中的最大值。

如果A是一个矩阵,则返回包含了每一列的最大值的行向量。

max(A,B)%返回一个和A和B同大小的数组,其中的元素是从A或B中取出的最大值。

max(A,[],dim)%返回A中由dim指定的维数范围中的最大值。

用max函数求矩阵的最大值有两种方法,第一种是直接用max函数求A的所有元素组成的向量的最大值即max(A(:

));第二种是先求出矩阵每一列的最大值,再求出这些最大值中的最大值,所得值即为矩阵的最大值。

例:

求矩阵

(也为以下各例中A)的最大值。

用第一种方法,示例程序如下:

A=[1-23;-4116;769];%定义矩阵A

x=max(A(:

))%返回矩阵A的最大值

运行结果如下:

x=

11

2.2.1.2矩阵的最小值

Matlab中求一个向量的最小值的函数为min,其用法与max相同,求矩阵最小值的思路与求最大值的思路类似。

例:

求矩阵A的最小值。

用第二种方法,示例程序如下:

y=min(A);%返回矩阵A中每一列最小值的行向量

x=min(y)%返回矩阵A的最小值

运行结果如下:

x=

-4

2.2.2矩阵的均值、方差

2.2.2.1矩阵的均值

Matlab中求解向量均值的函数为mean,格式如下:

mean(A,1)%返回一个包含了矩阵A的每一列的平均值的行向量。

mean(A,2)%返回一个包含了矩阵A的每一行的平均值的列向量。

mean(A)%如果A是一个向量,则返回A中的最大值。

如果A是一个矩阵,则返回包含了每一列的最大值的行向量。

与求矩阵的最大值类似,用mean函数求矩阵的均值也有两种方法,第一种是直接用mean函数求A的所有元素组成的向量的均值即mean(A(:

));第二种是先求出矩阵每一列(列)的平均值,再求出这些平均值的均值,所得值即为矩阵的均值。

例:

求矩阵A的均值。

用第一种方法,程序示例如下:

a=mean(A(:

))%返回矩阵A的均值

运行结果如下:

a=

4.1111

2.2.2.2矩阵的方差

Matlab中求解方差的函数为var,格式如下:

var(A)%如果A是一个向量,则返回A的方差;如果A是一个矩阵,返回一个包含了矩阵A的每一列的方差的行向量。

直接用var函数求A的所有元素组成的向量的方差即mean(A(:

)),所得值即为矩阵的方差。

例:

求矩阵A的方差。

示例程序如下:

s=var(A(:

))

运行结果如下:

s=

25.1111

2.2.3矩阵的转置

Matlab中求矩阵转置的运算符为′,运算规则如下:

若矩阵A的元素为实数,则与线性代数中矩阵的转置相同;若A为复数矩阵,则A转置后的元素由A对应元素的共轭复数构成。

若仅希望转置,则用如下命令A′。

例:

求矩阵A的转置。

示例程序如下:

B=A′

运行结果如下:

B=

1-47

-2116

369

2.2.4矩阵的逆

Matlab中求矩阵逆行列式的函数为inv,格式如下:

Y=inv(A)%求方阵A的逆矩阵。

若A为奇异阵或近似奇异阵,将给出警告信息。

inv(A)也可用运算符A^(-1)实现。

例:

求A的逆矩阵

示例程序如下:

Y=inv(A)%求方阵A的逆矩阵

则结果显示为

Y=

-0.1591-0.09090.1136

-0.19700.03030.0455

0.25510.0505-0.00763.

2.2.5矩阵的行列式

Matlab中求矩阵行列式的函数为det,格式如下:

y=det(A)%返回方阵A的行列式的值

例:

求A的行列式

示例程序如下:

y=det(A)

运行结果如下:

y=

-396

2.2.6矩阵的

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

当前位置:首页 > 高等教育 > 艺术

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

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