图像处理

来源:互联网 发布:淘宝网店费用 一年 编辑:程序博客网 时间:2024/06/05 06:12

1、函数im2double将输入转换成double类型。如果输入是 uint8 unit16 或者是二值的logical类型,则函数im2double 将其值归一化到0~1之间,当然就是double类型的了。如果输入本身就是double类型,输出还是double类型,并不进行归一化。

2、rgb2gray是一种函数,功能是将真彩色图像转换为灰度图像,即灰度化处理,调用这个功能的格式是

I = rgb2gray(RGB)。

3、edge函数,又称为edge(I),功能是采用I作为它的输入,并返回一个与I相同大小的二值化图像BW,在函数检测到边缘的地方为1,其他地方为0。

4、mean

M=mean(A)

A是一个向量,mean(A)返回A中元素的平均值

A是一个矩阵,mean(A)将A中的各列视为向量,把矩阵中的每列看成一个向量,返回一个包含每一列所有元素的平均值的行向量。

mean(A,dim)返回dim所指维数上的元素的平均值。对于矩阵,mean(A,2)返回包含A的每一行平均值的列向量

5、s=size(A)返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数。

[m,n]=size(A),m是行数,n是列数

s=size(A,1)返回行数

s=size(A,2)返回列数

[m,n,r]=size(A),r为A的维数

6、int2str(m)把整形转换为字符串

7、

matlab中fopen函数的常用调用格式

1)fileID = fopen('filename')

2)fileID = fopen('filename','permission')

其中fileID是文件代号,filename是要打开的文件名,permission是打开方式,默认的打开方式是只读模式。第一种情况时选择默认的打开方式,第二种是认为指定打开方式。

fileID是文件的句柄(或者理解为文件的代号),使用fopen()后默认会返回一个文件代号给fileID变量,常用的返回值如下

fileID=+N(N是正整数):表示文件打开成功,文件代号是N.

fileID=-1 : 表示文件打开不成功。fileID在此次文件关闭前总是有效的。

permission是打开方式参数,打开方式参数由以下字符串确定:

r 读出w 写入(文件若不存在,自动创建)a 后续写入(文件若不存在,自动创建)r+ 读出和写入(文件应已存在)w+ 重新刷新写入,(文件若不存在,自动创建)a+ 后续写入(文件若不存在,自动创建)文件的存储格式:文件打开的默认方式是:二进制

 “fread”以二进制形式,从文件读出数据。
语法1:[a,count]=fread(fid,size,precision)
语法2:[a,count]=fread(fid,size,precision,skip)
size:    不指定     :到尾返回读。
          N         : 读出N个数据,构成列向量。
          inf       : 读出fid指向的打开的文件的全部数据。
          [M,N]     : 读出N个数据,构成列向量,填入M*N矩阵
    precision(精度)
precision(精度)规定了以浮点数、整型数、字符读出时位。matlab 的precision(精度)的表达式与c语言、fortran语言、是一致的。不规定precision(精度),则字符默认为: ucher、则数值默认为:双精度 。

8、

B = reshape(A,m,n)
返回一个m*n的矩阵B, B中元素是按列从A中得到的。如果A中元素个数没有m*n个, 则会引发错误。
>> a=[1 2 3;4 5 6;7 8 9;10 11 12];
>> b=reshape(a,2,6);
这段代码的结果是这样的:
>> a
     1     2     3
     4     5     6
     7     8     9
    10    11    12
>> b
     1     7     2     8     3     9
     4    10     5    11     6    12
9、find

第一个用法是

ndices = find(X)

X = [1 0 4 -3 0 0 0 8 6];

indices = find(X)

返回x中非零元素的序号从1开始

indices =

    1     3     4    8     9

若x是个矩阵呢?

x= [1  0 ;1  5 ;4 0 ]

find(x)得到的是

    1

    2

    3

    5

  是一列矢量,非零元素的序号是按一列一列的算

第二个用法

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

这三个是找前K个非零元素,前两式功能一致,第三式指从最后一个元素算起。

第三个用法

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

例如

X = [3 2 0; -5 0 7; 0 0 1];

[r,c,v] = find(X>2)

r =1

  2

c =1

  3

v =1

  1

1  2  1    就是说矩阵中第一行第二列的元素满足X>2为真用1来表示。余下的类似。

1  3  1   

1 1  1  

[r,c,v]


要注意一下这一用法

X = [3 2 0; -5 0 7; 0 0 1];

[r,c,v]= find(X)                           这个得到的vX中非零的元素,要注意这个区别

r =

    1                                     

    2                                  

    1            

    2

    3

c =

    1

    1

    2

    3

    3

v =

    3

   -5

    2

    7

    1

a =
     1     1     2     2     2     3     3
     1     2     2     2     3     3     3
     1     1     1     2     2     3     3
>> find(a==1)%一列一列的找:编号1----m*n
ans =
     1
     2
     3
     4
     6
     9
>> find(a==2)
ans =
     5
     7
     8
    10
    11
    12
    13
    15
>> find(a==3)
ans =
    14
    16
    17
    18
    19
    20
    21
>> [a,b]=find(a==1)%a记录行数,b记录列数
a =
     1
     2
     3
     1
     3
     3
b =

     1
     1
     1
     2
     2
     3

10、unique

b = unique(a)        %取集合a的不重复元素构成的向量,按照升序排列
b = unique (A,'rows')  %返回A、B不同行元素组成的矩阵
[b,i,j] = unique(…)    %i体现b中元素在原向量(矩阵a)中的位置(最后出现的位置);j体现原向量(矩阵a)在b中的位置
例1-39
>> A=[1 1 2 2 4 4 6 4 6]
A =
    1    1    2    2    4    4    6    4    6
>> [c,i,j]=unique(A)
c =
    1    2    4    6
i =
    2    4    8    9    %i体现b中元素在原向量(矩阵a)中的位置;
j =
  1    1    2    2    3    3    4    3    4   %j体现原向量(矩阵a)在b中的位置

例1-40
>> A=[1 2 2 4;1 1 4 6;1 1 4 6]
A =
  1    2    2    4
    1    1    4    6
    1    1    4    6
>> [c,i,j]=unique(A,'rows')
c =
    1    1    4    6
    1    2    2    4
i =
    3
    1
j =
    2
    1
    1


11、size

size(X,1),返回矩阵X的行数;
size(X,2),返回矩阵X的列数;
N=size(X,2),就是把矩阵X的列数赋值给N

比如说一个A是一个3×4的二维矩阵:

      1、size(A) %直接显示出A大小

       输出:ans=

                          3    4

       2、s=size(A)%返回一个行向量s,s的第一个元素是矩阵的行数,第二个元素是矩阵的列数

       输出:s=

                          3    4

       3、[r,c]=size(A)%将矩阵A的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c

       输出:r=

                          3

                c=

                          4

       4、[r,c,m]=size(A)

       输出:r=

                          3

                c=

                          4

                m=

                          1

也就说它把二维矩阵当作第三维为1的三维矩阵,这也如同我们把n维列向量当作n×1的矩阵一样

       5、当a是一个n维行向量时,size(A)把其当成一个1×n的矩阵,因此size(a)的结果是

       ans

                  1   n

而不是a的元素个数n

       6、size(A,n)

       如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的是矩阵A的行数, c=size(A,2) 该语句返回的是矩阵A的列数。

12、
 round函数
  函数功能:四舍五入取整。
  使用方法:B = round(A)
13、

tic和toc是用来记录matlab命令执行的时间

tic用来保存当前时间,而后使用toc来记录程序完成时间。

两者往往结合使用,用法如下:

tic

operations

toc

显示时间单位: 秒

14、

b为二维矩阵的话,min是按列寻找最小值,并返回其各列的最小值和列号。
>> b=rand(3,3)
b =
0.6154 0.7382 0.9355
0.7919 0.1763 0.9169
0.9218 0.4057 0.4103
>> [x,m]=min(b)
x =0.6154 0.1763 0.4103%%x为各列的最小值
m =1 2 3%%m为每个最小值对应的列号
15、norm
norm(A),A如果是向量,二范数就是根号下(向量中每个值的平方的和)
16、
n = numel(A);
n= numel(A,条件);
返回数组A中元素个数。若是一幅图像,则numel(A)将给出它的像素数。
17、

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

这是一个处理大矩阵且内容有重复时使用,其功能是以A的内容堆叠在(MxN)的矩阵B中,B矩阵的大小由MxN及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。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   NaNNaN   NaN   NaN   NaN   NaN

未完,待续。。。
原创粉丝点击