MATLAB...

download MATLAB 主要函数指令表(按功能分类)read.pudn.com/downloads156/sourcecode/graph/texture... · Web view之地。在实验中我们主要用到MATLAB提供图象处理工具箱(Image

If you can't read please download the document

Transcript of MATLAB...

MATLAB 主要函数指令表(按功能分类)

dilate函数 该函数能够实现二值图像的膨胀操作,有以下形式: BW2=dilate(BW1,SE) BW2=dilate(BW1,SE,…,n) 其中:BW2=dilate(BW1,SE)表示使用二值结构要素矩阵SE队图像数据矩阵BW1执行膨胀操作。输入图像BW1的类型为double或unit8,输出图像BW2的类型为unit8。BW2=dilate(BW1,SE,…,n)表示执行膨胀操作n次。 2、erode 函数 该函数能够实现二值图像的腐蚀操作,有以下形式: BW2= erode(BW1,SE) BW2= erode(BW1,SE,…,n) 其中:BW2= erode(BW1,SE)表示使用二值结构要素矩阵SE队图像数据矩阵BW1执行腐蚀操作。输入图像BW1的类型为double或unit8,输出图像BW2的类型为unit8。BW2= erode(BW1,SE,…,n)表示执行腐蚀操作n次。 3、bwmorph函数 该函数的功能是能实现二值图像形态学运算。它的格式如下: ① BW2=bwmorph(BW1,operation) ② BW2=bwmorph(BW1,operation,n) 其中:对于格式①,bwmorph函数可对二值图像BW1采用指定的形态学运算;对于格式②,bwmorph函数可对二值图像BW1采用指定的形态学运算n次。operation为下列字符串之一: ‘clean’:除去孤立的像素(被0包围的1) ‘close’:计算二值闭合 ‘dilate’:用结构元素计算图像膨胀 ‘erode’:用结构元素计算图像侵蚀 4、imclose函数 该函数功能是对灰度图像执行形态学闭运算,即使用同样的结构元素先对图像进行膨胀操作后进行腐蚀操作。调用格式为: IM2=imclose(IM,SE) IM2=imclose(IM,NHOOD) 5、imopen函数 该函数功能是对灰度图像执行形态学开运算,即使用同样的结构元素先对图像进行腐蚀操作后进行膨胀操作。调用格式为: IM2=imopen(IM,SE) IM2=imopen(IM,NHOOD) 3用MATLAB编程实现图像去噪 3.1 二值形态学消除图像噪声 用二值形态学方法对图像中的噪声进行滤除的基本思想[4]是:使用具有一定形态的结构元素去度量和提取图像中的对应形状,以达到消除图像噪声的目的。下面是二值形态学消除图像噪声的一个实例。 首先将tire.tif图像加入椒盐噪声,这种噪声前面已经介绍过,它在亮的图像区域内是暗点,而在暗的图像区域内是亮点,再对有噪声图像进行二值化操作,再对有噪声图像进行开启操作,由于这里的结构元素矩阵比噪声的尺寸要大,因而开启的结果是将背景上的噪声点去除了,最后对前一步得到的图像进行闭合操作,将轮胎上的噪声点去掉了。 下面是算法实现的程序代码: I1=imread('tire.tif'); %读灰度图tire.tif I2=imnoise(I1,'salt & pepper'); %在图像上加入椒盐噪声 figure,imshow(I2) %显示加椒盐噪声后的灰度图像 I3=im2bw(I1); %把加椒盐噪声后的灰度图像二值化 figure,imshow(I3) %显示二值化后的图像 I4=bwmorph(I3,'open'); %对二值噪声图像进行二值形态学开运算 figure,imshow(I4) %显示开运算后的图像 I5=bwmorph(I4,'close'); %对上述图像进行形态学闭运算 figure,imshow(I5) %显示最终处理后的图像

Matlab中图像函数大全

图像增强

1. 直方图均衡化的 Matlab 实现 1.1  imhist 函数功能:计算和显示图像的色彩直方图格式:imhist(I,n)        imhist(X,map)说明:imhist(I,n) 其中,n 为指定的灰度级数目,缺省值为256;imhist(X,map) 就算和显示索引色图像 X 的直方图,map 为调色板。用 stem(x,counts) 同样可以显示直方图。 1.2 imcontour 函数功能:显示图像的等灰度值图格式:imcontour(I,n),imcontour(I,v)说明:n 为灰度级的个数,v 是有用户指定所选的等灰度级向量。 1.3 imadjust 函数功能:通过直方图变换调整对比度格式:J=imadjust(I,[low high],[bottom top],gamma)        newmap=imadjust(map,[low high],[bottom top],gamma)说明:J=imadjust(I,[low high],[bottom top],gamma) 其中,gamma 为校正量r,[low high] 为原图像中要变换的灰度范围,[bottom top] 指定了变换后的灰度范围;newmap=imadjust(map,[low high],[bottom top],gamma) 调整索引色图像的调色板 map 。此时若 [low high] 和 [bottom top] 都为2×3的矩阵,则分别调整 R、G、B 3个分量。 1.4  histeq 函数功能:直方图均衡化格式:J=histeq(I,hgram)        J=histeq(I,n)        [J,T]=histeq(I,...)        newmap=histeq(X,map,hgram)        newmap=histeq(X,map)        [new,T]=histeq(X,...)说明:J=histeq(I,hgram) 实现了所谓“直方图规定化”,即将原是图象 I 的直方图变换成用户指定的向量 hgram 。hgram 中的每一个元素都在 [0,1] 中;J=histeq(I,n) 指定均衡化后的灰度级数 n ,缺省值为 64;[J,T]=histeq(I,...) 返回从能将图像 I 的灰度直方图变换成图像 J 的直方图的变换 T ;newmap=histeq(X,map) 和 [new,T]=histeq(X,...) 是针对索引色图像调色板的直方图均衡。 2. 噪声及其噪声的 Matlab 实现        imnoise 函数格式:J=imnoise(I,type)        J=imnoise(I,type,parameter)说明:J=imnoise(I,type) 返回对图像 I 添加典型噪声后的有噪图像 J ,参数 type 和 parameter 用于确定噪声的类型和相应的参数。 3. 图像滤波的 Matlab 实现 3.1 conv2 函数功能:计算二维卷积格式:C=conv2(A,B)        C=conv2(Hcol,Hrow,A)        C=conv2(...,'shape')说明:对于 C=conv2(A,B) ,conv2 的算矩阵 A  和 B 的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1]; C=conv2(Hcol,Hrow,A) 中,矩阵 A 分别与 Hcol 向量在列方向和 Hrow 向量在行方向上进行卷积;C=conv2(...,'shape') 用来指定 conv2 返回二维卷积结果部分,参数 shape 可取值如下:        》full 为缺省值,返回二维卷积的全部结果;        》same 返回二维卷积结果中与 A 大小相同的中间部分;        valid 返回在卷积过程中,未使用边缘补 0  部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1]。 3.2 conv 函数功能:计算多维卷积格式:与 conv2 函数相同 3.3 filter2函数功能:计算二维线型数字滤波,它与函数 fspecial 连用格式:Y=filter2(B,X)        Y=filter2(B,X,'shape')说明:对于 Y=filter2(B,X) ,filter2 使用矩阵 B 中的二维 FIR 滤波器对数据 X 进行滤波,结果 Y 是通过二维互相关计算出来的,其大小与 X 一样;对于 Y=filter2(B,X,'shape') ,filter2 返回的 Y 是通过二维互相关计算出来的,其大小由参数 shape 确定,其取值如下:        》full 返回二维相关的全部结果,size(Y)>size(X);        》same 返回二维互相关结果的中间部分,Y 与 X 大小相同;        》valid 返回在二维互相关过程中,未使用边缘补 0 部分进行计算的结果部分,有 size(Y)

imsubtract//从原始图像中减去背景图像

一 读写图像文件

1 imread

imread函数用于读入各种图像文件,如:a=imread('e:\w01.tif')

注:计算机E盘上要有w01相应的.tif文件。

2 imwrite

imwrite函数用于写入图像文件,如:imwrite(a,'e:\w02.tif',’tif’)

3 imfinfo

imfinfo函数用于读取图像文件的有关信息,如:imfinfo('e:\w01.tif')

二 图像的显示

1 image

image函数是MATLAB提供的最原始的图像显示函数,如:

a=[1,2,3,4;4,5,6,7;8,9,10,11,12];

image(a);

2 imshow

imshow函数用于图像文件的显示,如:

i=imread('e:\w01.tif');

imshow(i);

3 colorbar

colorbar函数用显示图像的颜色条,如:

i=imread('e:\w01.tif');

imshow(i);

colorbar;

4 figure

figure函数用于设定图像显示窗口,如:figure(1); /figure(2);

三 图像的变换

1 fft2

fft2函数用于数字图像的二维傅立叶变换,如:

i=imread('e:\w01.tif');

j=fft2(i);

2 ifft2

ifft2函数用于数字图像的二维傅立叶反变换,如:

i=imread('e:\w01.tif');

j=fft2(i);

k=ifft2(j);

3 利用fft2计算二维卷积

利用fft2函数可以计算二维卷积,如:

a=[8,1,6;3,5,7;4,9,2];

b=[1,1,1;1,1,1;1,1,1];

a(8,8)=0;

b(8,8)=0;

c=ifft2(fft2(a).*fft2( INCLUDEPICTURE "http://bbs.verycd.com/style_emoticons/default/cool.gif" \* MERGEFORMATINET

);

c=c(1:5,1:5);

利用conv2(二维卷积函数)校验, 如:

a=[8,1,6;3,5,7;4,9,2];

b=[1,1,1;1,1,1;1,1,1];

c=conv2(a,;

四 模拟噪声生成函数和预定义滤波器

1 imnoise

imnoise函数用于对图像生成模拟噪声,如:

i=imread('e:\w01.tif');

j=imnoise(i,'gaussian',0,0.02);%模拟高斯噪声

2 fspecial

fspecial函数用于产生预定义滤波器,如:

h=fspecial('sobel');%sobel水平边缘增强滤波器

h=fspecial('gaussian');%高斯低通滤波器

h=fspecial('laplacian');%拉普拉斯滤波器

h=fspecial('log');%高斯拉普拉斯(LoG)滤波器

h=fspecial('average');%均值滤波器

五 图像的增强

1 直方图

imhist函数用于数字图像的直方图显示,如:

i=imread('e:\w01.tif');

imhist(i);

2 直方图均化

histeq函数用于数字图像的直方图均化,如:

i=imread('e:\w01.tif');

j=histeq(i);

3 对比度调整

imadjust函数用于数字图像的对比度调整,如:

i=imread('e:\w01.tif');

j=imadjust(i,[0.3,0.7],[]);

4 对数变换

log函数用于数字图像的对数变换,如:

i=imt('e:\w01.tif');

j=double(i);

k=log(j);

5 基于卷积的图像滤波函数

filter2函数用于图像滤波,如:

i=imread('e:\w01.tif');

h=[1,2,1;0,0,0;-1,-2,-1];

j=filter2(h,i);

6 线性滤波

利用二维卷积conv2滤波, 如:

i=imread('e:\w01.tif');

h=[1,1,1;1,1,1;1,1,1];

h=h/9;

j=conv2(i,h);

7 中值滤波

medfilt2函数用于图像的中值滤波,如:

i=imread('e:\w01.tif');

j=medfilt2(i);

8 锐化

(1)利用Sobel算子锐化图像, 如:

i=imread('e:\w01.tif');

h=[1,2,1;0,0,0;-1,-2,-1];%Sobel算子

j=filter2(h,i);

(2)利用拉氏算子锐化图像, 如:

i=imread('e:\w01.tif');

j=double(i);

h=[0,1,0;1,-4,0;0,1,0];%拉氏算子

k=conv2(j,h,'same');

m=j-k;

六 举例

二维傅立叶变换和二维傅立叶反变换:

i=imread('e:\w01.tif');

figure(1);

imshow(i);

colorbar;

j=fft2(i);

k=fftshift(j);

figure(2);

l=log(abs(k));

imshow(l,[]);

colorbar

n=ifft2(j)/255;

figure(3);

imshow(n);

colorbar;

读取图像A=imread(filename,fmt)A=imread(‘c:\matlab6p5p1\toolbox\images\imdemos\’)A=imread(URL,…)写入图像imwrite(A,filename,fmt)[separator]显示一幅图像imshow(I)打开图像浏览器imview(I)二值图像及其显示一个二值图像是以0(黑色)和1(白色)的逻辑矩阵存储的.imshow(BW)BW=imread(‘circles.png’);imshow(BW)figure(2)imshow(~BW)figure(3)imshow(BW,[1 0 0;0 0 1])

灰度图像是一个数据矩阵Imshow(I)Imshow(I,n)J=imread(‘rice.png’);subplot(121);imshow(J,[100,200]);Subplot(122);imshow(J,20)]RGB图像即真彩图像RGB=imread(‘peppers.png’);Imshow(RGB);

1    加法运算   imadd( )用于对同一场景的多幅图像求平均图像以便有效的降低加性随机噪声I=imread(‘rice.png’);J=imread(‘cameraman.tif’);K=imadd(I,J,’unit16’);Imshow(K,[ ])

2   减法运算用于检测变化及运动物体I=imread(‘cameraman.tif’);K=imsubtract(I,50);Imshow(K,[ ])

edge( ) 函数   KK=rgb2gray(RGB)微分算子梯度算子:   Robert算子,Sobel算子,Prewitt算子,拉普拉斯算子:log算子,canny算子BW=edge(I,’sobel’)BW=edge(I,’sobel’,thresh)BW=edge(I,’sobel’,thresh,direction)Direction:’horizontal’ , ‘vertical’

一. 读写图像文件

1. imread

imread函数用于读入各种图像文件,如:a=imread('e:\w01.tif')

注:计算机E盘上要有w01相应的.tif文件。

2. imwrite

imwrite函数用于写入图像文件,如:imwrite(a,'e:\w02.tif',’tif’)

3. imfinfo

imfinfo函数用于读取图像文件的有关信息,如:imfinfo('e:\w01.tif')

二. 图像的显示

1. image

image函数是MATLAB提供的最原始的图像显示函数(主要彩色显示图象),如:

a=[1,2,3,4;4,5,6,7;8,9,10,11,12];

image(a);

2. imshow

imshow函数用于灰度图像文件的显示,如:

i=imread('e:\w01.tif');

imshow(i);

3. colorbar

colorbar函数用显示图像的颜色条。

 

通常,颜色映象进行过调节,把数据从最小扩展到最大,也就是说整个颜色映象都用于绘图。有时也许想改变颜色使用的方法。函数caxis代表颜色轴,因为颜色增加了另一个维数,它允许对数据范围的一个子集使用整个颜色映象或者对数据的整个集合只使用当前颜色映象的一部分。

       [cmin,cmax]=caxis返回映射到颜色映象中第一和最后输入项的最小和最大的数据。它们通常被设成数据的最小值和最大值。比如,函数mesh(peaks) 会画出函数peaks的网格图,并把颜色轴caxis设为[-6.5466,8.0752],即Z的最小值和最大值。这些值之间的数据点,使用从颜色映象中经插值得到的颜色。如:

i=imread('e:\w01.tif');

imshow(i);

colorbar; 

4 .figure

figure函数用于设定图像显示窗口,如:figure(1); /figure(2);

5.imagesc(a);   caxis([-3 8]) ; colorbar;  标尺标度从-3,到8 显示标度尺。

三. 图像的变换

1. fft2

fft2函数用于数字图像的二维傅立叶变换,如:

i=imread('e:\w01.tif');

j=fft2(i);

2. ifft2

ifft2函数用于数字图像的二维傅立叶反变换,如:

i=imread('e:\w01.tif');

j=fft2(i);

k=ifft2(j);

3. 利用fft2计算二维卷积

利用fft2函数可以计算二维卷积,如:

a=[8,1,6;3,5,7;4,9,2];

b=[1,1,1;1,1,1;1,1,1];

a(8,8)=0;

b(8,8)=0;

c=ifft2(fft2(a).*fft2(b));

c=c(1:5,1:5);

利用conv2(二维卷积函数)校验, 如:

a=[8,1,6;3,5,7;4,9,2];

b=[1,1,1;1,1,1;1,1,1];

c=conv2(a,b);

四. 模拟噪声生成函数和预定义滤波器

1. imnoise

imnoise函数用于对图像生成模拟噪声,如:

i=imread('e:\w01.tif');

j=imnoise(i,'gaussian',0,0.02);%模拟高斯噪声

2. fspecial

fspecial函数用于产生预定义滤波器,如:

h=fspecial('sobel');%sobel水平边缘增强滤波器

h=fspecial('gaussian');%高斯低通滤波器

h=fspecial('laplacian');%拉普拉斯滤波器

h=fspecial('log');%高斯拉普拉斯(LoG)滤波器

h=fspecial('average');%均值滤波器

五. 图像的增强

1. 直方图

imhist函数用于数字图像的直方图显示,如:

i=imread('e:\w01.tif');

imhist(i);

2. 直方图均化

histeq函数用于数字图像的直方图均化,如:

i=imread('e:\w01.tif');

j=histeq(i);

3. 对比度调整

imadjust函数用于数字图像的对比度调整,如:

i=imread('e:\w01.tif');

j=imadjust(i,[0.3,0.7],[]);

4. 对数变换

log函数用于数字图像的对数变换,如:

i=imread('e:\w01.tif');

j=double(i);

k=log(j);

5. 基于卷积的图像滤波函数

filter2函数用于图像滤波,如:

i=imread('e:\w01.tif');

h=[1,2,1;0,0,0;-1,-2,-1];

j=filter2(h,i);

6. 线性滤波

利用二维卷积conv2滤波, 如:

i=imread('e:\w01.tif');

h=[1,1,1;1,1,1;1,1,1];

h=h/9;

j=conv2(i,h);

7. 中值滤波

medfilt2函数用于图像的中值滤波,如:

i=imread('e:\w01.tif');

j=medfilt2(i);

8. 锐化

(1)利用Sobel算子锐化图像, 如:

i=imread('e:\w01.tif');

h=[1,2,1;0,0,0;-1,-2,-1];%Sobel算子

j=filter2(h,i);

(2)利用拉氏算子锐化图像, 如:

i=imread('e:\w01.tif');

j=double(i);

h=[0,1,0;1,-4,0;0,1,0];%拉氏算子

k=conv2(j,h,'same');

m=j-k;

六. 举例

二维傅立叶变换和二维傅立叶反变换:

i=imread('e:\w01.tif');

figure(1);

imshow(i);

colorbar;

j=fft2(i);

k=fftshift(j);

figure(2);

l=log(abs(k));

imshow(l,[]);

colorbar

n=ifft2(j)/255;

figure(3);

imshow(n);

colorbar;

图像处理工具箱 

引用

图像处理工具箱

1. 图像和图像数据   缺省情况下,MATLAB将图像中的数据存储为双精度类型(double),64位浮点数,所需存储量很大;MATLAB还支持另一种类型无符号整型(uint8),即图像矩阵中每个数据占用1个字节。   在使用MATLAB工具箱时,一定要注意函数所要求的参数类型。另外,uint8与double两种类型数据的值域不同,编程需注意值域转换。          从uint8到double的转换   ---------------------------------------------       图像类型        MATLAB语句   ---------------------------------------------     索引色             B=double(A)+1     索引色或真彩色  B=double(A)/255     二值图像          B=double(A)   ---------------------------------------------          从double到uint8的转换   ---------------------------------------------       图像类型        MATLAB语句   ---------------------------------------------    索引色               B=uint8(round(A-1))    索引色或真彩色    B=uint8(round(A*255))    二值图像            B=logical(uint8(round(A)))   --------------------------------------------- 2. 图像处理工具箱所支持的图像类型 2.1 真彩色图像    R、G、B三个分量表示一个像素的颜色。如果要读取图像中(100,50)处的像素值,可查看三元数据(100,50,1:3)。    真彩色图像可用双精度存储,亮度值范围是[0,1];比较符合习惯的存储方法是用无符号整型存储,亮度值范围[0,255]   2.2 索引色图像   包含两个结构,一个是调色板,另一个是图像数据矩阵。调色板是一个有3列和若干行的色彩映象矩阵,矩阵每行代表一种颜色,3列分别代表红、绿、蓝色强度的双精度数。      注意:MATLAB中调色板色彩强度[0,1],0代表最暗,1代表最亮。          常用颜色的RGB值   --------------------------------------------    颜色    R   G   B      颜色    R   G   B    --------------------------------------------     黑     0   0   1      洋红    1   0   1     白     1   1   1      青蓝    0   1   1     红     1   0   0      天蓝  0.67  0   1     绿     0   1   0      橘黄    1  0.5  0     蓝     0   0   1      深红   0.5  0   0     黄     1   1   0       灰    0.5 0.5 0.5          --------------------------------------------         产生标准调色板的函数   -------------------------------------------------    函数名       调色板   -------------------------------------------------     Hsv       色彩饱和度,以红色开始,并以红色结束     Hot       黑色-红色-黄色-白色     Cool      青蓝和洋红的色度     Pink      粉红的色度     Gray      线型灰度     Bone      带蓝色的灰度     Jet        Hsv的一种变形,以蓝色开始,以蓝色结束     Copper    线型铜色度     Prim       三棱镜,交替为红、橘黄、黄、绿和天蓝     Flag       交替为红、白、蓝和黑  --------------------------------------------------   缺省情况下,调用上述函数灰产生一个64×3的调色板,用户也可指定调色板大小。      索引色图像数据也有double和uint8两种类型。   当图像数据为double类型时,值1代表调色板中的第1行,值2代表第2行……   如果图像数据为uint8类型,0代表调色板的第一行,,值1代表第2行…… 2.3 灰度图像   存储灰度图像只需要一个数据矩阵。   数据类型可以是double,[0,1];也可以是uint8,[0,255] 2.4 二值图像   二值图像只需一个数据矩阵,每个像素只有两个灰度值,可以采用uint8或double类型存储。   MATLAB工具箱中以二值图像作为返回结果的函数都使用uint8类型。 2.5 图像序列   MATLAB工具箱支持将多帧图像连接成图像序列。   图像序列是一个4维数组,图像帧的序号在图像的长、宽、颜色深度之后构成第4维。   分散的图像也可以合并成图像序列,前提是各图像尺寸必须相同,若是索引色图像,调色板也必须相同。   可参考cat()函数    A=cat(4,A1,A2,A3,A4,A5) 3. MATLAB图像类型转换         图像类型转换函数   ---------------------------------------------------------------------------     函数名                      函数功能   ---------------------------------------------------------------------------     dither       图像抖动,将灰度图变成二值图,或将真彩色图像抖动成索引色图像    gray2ind    将灰度图像转换成索引图像    grayslice    通过设定阈值将灰度图像转换成索引色图像     im2bw      通过设定亮度阈值将真彩色、索引色、灰度图转换成二值图    ind2gray    将索引色图像转换成灰度图像    ind2rgb      将索引色图像转换成真彩色图像    mat2gray   将一个数据矩阵转换成一副灰度图    rgb2gray    将一副真彩色图像转换成灰度图像    rgb2ind      将真彩色图像转换成索引色图像   ---------------------------------------------------------------------------- 4. 图像文件的读写和查询 4.1  图形图像文件的读取   利用函数imread()可完成图形图像文件的读取,语法:      A=imread(filename,fmt)     [X,map]=imread(filename,fmt)     [...]=imread(filename)     [...]=imread(filename,idx)  (只对TIF格式的文件)     [...]=imread(filename,ref)  (只对HDF格式的文件)    通常,读取的大多数图像均为8bit,当这些图像加载到内存中时,Matlab就将其存放在类uint8中。此为Matlab还支持16bit的PNG和TIF图像,当读取这类文件时,Matlab就将其存贮在uint16中。    注意:对于索引图像,即使图像阵列的本身为类uint8或类uint16,imread函数仍将颜色映象表读取并存贮到一个双精度的浮点类型的阵列中。 4.2  图形图像文件的写入   使用imwrite函数,语法如下:    imwrite(A,filename,fmt)   imwrite(X,map,filename,fmt)   imwrite(...,filename)   imwrite(...,parameter,value)    当利用imwrite函数保存图像时,Matlab缺省的方式是将其简化道uint8的数据格式。 4.3 图形图像文件信息的查询   imfinfo()函数 5.  图像文件的显示 5.1  索引图像及其显示    方法一:          image(X)          colormap(map)    方法二:           imshow(X,map) 5.2  灰度图像及其显示   Matlab 7.0 中,要显示一副灰度图像,可以调用函数 imshow 或 imagesc (即 imagescale,图像缩放函数)    (1) imshow 函数显示灰度图像    使用 imshow(I)    或  使用明确指定的灰度级书目:imshow(I,32)        由于Matlab自动对灰度图像进行标度以适合调色板的范围,因而可以使用自定义大小的调色板。其调用格式如下:           imshow(I,[low,high])    其中,low 和 high 分别为数据数组的最小值和最大值。    (2) imagesc 函数显示灰度图像   下面的代码是具有两个输入参数的 imagesc 函数显示一副灰度图像       imagesc(1,[0,1]);       colormap(gray);    imagesc 函数中的第二个参数确定灰度范围。灰度范围中的第一个值(通常是0),对应于颜色映象表中的第一个值(颜色),第二个值(通常是1)则对应与颜色映象表中的最后一个值(颜色)。灰度范围中间的值则线型对应与颜色映象表中剩余的值(颜色)。     在调用 imagesc 函数时,若只使用一个参数,可以用任意灰度范围显示图像。在该调用方式下,数据矩阵中的最小值对应于颜色映象表中的第一个颜色值,数据矩阵中的最大值对应于颜色映象表中的最后一个颜色值。 5.3  RGB 图像及其显示   (1) image(RGB)    不管RGB图像的类型是double浮点型,还是 uint8 或 uint16 无符号整数型,Matlab都能通过 image 函数将其正确显示出来。    RGB8 = uint8(round(RGB64×255));  % 将 double 浮点型转换为 uint8 无符号整型   RGB64 = double(RGB8)/255;            % 将 uint8 无符号整型转换为 double 浮点型   RGB16 = uint16(round(RGB64×65535));  % 将 double 浮点型转换为 uint16 无符号整型    RGB64 = double(RGB16)/65535;      % 将 uint16 无符号整型转换为 double 浮点型    (2) imshow(RGB) 参数是一个 m×n×3 的数组 5.4 二进制图像及其显示     (1) imshow(BW)   在 Matlab 7.0 中,二进制图像是一个逻辑类,仅包括 0 和 1 两个数值。像素 0 显示为黑色,像素 1 显示为白色。   显示时,也可通过NOT(~)命令,对二进制图象进行取反,使数值 0 显示为白色;1 显示为黑色。    例如: imshow(~BW)    (2) 此外,还可以使用一个调色板显示一副二进制图像。如果图形是 uint8 数据类型,则数值 0 显示为调色板的第一个颜色,数值 1 显示为第二个颜色。   例如: imshow(BW,[1 0 0;0 0 1])    5.5 直接从磁盘显示图像   可使用一下命令直接进行图像文件的显示:         imshow filename   其中,filename 为要显示的图像文件的文件名。    如果图像是多帧的,那么 imshow 将仅显示第一帧。但需注意,在使用这种方式时,图像数据没有保存在Matlab 7.0 工作平台。如果希望将图像装入工作台中,需使用 getimage 函数,从当前的句柄图形图像对象中获取图像数据,   命令形式为:  rgb = getimage;3:00 | 添加评论 | 发送消息 | 固定链接 | 查看引用通告 (0) | 写入日志谈论 图像的变换 

引用

图像的变换

1. 离散傅立叶变换的 Matlab 实现      Matlab 函数 fft、fft2 和 fftn 分别可以实现一维、二维和 N 维 DFT 算法;而函数 ifft、ifft2 和 ifftn 则用来计算反 DFT 。这些函数的调用格式如下:         A=fft(X,N,DIM)      其中,X 表示输入图像;N 表示采样间隔点,如果 X 小于该数值,那么 Matlab 将会对 X 进行零填充,否则将进行截取,使之长度为 N ;DIM 表示要进行离散傅立叶变换。         A=fft2(X,MROWS,NCOLS)  其中,MROWS 和 NCOLS 指定对 X 进行零填充后的 X 大小。         A=fftn(X,SIZE)其中,SIZE 是一个向量,它们每一个元素都将指定 X 相应维进行零填充后的长度。       函数 ifft、ifft2 和 ifftn的调用格式于对应的离散傅立叶变换函数一致。 例子:图像的二维傅立叶频谱 % 读入原始图像I=imread('lena.bmp');imshow(I)% 求离散傅立叶频谱J=fftshift(fft2(I));figure;imshow(log(abs(J)),[8,10])  2. 离散余弦变换的 Matlab 实现 2.1.  dct2 函数功能:二维 DCT 变换格式:B=dct2(A)         B=dct2(A,m,n)         B=dct2(A,[m,n]) 说明:B=dct2(A) 计算 A 的 DCT 变换 B ,A 与 B 的大小相同;B=dct2(A,m,n) 和 B=dct2(A,[m,n]) 通过对 A 补 0 或剪裁,使 B 的大小为 m×n。 2.2.  dict2 函数功能:DCT 反变换格式:B=idct2(A)          B=idct2(A,m,n)         B=idct2(A,[m,n]) 说明:B=idct2(A) 计算 A 的 DCT 反变换 B ,A 与 B 的大小相同;B=idct2(A,m,n) 和 B=idct2(A,[m,n]) 通过对 A 补 0 或剪裁,使 B 的大小为 m×n。 2.3.  dctmtx函数功能:计算 DCT 变换矩阵格式:D=dctmtx(n)说明:D=dctmtx(n) 返回一个 n×n 的 DCT 变换矩阵,输出矩阵 D 为 double 类型。  3.  图像小波变换的 Matlab 实现 3.1  一维小波变换的 Matlab 实现(1) dwt 函数功能:一维离散小波变换格式:[cA,cD]=dwt(X,'wname')        [cA,cD]=dwt(X,Lo_D,Hi_D)说明:[cA,cD]=dwt(X,'wname') 使用指定的小波基函数 'wname' 对信号 X 进行分解,cA、cD 分别为近似分量和细节分量;[cA,cD]=dwt(X,Lo_D,Hi_D) 使用指定的滤波器组 Lo_D、Hi_D 对信号进行分解。(2) idwt 函数功能:一维离散小波反变换格式:X=idwt(cA,cD,'wname')        X=idwt(cA,cD,Lo_R,Hi_R)        X=idwt(cA,cD,'wname',L)        X=idwt(cA,cD,Lo_R,Hi_R,L)说明:X=idwt(cA,cD,'wname') 由近似分量 cA 和细节分量 cD 经小波反变换重构原始信号 X 。        'wname' 为所选的小波函数        X=idwt(cA,cD,Lo_R,Hi_R) 用指定的重构滤波器 Lo_R 和 Hi_R 经小波反变换重构原始信号 X 。        X=idwt(cA,cD,'wname',L) 和 X=idwt(cA,cD,Lo_R,Hi_R,L) 指定返回信号 X 中心附近的 L 个点。 3.2  二维小波变换的 Matlab 实现           二维小波变换的函数-------------------------------------------------     函数名                函数功能---------------------------------------------------     dwt2            二维离散小波变换   wavedec2       二维信号的多层小波分解     idwt2           二维离散小波反变换   waverec2        二维信号的多层小波重构   wrcoef2          由多层小波分解重构某一层的分解信号   upcoef2          由多层小波分解重构近似分量或细节分量   detcoef2         提取二维信号小波分解的细节分量   appcoef2        提取二维信号小波分解的近似分量   upwlev2         二维小波分解的单层重构   dwtpet2         二维周期小波变换   idwtper2        二维周期小波反变换------------------------------------------------------------- (1) wcodemat 函数功能:对数据矩阵进行伪彩色编码格式:Y=wcodemat(X,NB,OPT,ABSOL)        Y=wcodemat(X,NB,OPT)        Y=wcodemat(X,NB)        Y=wcodemat(X)说明:Y=wcodemat(X,NB,OPT,ABSOL) 返回数据矩阵 X 的编码矩阵 Y ;NB 伪编码的最大值,即编码范围为 0~NB,缺省值 NB=16;       OPT 指定了编码的方式(缺省值为 'mat'),即:                 OPT='row' ,按行编码                 OPT='col' ,按列编码                 OPT='mat' ,按整个矩阵编码       ABSOL 是函数的控制参数(缺省值为 '1'),即:                 ABSOL=0 时,返回编码矩阵                 ABSOL=1 时,返回数据矩阵的绝对值 ABS(X) (2) dwt2 函数功能:二维离散小波变换格式:[cA,cH,cV,cD]=dwt2(X,'wname')        [cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)说明:[cA,cH,cV,cD]=dwt2(X,'wname')使用指定的小波基函数 'wname' 对二维信号 X 进行二维离散小波变幻;cA,cH,cV,cD 分别为近似分量、水平细节分量、垂直细节分量和对角细节分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器 Lo_D 和 Hi_D 分解信号 X 。 (3) wavedec2 函数功能:二维信号的多层小波分解格式:[C,S]=wavedec2(X,N,'wname')        [C,S]=wavedec2(X,N,Lo_D,Hi_D)说明:[C,S]=wavedec2(X,N,'wname') 使用小波基函数 'wname' 对二维信号 X 进行 N 层分解;[C,S]=wavedec2(X,N,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器 Lo_D 和 Hi_D 分解信号 X 。 (4) idwt2 函数功能:二维离散小波反变换格式:X=idwt2(cA,cH,cV,cD,'wname')        X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)        X=idwt2(cA,cH,cV,cD,'wname',S)        X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)说明:X=idwt2(cA,cH,cV,cD,'wname') 由信号小波分解的近似信号 cA 和细节信号 cH、cH、cV、cD 经小波反变换重构原信号 X ;X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R) 使用指定的重构低通和高通滤波器 Lo_R 和 Hi_R 重构原信号 X ;X=idwt2(cA,cH,cV,cD,'wname',S) 和 X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S) 返回中心附近的 S 个数据点。 (5) waverec2 函数说明:二维信号的多层小波重构格式:X=waverec2(C,S,'wname')        X=waverec2(C,S,Lo_R,Hi_R)说明:X=waverec2(C,S,'wname') 由多层二维小波分解的结果 C、S 重构原始信号 X ,'wname' 为使用的小波基函数;X=waverec2(C,S,Lo_R,Hi_R) 使用重构低通和高通滤波器 Lo_R 和 Hi_R 重构原信号。2:59 | 添加评论 | 发送消息 | 固定链接 | 查看引用通告 (0) | 写入日志图像增强1. 直方图均衡化的 Matlab 实现 1.1  imhist 函数功能:计算和显示图像的色彩直方图格式:imhist(I,n)        imhist(X,map)说明:imhist(I,n) 其中,n 为指定的灰度级数目,缺省值为256;imhist(X,map) 就算和显示索引色图像 X 的直方图,map 为调色板。用 stem(x,counts) 同样可以显示直方图。 1.2 imcontour 函数功能:显示图像的等灰度值图格式:imcontour(I,n),imcontour(I,v)说明:n 为灰度级的个数,v 是有用户指定所选的等灰度级向量。 1.3 imadjust 函数功能:通过直方图变换调整对比度格式:J=imadjust(I,[low high],[bottom top],gamma)        newmap=imadjust(map,[low high],[bottom top],gamma)说明:J=imadjust(I,[low high],[bottom top],gamma) 其中,gamma 为校正量r,[low high] 为原图像中要变换的灰度范围,[bottom top] 指定了变换后的灰度范围;newmap=imadjust(map,[low high],[bottom top],gamma) 调整索引色图像的调色板 map 。此时若 [low high] 和 [bottom top] 都为2×3的矩阵,则分别调整 R、G、B 3个分量。 1.4  histeq 函数功能:直方图均衡化格式:J=histeq(I,hgram)        J=histeq(I,n)        [J,T]=histeq(I,...)        newmap=histeq(X,map,hgram)        newmap=histeq(X,map)        [new,T]=histeq(X,...)说明:J=histeq(I,hgram) 实现了所谓“直方图规定化”,即将原是图象 I 的直方图变换成用户指定的向量 hgram 。hgram 中的每一个元素都在 [0,1] 中;J=histeq(I,n) 指定均衡化后的灰度级数 n ,缺省值为 64;[J,T]=histeq(I,...) 返回从能将图像 I 的灰度直方图变换成图像 J 的直方图的变换 T ;newmap=histeq(X,map) 和 [new,T]=histeq(X,...) 是针对索引色图像调色板的直方图均衡。 2. 噪声及其噪声的 Matlab 实现        imnoise 函数格式:J=imnoise(I,type)        J=imnoise(I,type,parameter)说明:J=imnoise(I,type) 返回对图像 I 添加典型噪声后的有噪图像 J ,参数 type 和 parameter 用于确定噪声的类型和相应的参数。 3. 图像滤波的 Matlab 实现 3.1 conv2 函数功能:计算二维卷积格式:C=conv2(A,B)        C=conv2(Hcol,Hrow,A)        C=conv2(...,'shape')说明:对于 C=conv2(A,B) ,conv2 的算矩阵 A  和 B 的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1]; C=conv2(Hcol,Hrow,A) 中,矩阵 A 分别与 Hcol 向量在列方向和 Hrow 向量在行方向上进行卷积;C=conv2(...,'shape') 用来指定 conv2 返回二维卷积结果部分,参数 shape 可取值如下:        》full 为缺省值,返回二维卷积的全部结果;        》same 返回二维卷积结果中与 A 大小相同的中间部分;        valid 返回在卷积过程中,未使用边缘补 0  部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1]。 3.2 conv 函数功能:计算多维卷积格式:与 conv2 函数相同 3.3 filter2函数功能:计算二维线型数字滤波,它与函数 fspecial 连用格式:Y=filter2(B,X)        Y=filter2(B,X,'shape')说明:对于 Y=filter2(B,X) ,filter2 使用矩阵 B 中的二维 FIR 滤波器对数据 X 进行滤波,结果 Y 是通过二维互相关计算出来的,其大小与 X 一样;对于 Y=filter2(B,X,'shape') ,filter2 返回的 Y 是通过二维互相关计算出来的,其大小由参数 shape 确定,其取值如下:        》full 返回二维相关的全部结果,size(Y)>size(X);        》same 返回二维互相关结果的中间部分,Y 与 X 大小相同;        》valid 返回在二维互相关过程中,未使用边缘补 0 部分进行计算的结果部分,有 size(Y)

MATLAB常用命令整理

MATLAB常用命令整理: -------------------------------------------------------------------------------- (1)MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的

度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开 sign(x):符号函数 (Signum function)。 当x<0时,sign(x)=-1; 当x=0时,sign(x)=0; 当x>0时,sign(x)=1。 rem(x,y):求x除以y的馀数 gcd(x,y):整数x和y的最大公因数 lcm(x,y):整数x和y的最小公倍数 exp(x):自然指数 pow2(x):2的指数 log(x):以e为底的对数,即自然对数或 log2(x):以2为底的对数 log10(x):以10为底的对数 =============================================== (2)MATLAB常用的三角函数 sin(x):正弦函数 cos(x):馀弦函数 tan(x):正切函数 asin(x):反正弦函数 acos(x):反馀弦函数 atan(x):反正切函数 atan2(x,y):四象限的反正切函数 sinh(x):超越正弦函数 cosh(x):超越馀弦函数 tanh(x):超越正切函数 asinh(x):反超越正弦函数 acosh(x):反超越馀弦函数 atanh(x):反超越正切函数 =============================================== (3)变数命名的规则 1.第一个字母必须

英文字母 2.字母间不可留空格 3.最多只能有19个字母,MATLAB会忽略多馀字母 =============================================== (4)适用於向量的常用函数有: min(x): 向量x的元素的最小值 max(x): 向量x的元素的最大值 mean(x): 向量x的元素的平均值 median(x): 向量x的元素的中位数 std(x): 向量x的元素的标准差 diff(x): 向量x的相邻元素的差 sort(x): 对向量x的元素进行排序(Sorting) length(x): 向量x的元素个数 norm(x): 向量x的欧氏(Euclidean)长度 sum(x): 向量x的元素总和 prod(x): 向量x的元素总乘积 cumsum(x): 向量x的累计元素总和 cumprod(x): 向量x的累计元素总乘积 dot(x, y): 向量x和y的内积 cross(x, y): 向量x和y的外积 (大部份的向量函数也可适用於矩阵,详见下述。) =============================================== (5)MATLAB常用到的永久常数。 i或j:基本虚数单位(即) eps:系统的浮点(Floating-point)精确度 inf:无限大, 例如1/0 nan或NaN:非数值(Not a number),例如0/0 pi:圆周率 p(= 3.1415926...) realmax:系统所能表示的最大数值 realmin:系统所能表示的最小数值 nargin: 函数的输入引数个数 nargin: 函数的输出引数个数 ==================================================== (6)MATLAB基本绘图函数 plot: x轴和y轴均为线性刻度(Linear scale) loglog: x轴和y轴均为对数刻度(Logarithmic scale) semilogx: x轴为对数刻度,y轴为线性刻度 semilogy: x轴为线性刻度,y轴为对数刻度

若要画出多条曲线,只需将座标对依次放入plot函数即可: plot(x, sin(x), x, cos(x)); 若要改变颜色,在座标对後面加上相关字串即可: plot(x, sin(x), 'c', x, cos(x), 'g'); 若要同时改变颜色及图线型态(Line style),也是在座标对後面加上相 关字串即可: plot(x, sin(x), 'co', x, cos(x), 'g*'); ==================================================== (7)plot绘图函数的叁数

字元 颜色 字元 图型

y 黄色 . 点

k 黑色 o 圆

w 白色 x x

b 蓝色 + +

g 绿色 * *

r 红色 - 实线

c 亮青色 : 点线

m 锰紫色 -. 点虚线

-- 虚线

====================================================

(8)图形处理 图形完成後,我们可用axis([xmin,xmax,ymin,ymax])函数来调整图轴的范c围:

axis([0, 6, -1.2, 1.2]);

此外,MATLAB也可对图形加上各种注解与处理:

xlabel('Input Value'); % x轴注解

ylabel('Function Value'); % y轴注解

title('Two Trigonometric Functions'); % 图形标题

legend('y = sin(x)','y = cos(x)'); % 图形注解

grid on; % 显示格线

我们可用subplot来同时画出数个小图形於同一个视窗之中:

subplot(2,2,1); plot(x, sin(x));

subplot(2,2,2); plot(x, cos(x));

subplot(2,2,3); plot(x, sinh(x));

subplot(2,2,4); plot(x, cosh(x));

MATLAB还有其他各种二维绘图函数,以适合不同的应用,详见下表。

====================================================

(9)其他各种二维绘图函数

bar 长条图 errorbar 图形加上误差范围 fplot 较精确的函数图形 polar 极座标图 hist 累计图 rose 极座标累计图 stairs 阶梯图 stem 针状图 fill 实心图 feather 羽毛图 compass 罗盘图 quiver 向量场图

matlab命令行环境的常用操作

1.有关命令行环境的一些操作: (1) clc 擦去一页命令窗口,光标回屏幕左上角 (2) clear 从工作空间清除所有变量 (3) clf 清除图形窗口内容 (4) who 列出当前工作空间中的变量 (5) whos 列出当前工作空间中的变量及信息 或用工具栏上的 Workspace 浏览器 (6) delete <文件名> 从磁盘删除指定文件 (7) which <文件名> 查找指定文件的路径 ( 9 ) clear all 从工作空间清除所有变量和函数 (10) help <命令名> 查询所列命令的帮助信息 (11) save name 保存工作空间变量到文件 name.mat (12) save name x y 保存工作空间变量 x y到文件 name.mat (13) load name 下载‘name’文件中的所有变量到工作空间 (14) load name x y 下载‘name’文件中的变量x y到工作空间 (15) diary name1.m 保存工作空间一段文本到文件 name1.m … diary off (16) type name.m 在工作空间查看name.m文件内容 (17) what 列出当前目录下的m文件和mat文件 ↑ Ctrl+p 调用上一次的命令 ↓ Ctrl+n 调用下一行的命令 ← Ctrl+b 退后一格 → Ctrl+f 前移一格 Ctrl + ← Ctrl+r 向右移一个单词 Ctrl + → Ctrl+l 向左移一个单词 Home Ctrl+a 光标移到行首 End Ctrl+e 光标移到行尾 Esc Ctrl+u 清除一行 Del Ctrl+d 清除光标后字符 Backspace Ctrl+h 清除光标前字符 Ctrl+k 清除光标至行尾字 Ctrl+c 中断程序运行

一.常用的窗口命令 help 启动联机帮助文件显示 what 列出当前目录下的有关文件 type 列出M文件 lookfor 对help信息中的关键词查找 which 找出函数与文件所在的目录名 demo 运行MATLAB的演示程序 path 设置或查询MATLAB的路径

二.有关文件及其操作的语句 cd 改变当前的工作目录 dir 列出当前目录的内容 delete 删除文件 getenv 获得环境

数 unix 执行操作系统命令并返回结果 diary 将MATLAB运行的命令存盘 fopen 打开文件 fclose 关闭文件 fread 从文件中读取二进制数据 fwrite 向一个文件写二进制数据 fscanf 从文件读取格式化数据 fprintf 将格式化数据写入文件 fgetl 从文件中读行并放弃换行符 fgets 从文~◎件中读行并保持换行符 ferror 查询文件的输入输出的错误信息 feof 检查文件结束标志 fseek 设置文件位置指针 ftell 得到文件位置指针的位置 prewind 反绕一个打开的文件 tempname 建立临时的文件名 tempdir 返回一个已存在的临时目录名

三.启动与退出的命令 quit,exit 退出MATLAB环境 startup MATLAB自启动文件 matlabrc 启动主程序

四.管理变量工作空间的命令 who 简要列出工作空间变量名 whos 详细列出工作空间变量名 load 从文件中读入变量 save 列出工作空间中变量存盘 clear 删除内存中的变量与函数 pack 整理工作空间的内存 size 查询矩阵的维数 disp 显示矩阵和文本 length 查询矢量的维数

五.对命令窗口控制的常用命令 cedit 设置命令行编辑与回调的参数 clc 清除命令窗口中的显示 home 将光标移动到左上角位置 format 设置输出格式 echo 显示文件中的MATLAB命令 more 控制命令窗口的输出页面

帧处理

frame=n;mov = aviread('filename');I = frame2im(mov(frame));

发个subdivsion算法的程序 和 小波函数

sy1133 发表于: 2008-4-11 23:16 来源: Matlab中文学习站

%  用subdivision算法,通过mask刻画细分方程。%  沈益 2008-2-20 function subdivision(mask)% 细分方程所对应的mask系数%正规化mask=2*mask/sum(mask);% Dirac sequencephi=[1 0];%迭代次数M=10;% 奇偶分量N=length(mask);modN=mod(N,2); if modN>0  mask_e=mask(1,[2:2:N-1]);  mask_o=mask(1,[1:2:N]);else  mask_e=mask(1,[2:2:N]);  mask_o=mask(1,[1:2:N-1]);end    % 迭代:  收敛速度是指数次for m=1:M;    ee=conv(mask_e,phi);    oo=conv(mask_o,phi);    phi(1,[2:2:2*length(ee)])=ee;    phi(1,[1:2:2*length(oo)-1])=oo;end;% 范围phi=phi(1N-1)*(2^M)+1);X=linspace(0,N-1,(N-1)*2^M+1);%画图plot(X,phi); axis ([0,N-1,-0.5,1.5])axis square

循环提取帧

mov=aviread('avi2.avi'); temp=size(mov); fnum=temp(2);%总帧数 for t=1:1:fnum     X=(mov(t).cdata);%提取的单帧 end

最完整MATLAB工具箱下载连接[分享]最完整MATLAB工具箱下载连接MATLAB Toolboxes New ZSM (zero sum multinomial)http://mcgillb.user.msu.edu/zsmcode.html

Binaural-modeling software for MATLAB/Windowshttp://www.lifesci.sus***.ac.uk/home/Michael_Akeroyd/download2.html

Statistical Parametric Mapping (SPM)http://www.fil.ion.ucl.ac.uk/spm/ext/

BOOTSTRAP MATLAB TOOLBOXhttp://www.csp.curtin.edu.au/downloads/bootstrap_toolbox.html

The DSS package for MATLABDSS Matlab package contains algorithms for performing linear, deflation and symmetric DSS.http://www.cis.hut.fi/projects/dss/package/ Psychtoolboxhttp://www.psychtoolbox.org/download.html Multisurface Method Tree with MATLABhttp://www.cs.wisc.edu/~olvi/uwmp/msmt.html A Matlab Toolbox for every single topic !http://stommel.tamu.edu/~baum/toolboxes.html eg. BrainStorm - MEG and EEG data visualization and processingCLAWPACK is a software package designed to compute numerical solutions to hyperbolic partial differential equations using a wave propagation approachhttp://www.amath.washington.edu/~claw/ DIPimage - Image Processing ToolboxPRTools - Pattern Recognition Toolbox (+ Neural Networks) NetLab - Neural Network ToolboxFSTB - Fuzzy Systems ToolboxFusetool - Image Fusion Toolboxhttp://www.metapix.de/toolbox.htm W***EKIT - Wavelet ToolboxGat - Genetic Algorithm Toolbox TSTOOL is a MATLAB software package for nonlinear time series analysis.TSTOOL can be used for computing: Time-delay reconstruction, Lyapunov exponents, Fractal dimensions, Mutual information, Surrogate data tests, Nearest neighbor statistics, Return times, Poincare sections, Nonlinear predictionhttp://www.physik3.gwdg.de/tstool/ MATLAB / Data description toolbox A Matlab toolbox for data description, outlier and novelty detection March 26, 2004 - D.M.J. Tax http://www-ict.ewi.tudelft.nl/~davidt/dd_tools/dd_manual.html MBEhttp://www.pmarneffei.hku.hk/mbetoolbox/ Betabolic network toolbox for Matlab http://www.molgen.mpg.de/~lieberme/pages/network_matlab.html Pharmacokinetics toolbox for Matlab http://page.inf.fu-berlin.de/~lieber/seiten/pbpk_toolbox.html

The SpiderThe spider is intended to be a complete object orientated environment for machine learning in Matlab. Aside from easy use of base learning algorithms, algorithms can be plugged together and can be compared with, e.g model selection, statistical tests and visual plots. This gives all the power of objects (reusability, plug together, share code) but also all the power of Matlab for machine learning research.http://www.kyb.tuebingen.mpg.de/bs/people/spider/index.html Schwarz-Christoffel Toolboxhttp://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=1316&objectType=file#

XML Toolbox http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=4278&objectType=file FIR/TDNN Toolbox for MATLAB Beta version of a toolbox for FIR (Finite Impulse Response) and TD (Time Delay) Neural Networks. http://www.cs.utep.edu/interval-comp/dagstuhl.03/oish.pdf Misc. http://www.dcsc.tudelft.nl/Research/Software/index.html Astronomy Saturn and Titan trajectories ... MALTAB astronomyhttp://sprg.ssl.berkeley.edu/~abrecht/Matlab-codes/

Audio MA Toolbox for Matlab Implementing Similarity Measures for Audiohttp://www.oefai.at/~elias/ma/index.html MAD - Matlab Auditory Demonstrationshttp://www.dcs.shef.ac.uk/~martin/MAD/docs/mad.htm

Music Analysis - Toolbox for Matlab : Feature Extraction from Raw Audio Signals for Content-Based Music Retrievalhttp://www.ai.univie.ac.at/~elias/ma/

WarpTB - Matlab Toolbox for Warped DSPBy Aki Härmä and Matti Karjalainenhttp://www.acoustics.hut.fi/software/warp/

MATLAB-related Softwarehttp://www.dpmi.tu-graz.ac.at/~schloegl/matlab/

Biomedical Signal data formats (EEG machine specific file formats with Matlab import routines)http://www.dpmi.tu-graz.ac.at/~schloegl/matlab/eeg/

MPEG Encoding library for MATLAB Movies (Created by David Foti)It enables MATLAB users to read (MPGREAD) or write (MPGWRITE) MPEG movies. That should help Video Quality project.

Filter Design packagehttp://www.ee.ryerson.ca:8080/~mzeytin/dfp/index.html

Octave by Christophe COUVREUR (Generates normalized A-weigthing, C-weighting, octave and one-third-octave digital filters)http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectType=file&objectId=69

Source Coding MATLAB Toolboxhttp://www.ece.umn.edu/users/kieffer/programs.html

Bio Medical Informatics (Top) CGH-Plotter: MATLAB Toolbox for CGH-data AnalysisCode: http://sigwww.cs.tut.fi/TICSP/CGH-Plotter/ Poster: http://sigwww.cs.tut.fi/TICSP/CSB2003/Posteri_CGH_Plotter.pdf

The Brain Imaging Software Toolboxhttp://www.bic.mni.mcgill.ca/software/

MRI Brain Segmentationhttp://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=4879

Chemometrics (providing PCA) (Top) Matlab Molecular Biology & Evolution Toolbox(Toolbox Enables Evolutionary Biologists to Analyze and View DNA and Protein Sequences)James J. Cai http://www.pmarneffei.hku.hk/mbetoolbox/

Toolbox provided by Prof. Massart research grouphttp://minf.vub.ac.be/~fabi/publiek/

Useful collection of routines from Prof age smilde research grouphttp://www-its.chem.uva.nl/research/pac

Multivariate Toolbox written by Rune Mathisenhttp://www.bitjungle.com/~mvartools/index.html

Matlab code and datasetshttp://www.acc.umu.se/~tnkjtg/chemometrics/dataset.html

Chaos (Top) Chaotic Systems Toolbox http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=1597&objectType=file#

HOSA Toolboxhttp://www.mathworks.nl/matlabcentral/fileexchange/loadFile.do?objectId=3013&objectType=file

Chemistry (Top) MetMAP - (Metabolical Modeling, Analysis and oPtimization alias Met. M. A. P.)http://webpages.ull.es/users/sympbst/pag_ing/pag_metmap/index.htm

DoseLab - A set of software programs for quantitative comparison of measured and computed radiation dose distributionshttp://doselab.sourceforge.net

GenBank Overviewhttp://www.ncbi.nlm.nih.gov/Genbank/GenbankOverview.html Matlab: http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=1139

Coding Code for the estimation of Scaling Exponentshttp://www.cubinlab.ee.mu.oz.au/~darryl/secondorder_code.html

Control (Top) Control Tutorial for Matlab http://www.engin.umich.edu/group/ctm/

Another Communications (Top) Channel Learning Architecture toolbox(This Matlab toolbox is a supplement to the article "HiperLearn: A High Performance Learning Architecture")http://www.isy.liu.se/cvl/Projects/hiperlearn/

Source Coding MATLAB Toolboxhttp://www.ece.umn.edu/users/kieffer/programs.html

TCP/UDP/IP Toolbox 2.0.4http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=345&objectType=file

Home Networking Basis: Transmission Environments and Wired/Wireless ProtocolsWalter Y. Chenhttp://www.mathworks.com/support/books/book5295.jsp?category=new&language=-1 MATLAB M-files and Simulink models http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=3834&objectType=file

Engineering (Top) OPNML/MATLAB Facilitieshttp://www.opnml.unc.edu/OPNML_Matlab/

Mesh Generationhttp://www.cs.cornell.edu/home/vavasis/qmg-home.html

OpenFEM : An Open-Source Finite Element Toolbox http://www.openfem.net/

CALFEM is an interactive computer program for teaching the finite element method (FEM)http://www.byggmek.lth.se/Calfem/frinfo.htm

The Engineering Vibration Toolboxhttp://www.cs.wright.edu/people/faculty/jslater/vtoolbox/vtoolbox.html

SaGA - Spatial and Geometric Analysis Toolboxby Kirill K. Pankratovhttp://puddle.mit.edu/~glenn/kirill/saga.html

除了上面讨论的,字符串和它的ASCII表示之间转换外,MATLAB还提供了大量的其它的有用的字符串转换函数。它们包括:

表6.1

字 符 串 转 换

abs

字符串到ASCII转换

dec2hex

十进制数到十六进制字符串转换

fprintf

把格式化的文本写到文件中或显示屏上

hex2dec

十六进制字符串转换成十进制数

hex2num

十六进制字符串转换成IEEE浮点数

int2str

整数转换成字符串

lower

字符串转换成小写

num2str

数字转换成字符串

setstr

ASCII转换成字符串

sprintf

用格式控制,数字转换成字符串

sscanf

用格式控制,字符串转换成数字

str2mat

字符串转换成一个文本矩阵

str2num

字符串转换成数字

upper

字符串转换成大写

在许多情况下,希望把一个数值嵌入到字符串中。几个字符串转换可完成这个任务。

» rad=2.5; area=pi*rad^2;

» t=[' A circle of radius ' num2str(rad) ' has an area of ' num2str(area) ' . ' ] ;

» disp(t)

A circle of radius 2.5 has an area of 19.63.

这里函数num2str用来把数值转换成字符串,字符串连接用来把所转换的数嵌人到一个字符串句子中。按类似方式,int2str把整数转换成字符串。无论是num2str还是int2str都调用函数sprintf,它用类似C语言语法把数值转换成字符串。

函数fprintf经常是函数disp的一个有用替换,由于它提供了对结果更多的控制。当准备把格式化的数据写到一个文件中去时,按缺省它在命令窗口显示结果。例如,

» fprintf(' See what this does ')

See what this does»

» fprintf(' See what this does\n ')

See what this does

在上面第一个例子里,fprintf显示字符串,然后立即给出MATLAB提示符。相反,在第二个例子里,\n 插入一个新行字符,在MATLAB提示符出现之前创建一个新行。

无论fprintf还是sprintf以同样方式处理输入参量,但fprintf把输出送到显示屏或文件中,而sprintf把输出返回到一个字符串中。例如,上面的例子用num2str可重写为

» t=sprintf(' A circle of radius %.4g has an area of %.4g. ', rad, area);

» disp(t)

A circle of radius 2.5 has an area of 19.63.

» fprintf(' A circle of radius %.4g has an area of %.4g.\n ' , rad, area)

A circle of radius 2.5 has an area of 19.63.

这里%.4g是用在函数num2str中的数据格式。%.4g就是用指数或定点标记,不管哪一种更短些,只显示至4位数字。除了g格式,还可用e (指数)和f (定点)转换。表6.2表明在各种不同转换下,如何显示pi结果。

表6.2

数 值 格 式 转 换 例 子

命令

结果

fprintf(' %.0e\n ',pi)

3e+00

fprintf(' %.1e\n ',pi)

3.1e+00

fprintf(' %.3e\n ',pi)

3.142e+00

fprintf(' %.5e\n ',pi)

3.14159e+00

fprintf(' %.10e\n ',pi)

3.1415926536e+00

fprintf(' %.0f\n ',pi)

3

fprintf(' %.1f\n ',pi)

3.1

fprintf(' %.3f\n ',pi)

3.142

fprintf(' %.5f\n ',pi)

3.14159

fprintf(' %.10f\n ',pi)

3.1415926536

fprintf(' %.0g\n ',pi)

3

fprintf(' %.1g\n ',pi)

3

fprintf(' %.3g\n ',pi)

3.14

fprintf(' %.5g\n ',pi)

3.1416

fprintf(' %.10g\n ',pi)

3.141592654

fprintf(' %.8.0g\n ',pi)

3

fprintf(' %.8.1g\n ',pi)

3

fprintf(' %.8.3g\n ',pi)

3.14

fprintf(' %.8.5g\n ',pi)

3.1416

fprintf(' %.8.10g\n ',pi)

3.141592654

注意,对e 和f 格式,小数点右边的十进制数就是小数点右边要显示的多少位数字。相反,在g 的格式里,小数点右边的十进制数指定了显示数字的总位数。另外,注意最后的五行,其结果指定为8个字符长度,且是右对齐。在最后一行,8被忽略,因为指定超过了8位。

概括起来,当需要比缺省函数disp,num2str和int2str所提供的更多的控制时,fprintf和sprintf是有用的。

函数str2mat把一列的几个字符串转换成一个字符串矩阵。例如,

» a=' one ' ; b= ' two ' ; c= ' three ' ;

» disp(str2mat(a, b, c, ' four '))

one

two

three

four

从上面看不明显,上面的每行有同样数目的元素。较短行用空格补齐,使结果形成一个有效的矩阵

在逆方向转换中,有时是很方便的。

» s= ' [1 2; pi 4] ' % a string of a MATLAB matrix

s =

[1 2; pi 4]

» str2num(s)

ans =

1.0000 2.0000

3.1416 4.0000

» s=' 123e+5 ' % a string containing a simple number

s =

123e+5

» str2num(s)

ans =

12300000

函数str2num不能接受用户定义的变量,也不能执行转换过程的算术运算。更多的信息,请看在线帮助。

MATLAB提供了大量的字符串函数,包括列在表6.3当中的。

表6.3

字 符 串 函 数

eval(string)

作为一个MATLAB命令求字符串的值

eval(try,catch)

blanks(n)

返回一个n个零或空格的字符串

deblank

去掉字符串中后拖的空格

feval

求由字符串给定的函数值

findstr

从一个字符串内找出字符串

isletter

字母存在时返回真值

isspace

空格字符存在时返回真值

isstr

输入是一个字符串,返回真值

lasterr

返回上一个所产生MATLAB错误的字符串

strcmp

字符串相同,返回真值

strrep

用一个字符串替换另一个字符串

strtok

在一个字符串里找出第一个标记

列在上面的第一个函数eval给MATLAB提供宏的能力。其中,该函数提供了将用户创建的函数名传给其它函数能力,以便求值。它的应用例子包括:

» a=eval(' sqrt(2) ')

a =

1.4142

» eval(' a=sqrt(2) ')

a =

1.4142

上面的例子演示了函数eval。显然,它们不是计算2的平方根的最简单方法。当被求值的字符串是由子字符串连接而成,或将字符串传给一个函数以求值时,eval非常有用。说明这种用途例子本书的以后会提及。

如果字符串传递到eval不能被辨认,MATLAB提供下列语法:

» eval(' a=sqrtt(2) ',' a=[ ] ')

a =

[ ]

这里第二个参量被执行。由于第一个参量有误,即sqrtt不是一个有效的MATLAB函数。这种形式经常被描述为eval(try,catch)。

函数feval与eval类似,但在用法上有更多的限制。feval(' fun ',x)求由字符串' fun '给定的函数值,其输入参量是变量x。即feval(' fun ',x)等价于求fun(x)值。例如,

» a=feval(' sqrt ' ,2)

a =

1.4142

函数eval,feval的基本用途限在用户创建的函数内。一般地,feval可求出有大量输入参量的函数值,例如,feval(' fun ', x, y, z) 等价于求fun(x, y, z)值。

列在上面表中的许多字符串函数提供了基本的字符串语法分析能力。例如,findstr返回一个在另一个字符串内字符串的起始下标值。

» b=' Peter Piper picked a peck of pickled peppers ' ;

» findstr(b,' ') % find space

ans =

6 12 19 21 26 29 37

» findstr(b,' p ') % find the letter p

ans =

9 13 22 30 38 40 41

» find(b= = ' p ') % for single character searches the find command works too

ans =

9 13 22 30 38 40 41

» findstr(b, ' cow ') % find the word cow

ans =

[ ]

» findstr(b,' pick ') % find the string pick

ans =

13 30

注意这个函数对大小写是敏感的,当不匹配时,返回空矩阵。findstr对字符串矩阵不起作用。

» strrep(b, ' p ', ' P ') % capitalize all p ' s

ans =

Peter PiPer Picked a Peck of Pickled PePPers

» strrep(b, ' Peter ', ' Pamela ') % change Peter to Pamela

ans =

Pamela Piper picked a peck of pickled peppers

正如上面所看到的,strrep执行简单的字符串替代。strrep对字符串矩阵不起作用。

函数strtok找出由特定字符指定的字符串内的标记,空格是缺省限定字符。例如,

» disp(b)

Peter Piper picked a peck of pickled peppers

» strtok(b) % find first token in above string separated by whitespace

ans =

Peter

» [c, r]=strtok(b) % return the remainder of the string array in r

c =

Peter

r =

Piper picked a peck of pickled peppers

» [d,s]=strtok(r) %find the next token by using the previous remainder

d =

Piper

s =

picked a peck of pickled peppers

用空格作为限定符,strtok找出在数组中的单词。strtok对字符串矩阵不起作用。

» [d, s]=strtok(b, ' pP ') %let delimiter be lower or upper case P

d =

eter

s =

Piper picked a peck of pickled peppers

如果提供一个可选的字符串,它的字符是限定符。注意在标记里,不返回限定符,但返回所有限定符之前的字符。也就是,在上面的字符串d = eter末端有一个空格。

6.1 字符串

在MATLAB中的字符串一般是ASCII值的数值数组,它作为字符串表达式进行显示。例如,

» t=' How about this character string? '

t =

How about this character string?

» size(t)

ans =

1 32

» whos

Name Size Elements Bytes Density Complex

ans 1 by 2 2 16 Full No

t 1 by 32 32 256 Full No

一个字符串是由单引号括起来的简单文本。在字符串里的每个字符是数组里的一个元素,字符串的存储要求每个字符8个字节,如同MATLAB的其它变量。因为ASCII字符只要求一个字节,故这种存储要求是浪费的,7/8所分配的存储空间无用。然而,对字符串保持同样的数据结构简化MATLAB的内部数据结构。所给出的字符串操作并不是MATLAB的基本特点,但这种表达是方便和可接受的。

为了了解下面字符串的ASCII表达,只需对字符串执行一些算术运算。最简单和计算上最有效的方法是取数组的绝对值。例如,

» u=abs(t)

u =

Columns 1 through 12

72 111 119 32 97 98 111 117 116 32 116 104

Columns 13 through 24

105 115 32 99 104 97 114 97 99 116 101 114

Columns 25 through 32

32 115 116 114 105 110 103 63

» u=t+0

u =

Columns 1 through 12

72 111 119 32 97 98 111 117 116 32 116 104

Columns 13 through 24

105 115 32 99 104 97 114 97 99 116 101 114

Columns 25 through 32

32 115 116 114 105 110 103 63

在上面后一个例子里,加零到字符串也改变了它的ASCII的表示。函数setstr提供了逆转换。

» v=setstr(u)

v =

How about this character string?

因为字符串是数值数组,它们可以用MATLAB中所有可利用的数组操作工具进行操作。例如,

» u=t(16:24)

u =

character

字符串象数组一样进行编址。这里元素16到24包含单词character

» u=t(24:-1:16)

u =

retcarahc

这是单词character的反向拼写。

» u=t(16:24)'

u =

c

h

a

r

a

c

t

e

r

用转置算子将单词character变换成一个列。

» v=' I can''t find the manual! '

v =

I can't find the manual!

字符串内的单引号是由两个连续的单引号来表示。

字符串连接可以直接从数组连接中得到。

» u=' If a woodchuck could chuck wood, ' ;

» v=' how much wood would a woodchuck chuck? ' ;

» w=[u v]

w =

If a woodchuck could chuck wood, how much wood would a woodchuck chuck?

函数disp允许不打印它的变量名而显示一个字符串。例如,

»disp(u)

If a woodchuck could chuck wood,

注意u = 语句被去掉了。这对脚本文件内显示帮助的文本有用。

如同矩阵,字符串可以有多个行,但每行必须有相同数目的列数。因此,显然要用空格以使所有行有相同长度,例如,

» v=[' Character strings having more than '

' one row must have the same number '

' of column just like matrices! ']

v =

Character strings having more than

one row must have the same number

of column just like matrices!

考虑下面例子,它把一个字符串转换成大写。首先,函数find用来找出小写字符的下标值,然后,从小写元素中只减去小写与大写之差,最后,用setstr把求得的数组转换成它的字符串表示。

» disp(u)

If a woodchuck could chuck wood,

» i=find(u>=' a ' & u<= ' z '); % find is a very powerful function!

» u(i)=setstr(u(i)-(' a '-' A '))

u =

IF A WOODCHUCK COULD CHUCK WOOD,

事实上,如在3.7节所描述的,矩阵能由单个下标标识。而不是由行和列下标标识,所以上面例子对字符串矩阵v也同样适用:

» disp(v)

Character strings having more than

one row must have the same number

of column just like matrices!

» i=find(v>=' a ' & v<=' z '); % here i is a single index vector into v,

» v(i)=setstr(v(i)-(' a '-' A ')) % and matrix keeps the same orientation.

v =

CHARACTER STRINGS HAVING MORE THAN

ONE ROW MUST HAVE THE SAME NUMBER

OF COLUMN JUST LIKE MATRICES!

最后,当使用前面脚本文件这一章节中的函数input时,字符串是很有用的。

» t=' Enter number of rolls of tape > ' ;

» tape=input(t)

Enter number of rolls of tape > 5

tape =

5

另外,函数input能输入一个字符串:

» x=input(' Enter anything > ',' s ')

Enter anything > anything can be entered

x =

anything can be entered

这里,在函数input里的附加参量’s’告诉MATLAB,作为一个字符串,只要把用户输入传送到输出变量,就不需要引号。事实上,如果将引号包括进去,它们就变成返回字符串的一部分。

 1.applylut

  功能:

  在二进制图像中利用lookup表进行边沿操作.

  语法:

  A = applylut(BW,lut)

  举例

  lut = makelut('sum(x() == 4',2);

  BW1 = imread('text.tif');

  BW2 = applylut(BW1,lut);

  imshow(BW1)

  figure, imshow(BW2)

  相关命令:

  makelut

  2.bestblk

  功能:

  确定进行块操作的块大小.

  语法:

  siz = bestblk([m n],k)

  [mb,nb] = bestblk([m n],k)

  举例

  siz = bestblk([640 800],72)

  siz =

  64 50

  相关命令:

  blkproc

  3.blkproc

  功能:

  MATLAB高级应用——图形及影像处理 320

  实现图像的显式块操作.

  语法:

  B = blkproc(A,[m n],fun)

  B = blkproc(A,[m n],fun,P1,P2,...)

  B = blkproc(A,[m n],[mborder nborder],fun,...)

  B = blkproc(A,'indexed',...)

  举例

  I = imread('alumgrns.tif');

  I2 = blkproc(I,[8 8],'std2(x)*ones(size(x))');

  imshow(I)

  figure, imshow(I2,[]);

  相关命令:

  colfilt, nlfilter,inline

  4.brighten

  功能:

  增加或降低颜色映像表的亮度.

  语法:

  brighten(beta)

  newmap = brighten(beta)

  newmap = brighten(map,beta)

  brighten(fig,beta)

  相关命令:

  imadjust, rgbplot

  5.bwarea

  功能:

  计算二进制图像对象的面积.

  语法:

  total = bwarea(BW)

  举例

  BW = imread('circles.tif');

  imshow(BW);

  附录 MATLAB图像处理命令 321

  bwarea(BW)

  ans =

  15799

  相关命令:

  bweuler, bwperim

  6.bweuler.

  功能:

  计算二进制图像的欧拉数.

  语法:

  eul = bweuler(BW,n)

  举例

  BW = imread('circles.tif');

  imshow(BW);

  bweuler(BW)

  ans =

  -2

  相关命令:

  bwmorph, bwperim

  7.bwfill

  功能:

  填充二进制图像的背景色.

  语法:

  BW2 = bwfill(BW1,c,r,n)

  BW2 = bwfill(BW1,n)

  [BW2,idx] = bwfill(...)

  BW2 = bwfill(x,y,BW1,xi,yi,n)

  [x,y,BW2,idx,xi,yi] = bwfill(...)

  BW2 = bwfill(BW1,'holes',n)

  [BW2,idx] = bwfill(BW1,'holes',n)

  举例

  MATLAB高级应用——图形及影像处理 322

  BW1 =[1 0 0 0 0 0 0 0

  1 1 1 1 1 0 0 0

  1 0 0 0 1 0 1 0

  1 0 0 0 1 1 1 0

  1 1 1 1 0 1 1 1

  1 0 0 1 1 0 1 0

  1 0 0 0 1 0 1 0

  1 0 0 0 1 1 1 0]

  BW2 = bwfill(BW1,3,3,8)

  BW2 =

  1 0 0 0 0 0 0 0

  1 1 1 1 1 0 0 0

  1 1 1 1 1 0 1 0

  1 1 1 1 1 1 1 0

  1 1 1 1 0 1 1 1

  1 0 0 1 1 0 1 0

  1 0 0 0 1 0 1 0

  1 0 0 0 1 1 1 0

  I = imread('blood1.tif');

  BW3 = ~im2bw(I);

  BW4 = bwfill(BW3,'holes');

  imshow(BW3)

  figure, imshow(BW4)

  相关命令:

  bwselect, roifill

  8.bwlabel

  功能:

  标注二进制图像中已连接的部分.

  语法:

  附录 MATLAB图像处理命令 323

  L = bwlabel(BW,n)

  [L,num] = bwlabel(BW,n)

  举例

  BW = [1 1 1 0 0 0 0 0

  1 1 1 0 1 1 0 0

  1 1 1 0 1 1 0 0

  1 1 1 0 0 0 1 0

  1 1 1 0 0 0 1 0

  1 1 1 0 0 0 1 0

  1 1 1 0 0 1 1 0

  1 1 1 0 0 0 0 0]

  L = bwlabel(BW,4)

  L =

  1 1 1 0 0 0 0 0

  1 1 1 0 2 2 0 0

  1 1 1 0 2 2 0 0

  1 1 1 0 0 0 3 0

  1 1 1 0 0 0 3 0

  1 1 1 0 0 0 3 0

  1 1 1 0 0 3 3 0

  1 1 1 0 0 0 0 0

  [r,c] = find(L==2);

  rc = [r c]

  rc =

  2 5

  3 5

  2 6

  3 6

  相关命令:

  bweuler, bwselect

  9.bwmorph

  功能:

  提取二进制图像的轮廓.

  语法:

  BW2 = bwmorph(BW1,operation)

  BW2 = bwmorph(BW1,operation,n)

  举例

  BW1 = imread('circles.tif');

  MATLAB高级应用——图形及影像处理 324

  imshow(BW1);

  BW2 = bwmorph(BW1,'remove');

  BW3 = bwmorph(BW1,'skel',Inf);

  imshow(BW2)

  figure, imshow(BW3)

  相关命令:

  bweuler, bwperim, dilate, erode

  10.bwperim

  功能:

  计算二进制图像中对象的周长.

  语法:

  BW2 = bwperim(BW1,n)

  举例

  BW1 = imread('circbw.tif');

  BW2 = bwperim(BW1,8);

  imshow(BW1)

  figure, imshow(BW2)

  附录 MATLAB图像处理命令 325

  相关命令:

  bwarea, bweuler, bwfill

  11.bwselect

  功能:

  在二进制图像中选择对象.

  语法:

  BW2 = bwselect(BW1,c,r,n)

  BW2 = bwselect(BW1,n)

  [BW2,idx] = bwselect(...)

  举例

  BW1 = imread('text.tif');

  c = [16 90 144];

  r = [85 197 247];

  BW2 = bwselect(BW1,c,r,4);

  imshow(BW1)

  figure, imshow(BW2)

  相关命令:

  bwfill, bwlabel, impixel, roipoly, roifill

  12.cmpermute

  MATLAB高级应用——图形及影像处理 326

  功能:

  调整颜色映像表中的颜色.

  语法:

  [Y,newmap] = cmpermute(X,map)

  [Y,newmap] = cmpermute(X,map,index)

  举例

  To order a colormap by luminance, use:

  ntsc = rgb2ntsc(map);

  [dum,index] = sort(ntsc(:,1));

  [Y,newmap] = cmpermute(X,map,index);

  相关命令:

  randperm

  13.cmunique

  功能:

  查找颜色映像表中特定的颜色及相应的图像.

  语法:

  [Y,newmap] = cmunique(X,map)

  [Y,newmap] = cmunique(RGB)

  [Y,newmap] = cmunique(I)

  相关命令:

  gray2ind, rgb2ind

  14.col2im

  功能:

  将矩阵的列重新组织到块中.

  语法:

  A = col2im(B,[m n],[mm nn],block_type)

  A = col2im(B,[m n],[mm nn])

  相关命令:

  blkproc, colfilt, im2col, nlfilter

  15.colfilt

  功能:

  利用列相关函数进行边沿操作.

  语法:

  B = colfilt(A,[m n],block_type,fun)

  B = colfilt(A,[m n],block_type,fun,P1,P2,...)

  B = colfilt(A,[m n],[mblock nblock],block_type,fun,...)

  B = colfilt(A,'indexed',...)

  附录 MATLAB图像处理命令 327

  相关命令:

  blkproc, col2im, im2col, nlfilter

  16.colorbar

  功能:

  显示颜色条.

  语法:

  colorbar('vert')

  colorbar('horiz')

  colorbar(h)

  colorbar

  h = colorbar(...)

  举例

  I = imread('blood1.tif');

  h = fspecial('log');

  I2 = filter2(h,I);

  imshow(I2,[]), colormap(jet(64)), colorbar

  17.conv2

  功能:

  进行二维卷积操作.

  语法:

  C = conv2(A,B)

  C = conv2(hcol,hrow,A)

  C = conv2(...,shape)

  举例

  A = magic(5)

  A =

  17 24 1 8 15

  23 5 7 14 16

  4 6 13 20 22

  MATLAB高级应用——图形及影像处理 328

  10 12 19 21 3

  11 18 25 2 9

  B = [1 2 1;0 2 0;3 1 3]

  B =

  1 2 1

  0 2 0

  3 1 3

  C = conv2(A,B)

  C =

  17 58 66 34 32 38 15

  23 85 88 35 67 76 16

  55 149 117 163 159 135 67

  79 78 160 161 187 129 51

  23 82 153 199 205 108 75

  30 68 135 168 91 84 9

  33 65 126 85 104 15 27

  相关命令:

  filter2

  18.convmtx2

  功能:

  计算二维卷积矩阵.

  语法:

  T = convmtx2(H,m,n)

  T = convmtx2(H,[m n])

  相关命令:

  conv2

  19.convn

  功能: 计算n维卷积.

  语法:

  C = convn(A,B)

  C = convn(A,B,shape)

  相关命令:

  conv2

  20.corr2

  功能:

  计算两个矩阵的二维相关系数.

  附录 MATLAB图像处理命令 329

  语法:

  r = corr2(A,B)

  相关命令:

  std2

  21.dct2

  功能:

  进行二维离散余弦变换.

  语法:

  B = dct2(A)

  B = dct2(A,m,n)

  B = dct2(A,[m n])

  举例

  RGB = imread('autumn.tif');

  I = rgb2gray(RGB);

  J = dct2(I);

  imshow(log(abs(J)),[]), colormap(jet(64)), colorbar

  J(abs(J) < 10) = 0;

  K = idct2(J)/255;

  imshow(K)

  相关命令:

  fft2, idct2, ifft2

1. 离散傅立叶变换的 Matlab 实现      Matlab 函数 fft、fft2 和 fftn 分别可以实现一维、二维和 N 维 DFT 算法;而函数 ifft、ifft2 和 ifftn 则用来计算反 DFT 。这些函数的调用格式如下:         A=fft(X,N,DIM)      其中,X 表示输入图像;N 表示采样间隔点,如果 X 小于该数值,那么 Matlab 将会对 X 进行零填充,否则将进行截取,使之长度为 N ;DIM 表示要进行离散傅立叶变换。         A=fft2(X,MROWS,NCOLS)  其中,MROWS 和 NCOLS 指定对 X 进行零填充后的 X 大小。         A=fftn(X,SIZE)其中,SIZE 是一个向量,它们每一个元素都将指定 X 相应维进行零填充后的长度。       函数 ifft、ifft2 和 ifftn的调用格式于对应的离散傅立叶变换函数一致。 例子:图像的二维傅立叶频谱 % 读入原始图像I=imread('lena.bmp');imshow(I)% 求离散傅立叶频谱J=fftshift(fft2(I));figure;imshow(log(abs(J)),[8,10])  2. 离散余弦变换的 Matlab 实现 2.1.  dct2 函数功能:二维 DCT 变换格式:B=dct2(A)         B=dct2(A,m,n)         B=dct2(A,[m,n]) 说明:B=dct2(A) 计算 A 的 DCT 变换 B ,A 与 B 的大小相同;B=dct2(A,m,n) 和 B=dct2(A,[m,n]) 通过对 A 补 0 或剪裁,使 B 的大小为 m×n。 2.2.  dict2 函数功能:DCT 反变换格式:B=idct2(A)          B=idct2(A,m,n)         B=idct2(A,[m,n]) 说明:B=idct2(A) 计算 A 的 DCT 反变换 B ,A 与 B 的大小相同;B=idct2(A,m,n) 和 B=idct2(A,[m,n]) 通过对 A 补 0 或剪裁,使 B 的大小为 m×n。 2.3.  dctmtx函数功能:计算 DCT 变换矩阵格式:D=dctmtx(n)说明:D=dctmtx(n) 返回一个 n×n 的 DCT 变换矩阵,输出矩阵 D 为 double 类型。  3.  图像小波变换的 Matlab 实现 3.1  一维小波变换的 Matlab 实现(1) dwt 函数功能:一维离散小波变换格式:[cA,cD]=dwt(X,'wname')        [cA,cD]=dwt(X,Lo_D,Hi_D)说明:[cA,cD]=dwt(X,'wname') 使用指定的小波基函数 'wname' 对信号 X 进行分解,cA、cD 分别为近似分量和细节分量;[cA,cD]=dwt(X,Lo_D,Hi_D) 使用指定的滤波器组 Lo_D、Hi_D 对信号进行分解。(2) idwt 函数功能:一维离散小波反变换格式:X=idwt(cA,cD,'wname')        X=idwt(cA,cD,Lo_R,Hi_R)        X=idwt(cA,cD,'wname',L)        X=idwt(cA,cD,Lo_R,Hi_R,L)说明:X=idwt(cA,cD,'wname') 由近似分量 cA 和细节分量 cD 经小波反变换重构原始信号 X 。        'wname' 为所选的小波函数        X=idwt(cA,cD,Lo_R,Hi_R) 用指定的重构滤波器 Lo_R 和 Hi_R 经小波反变换重构原始信号 X 。        X=idwt(cA,cD,'wname',L) 和 X=idwt(cA,cD,Lo_R,Hi_R,L) 指定返回信号 X 中心附近的 L 个点。 3.2  二维小波变换的 Matlab 实现           二维小波变换的函数-------------------------------------------------     函数名                函数功能---------------------------------------------------     dwt2            二维离散小波变换   wavedec2       二维信号的多层小波分解     idwt2           二维离散小波反变换   waverec2        二维信号的多层小波重构   wrcoef2          由多层小波分解重构某一层的分解信号   upcoef2          由多层小波分解重构近似分量或细节分量   detcoef2         提取二维信号小波分解的细节分量   appcoef2        提取二维信号小波分解的近似分量   upwlev2         二维小波分解的单层重构   dwtpet2         二维周期小波变换   idwtper2        二维周期小波反变换------------------------------------------------------------- (1) wcodemat 函数功能:对数据矩阵进行伪彩色编码格式:Y=wcodemat(X,NB,OPT,ABSOL)        Y=wcodemat(X,NB,OPT)        Y=wcodemat(X,NB)        Y=wcodemat(X)说明:Y=wcodemat(X,NB,OPT,ABSOL) 返回数据矩阵 X 的编码矩阵 Y ;NB 伪编码的最大值,即编码范围为 0~NB,缺省值 NB=16;       OPT 指定了编码的方式(缺省值为 'mat'),即:                 OPT='row' ,按行编码                 OPT='col' ,按列编码                 OPT='mat' ,按整个矩阵编码       ABSOL 是函数的控制参数(缺省值为 '1'),即:                 ABSOL=0 时,返回编码矩阵                 ABSOL=1 时,返回数据矩阵的绝对值 ABS(X) (2) dwt2 函数功能:二维离散小波变换格式:[cA,cH,cV,cD]=dwt2(X,'wname')        [cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)说明:[cA,cH,cV,cD]=dwt2(X,'wname')使用指定的小波基函数 'wname' 对二维信号 X 进行二维离散小波变幻;cA,cH,cV,cD 分别为近似分量、水平细节分量、垂直细节分量和对角细节分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器 Lo_D 和 Hi_D 分解信号 X 。 (3) wavedec2 函数功能:二维信号的多层小波分解格式:[C,S]=wavedec2(X,N,'wname')        [C,S]=wavedec2(X,N,Lo_D,Hi_D)说明:[C,S]=wavedec2(X,N,'wname') 使用小波基函数 'wname' 对二维信号 X 进行 N 层分解;[C,S]=wavedec2(X,N,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器 Lo_D 和 Hi_D 分解信号 X 。 (4) idwt2 函数功能:二维离散小波反变换格式:X=idwt2(cA,cH,cV,cD,'wname')        X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)        X=idwt2(cA,cH,cV,cD,'wname',S)        X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)说明:X=idwt2(cA,cH,cV,cD,'wname') 由信号小波分解的近似信号 cA 和细节信号 cH、cH、cV、cD 经小波反变换重构原信号 X ;X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R) 使用指定的重构低通和高通滤波器 Lo_R 和 Hi_R 重构原信号 X ;X=idwt2(cA,cH,cV,cD,'wname',S) 和 X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S) 返回中心附近的 S 个数据点。 (5) waverec2 函数说明:二维信号的多层小波重构格式:X=waverec2(C,S,'wname')        X=waverec2(C,S,Lo_R,Hi_R)说明:X=waverec2(C,S,'wname') 由多层二维小波分解的结果 C、S 重构原始信号 X ,'wname' 为使用的小波基函数;X=waverec2(C,S,Lo_R,Hi_R) 使用重构低通和高通滤波器 Lo_R 和 Hi_R 重构原信号。

百度空间 | 百度首页 | 登录 MAXLCL做错了就要受到惩罚! 主页博客相册|个人档案 |好友 查看文章

matlab函数大全2009-03-14 10:01A a

abs 绝对值、模、字符的ASCII码值

acos 反余弦

acosh 反双曲余弦

acot 反余切

acoth 反双曲余切

acsc 反余割

acsch 反双曲余割

align 启动图形对象几何位置排列工具

all 所有元素非零为真

angle 相角

ans 表达式计算结果的缺省变量名

any 所有元素非全零为真

area 面域图

argnames 函数M文件宗量名

asec 反正割

asech 反双曲正割

asin 反正弦

asinh 反双曲正弦

assignin 向变量赋值

atan 反正切

atan2 四象限反正切

atanh 反双曲正切

autumn 红黄调秋色图阵

axes 创建轴对象的低层指令

axis 控制轴刻度和风格的高层指令

B b

bar 二维直方图

bar3 三维直方图

bar3h 三维水平直方图

barh 二维水平直方图

base2dec X进制转换为十进制

bin2dec 二进制转换为十进制

blanks 创建空格串

bone 蓝色调黑白色图阵

box 框状坐标轴

break while 或for 环中断指令

brighten 亮度控制

C c

capture (3版以前)捕获当前图形

cart2pol 直角坐标变为极或柱坐标

cart2sph 直角坐标变为球坐标

cat 串接成高维数组

caxis 色标尺刻度

cd 指定当前目录

cdedit 启动用户菜单、控件回调函数设计工具

cdf2rdf 复数特征值对角阵转为实数块对角阵

ceil 向正无穷取整

cell 创建元胞数组

cell2struct 元胞数组转换为构架数组

celldisp 显示元胞数组内容

cellplot 元胞数组内部结构图示

char 把数值、符号、内联类转换为字符对象

chi2cdf 分布累计概率函数

chi2inv 分布逆�