Matlab中图像处理常用函数的用法 下载本文

内容发布更新时间 : 2024/5/16 3:01:14星期一 下面是文章的全部内容请认真阅读。

Matlab中常见函数的用法

1size()函数

1)s=size(A),

当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数。

2)[r,c]=size(A), 当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c。

3)size(A,n)

如果在size函数的输入参数中再添加一项n,并用1、2或者3为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的时矩阵A的行数, c=size(A,2) 该语句返回的时矩阵A的列数。如果A为一个二维数组,则可以将其看成一个第三维为1的数组,即size(A,3)的返回值为1。

2padarray()函数

B = padarray(A,padsize,padval,direction)

A为输入图像,B为填充后的图像,padsize给出了给出了填充的行数和列数,通常用[r c]来表示。padval和direction分别表示填充方法和方向。它们的具体值和描述如下: Padval选项:'symmetric'表示图像大小通过围绕边界进行镜像反射来扩展; 'replicate'表示图像大小通过复制外边界中的值来扩展;

'circular'图像大小通过将图像看成是一个二维周期函数的一个周期来进行扩展。 Direction选项:'pre'表示在每一维的第一个元素前填充; 'post'表示在每一维的最后一个元素后填充;

'both'表示在每一维的第一个元素前和最后一个元素后填充,此项为默认值。

若参量中不包括direction,则默认值为'both';若参量中不包含padval,则默认用0来填充。若参量中不包括任何参数,则默认填充为零且方向为'both'。在计算结束时,图像会被修剪成原始大小。

3 meshgrid()函数

meshgrid用于从数组a和b产生网格。生成的网格矩阵A和B大小是相同的,它也可以是更高维的。该函数在使用matlab进行3-D图形的绘制方面有着广泛的应用。

[A,B]=Meshgrid(a,b),生成size(b)*size(a)大小的矩阵A和B。A矩阵相当于a从一行重复增加到size(b)行,B矩阵相当于把b转置成一列再重复增加到size(a)列。因此命令等效于A=ones(size(b))*a;B=b'*ones(size(a))

实例: a=[1:2];a = 1 2;b=[3:5];b = 3 4 5;[A,B]=meshgrid(a,b) A = B = 1 2 3 3 1 2 4 4 1 2 5 5

4 find()函数

find函数用于找到非零元素的索引和值。 1)ind = find(X)

找出矩阵X中的所有非零元素,并将这些元素的线性索引值(linear indices:按列)

返回到向量ind中。如果X是一个行向量,则ind是一个行向量;否则,ind是一个列向量。如果X不含非零元素或是一个空矩阵,则ind是一个空矩阵。 2) ind = find(X, k) 或 ind = find(X, k, 'first')

返回从前边开始数,前k个非零元素的索引值,k必须是一个正数,但是它可以是任何数字数值类型。

3) ind = find(X, k, 'last')

返回从后边开始数,前k个非零元素的索引值,k必须是一个正数,但是它可以是任何数字数值类型。

4)[row, col] = find(X, ...)

返回矩阵X中非零元素的行和列的索引值。这个语法对于处理稀疏矩阵尤其有用。如果X是一个N(N>2)维矩阵,col包括列的线性索引。例如,一个5*7*3的矩阵X,有一个非零元素X(4,2,3),find函数将返回row=4和col=16。也就是说,(第1页有7列)+(第2页有7列)+(第3页有2列)=16。

5)[row, col, v] = find(X, ...)

返回X中非零元素的一个列或行向量v,同时返回行和列的索引值。如果X是一个逻辑表示,则v是一个逻辑矩阵。输出向量v包含通过评估X表示得到的逻辑矩阵的非零元素。

5repmat()函数

B = repmat(A,m,n)

B = repmat(A,[m n])

B = repmat(A,[m n p...])

这是一个处理大矩阵且内容有重复时使用,其功能是将A的内容作为一个整体进行扩充,最终B矩阵包括m*n个A矩阵。B矩阵的大小由m*n及A矩阵的内容决定,如果A是一个3x4x5的矩阵,有B = repmat(A,2,3)则最后的矩阵是6x12x5 例如:

B=repmat([1 2;3 4],2,3) B =

1 2 1 2 1 2 3 4 3 4 3 4 1 2 1 2 1 2 3 4 3 4 3 4 其结果变为4X6。

repmat函数中的矩阵A也可以是字符串,例如: C=repmat(' Long live the king!', 2,2) C =

Long live the king! Long live the king! Long live the king! Long live the king! 也可置放其他的符号: D=repmat(NaN,2,5) D =

NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

6MATLAB中的取整函数集合

1)fix(x) : 截尾取整。

例如:

fix([3.12 -3.12]) ans =

3 -3

2)floor(x):不超过x 的最大整数(高斯取整)。 例如:

floor([3.12 -3.12]) ans =

3 -4

3)ceil(x) : 大于x 的最小整数。 例如:

ceil([3.12 -3.12]) ans =

4 -3

4)四舍五入取整。 例如:

round([3.12 -3.12]) ans =

3 -3

7prod()函数

1)B = prod(A)

求矩阵A每一列的元素的乘积。

如果A是向量,prod(A)返回A向量所有元素相乘的乘积。 如果A是矩阵,prod(A)将A看作列向量,返回每一列元素的乘积并组成一个行向量B。 如果A是多维数组,prod(A)沿着第一个非单例作为向量,返回一个行向量数组。 2)B = prod(A,dim)

沿着指定的dim标量的维计算A矩阵的乘积。注:dim=2表示沿行计算。 例如:

M = magic(3) M =

8 1 6

3 5 7 4 9 2 prod(M) =

96 45 84

prod(M,2) =

48 105 72

8median函数

median的作用:求矩阵中值。

1)median(M),每一列返回一个值,M为该列的从大到小排列的中间值.

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