最新Matlab图像处理函数汇总.docx
精品资料Matlab图像处理函数汇总.1、图像的变换 fft2:fft2函数用于数字图像的二维傅立叶变换,如:i=imread('104_8.tif');j=fft2(i);ifft2::ifft2函数用于数字图像的二维傅立叶反变换,如:i=imread('104_8.tif');j=fft2(i);k=ifft2(j);2、模拟噪声生成函数和预定义滤波器 imnoise:用于对图像生成模拟噪声,如:i=imread('104_8.tif');j=imnoise(i,'gaussian',0,0.02);%模拟高斯噪声 fspecial:用于产生预定义滤波器,如:h=fspecial('sobel');%sobel水平边缘增强滤波器h=fspecial('gaussian');%高斯低通滤波器h=fspecial('laplacian');%拉普拉斯滤波器h=fspecial('log');%高斯拉普拉斯(LoG)滤波器h=fspecial('average');%均值滤波器2、图像的增强直方图:imhist函数用于数字图像的直方图显示,如:i=imread('104_8.tif');imhist(i);直方图均化:histeq函数用于数字图像的直方图均化,如:i=imread('104_8.tif');j=histeq(i);对比度调整:imadjust函数用于数字图像的对比度调整,如:i=imread('104_8.tif');j=imadjust(i,0.3,0.7,);对数变换:log函数用于数字图像的对数变换,如:i=imread('104_8.tif');j=double(i);k=log(j);基于卷积的图像滤波函数:filter2函数用于图像滤波,如:i=imread('104_8.tif');h=1,2,1;0,0,0;-1,-2,-1;j=filter2(h,i);线性滤波:利用二维卷积conv2滤波, 如:i=imread('104_8.tif');h=1,1,1;1,1,1;1,1,1;h=h/9;j=conv2(i,h);中值滤波:medfilt2函数用于图像的中值滤波,如:i=imread('104_8.tif');j=medfilt2(i);锐化(1)利用Sobel算子锐化图像, 如:i=imread('104_8.tif');h=1,2,1;0,0,0;-1,-2,-1;%Sobel算子j=filter2(h,i);(2)利用拉氏算子锐化图像, 如:i=imread('104_8.tif');j=double(i);h=0,1,0;1,-4,0;0,1,0;%拉氏算子k=conv2(j,h,'same');m=j-k;3、图像边缘检测sobel算子 如:i=imread('104_8.tif');j = edge(i,'sobel',thresh)prewitt算子 如:i=imread('104_8.tif');j = edge(i,'prewitt',thresh)roberts算子 如:i=imread('104_8.tif');j = edge(i,'roberts',thresh)log算子 如:i=imread('104_8.tif');j = edge(i,'log',thresh)canny算子 如:i=imread('104_8.tif');j = edge(i,'canny',thresh)Zero-Cross算子 如:i=imread('104_8.tif');j = edge(i,'zerocross',thresh)4、形态学图像处理膨胀:是在二值化图像中“加长”或“变粗”的操作,函数imdilate执行膨胀运算,如:a=imread('104_7.tif'); %输入二值图像b=0 1 0;1 1 1;0 1 0;c=imdilate(a,b);腐蚀:函数imerode执行腐蚀,如:a=imread('104_7.tif'); %输入二值图像b=strel('disk',1);c=imerode(a,b);开运算:先腐蚀后膨胀称为开运算,用imopen来实现,如:a=imread('104_8.tif');b=strel('square',2);c=imopen(a,b);闭运算:先膨胀后腐蚀称为闭运算,用imclose来实现,如:a=imread('104_8.tif');b=strel('square',2);c=imclose(a,b);Matlab 图像处理相关函数命令大全一、通用函数:colorbar 显示彩色条语法:colorbar colorbar('vert') colorbar('horiz') colorbar(h) h=colorbar(.) colorbar(.,'peer',axes_handle)getimage 从坐标轴取得图像数据语法:A=getimage(h) x,y,A=getimage(h) .,A,flag=getimage(h) .=getimageimshow 显示图像语法:imshow(I,n) imshow(I,low high) imshow(BW) imshow(X,map) imshow(RGB) imshow(.,display_option) imshow(x,y,A,.) imshow filename h=imshow(.)montage 在矩形框中同时显示多幅图像语法:montage(I) montage(BW) montage(X,map) montage(RGB) h=montage(.)immovie 创建多帧索引图的电影动画语法:mov=immovie(X,map) mov=immovie(RGB)subimage 在一副图中显示多个图像语法:subimage(X,map) subimage(I) subimage(BW) subimage(RGB) subimage(x,y,.) subimage(.)truesize 调整图像显示尺寸语法:truesize(fig,mrows mcols) truesize(fig)warp 将图像显示到纹理映射表面语法:warp(X,map) warp(I ,n) warp(z,.) warp(x,y,z,.) h=warp(.)zoom 缩放图像语法:zoom on zoom off zoom out zoom reset zoom zoom xon zoom yon zoom(factor) zoom(fig,option)二、图像文件I/O函数命令imfinfo 返回图形图像文件信息语法:info=imfinfo(filename,fmt) info=imfinfo(filename)imread 从图像文件中读取(载入)图像语法:A=imread(filename,fmt) X,map=imread(filename,fmt) .=imread(filename) .=imread(URL,.) .=imread(.,idx) (CUR,ICO,and TIFF only) .=imread(.,'frames',idx) (GIF only) .=imread(.,ref) (HDF only) .=imread(.,'BackgroundColor',BG) (PNG only) A,map,alpha =imread(.) (ICO,CUR,PNG only)imwrite 把图像写入(保存)图像文件中语法:imwrite(A,filename,fmt) imwrite(X,map,filename,fmt) imwrite(.,filename) imwite(.,Param1,Val1,Param2,Val2.)imcrop 剪切图像语法:I2=imcrop(I) X2=imcrop(X,map) RGB2=imcrop(RGB) I2=imcrop(I,rect) X2=imcrop(RGB,rect) .=imcrop(x,y,.) A,rect=imcrop(.) x,y,A,rect=imcrop(.)imresize 改变图像大小语法:B=imresize(A,m,method)imrotate 旋转图像语法:B=imrotate(A,angle,method) B=imrotate(A,angle,method,'crop')三、像素和统计处理函数corr2 计算两个矩形的二维相关系数语法:r=corr2(A,B)imcontour 创建图像数据的轮廓图语法:imcontour(I,n) imcontour(I,v) imcontour(x,y,.) imcontour(.,LineSpec) C,h =imcontour(.)imfeature 计算图像区域的特征尺寸语法:stats=imfeature(L,measurements) stats=imfeature(L,measurements,n)imbist 显示图像数据的柱状图impixel 确定像素颜色值语法:P=impixel(I) P=impixel(X,map) P=impixel(RGB) P=impixel(I,c,r) P=impixel(X,map,c,r) P=impixel(RGB,c,r) c,r,P=impixel(.) P=impixel(x,y,I,xi,yi) P=impixel(x,y,RGB,xi,yi) P=impixel(x,y,X,map,xi,yi) xi,yi,P=impixel(x,y,.)improfile 沿线段计算剖面图的像素值语法:c=improfile c=improfile(n) c=improfile(I,xi,yi) c=improfile(I,xi,yi,n) cx,cy,c=improfile(.) cx,cy,c,xi,yi=improfile(.) .=improfile(x,y,I,xi,yi) .=improfile(x,y,I,xi,yi,n) .=improfile(.,method)mean2 计算矩阵元素的平均值语法:B=mean2(A)pixval 显示图像像素信息语法:pixval onstd2 计算矩阵元素的标准偏移语法:b=std2(A)四、图像分析函数:edge 图像边缘检测语法:BW=edge(I,'sobel') BW=edge(I,'sobel',thresh) BW=edge(I,'sobel',thresh,direction) BW,thresh=edge(I,'sobel',.) BW=edge(I,'prewitt') BW=edge(I,'prewitt',thresh) BW=edge(I,'prewitt',thresh,direction) BW,thresh=edge(I,'prewitt',.) BW=edge(I,'roberts') BW=edge(I,'roberts',thresh) BW,thresh=edge(I,'roberts',.) BW=edge(I,'log') BW=edge(I,'log',thresh) BW=edge(I,'log',thresh,sigma) BW,threshold=edge(I,'log',.) BW=edge(I,'zerocross',thresh,h) BW,thresh=edge(I,'zerocross',.) BW=edge(I,'canny') BW=edge(I,'canny',thresh) BW=edge(I,'canny',thresh,sigma) BW,threshold=edge(I,'canny',.)qtgetblk 获取四叉树分解的块值语法:vals,r,c=qtgetblk(I,S,dim) vals,idx=qtgetblk(I,S,dim)qtsetblk 设置四叉树分解中的块值语法:J=qtsetblk(I,S,dim,vals)五、图像增强函数histeq 用柱状图均等化增强对比语法:J=histeq(I,hgram) J=histeq(I,n) J,T=histeq(I,.) newmap=histeq(X,map,hgram) newmap=histeq(X,map)imadjust 调整图像灰度值或颜色映像表语法:J=imadjust(I,low_in ,high_in),low_out ,high_out,gamma) newmap=imadjust(map,low_in ,high_in),low_out ,high_out,gamma) RGB2=imadjust(RGB1,.)imnoise 增强图像的渲染效果语法:J=imnoise(I,type) J=imnoise(I,type,parameters)medfilt2 进行二维中值过滤语法:B=medfilt2(A,m n) B=medfilt2(A) B=medfilt2(A,'indexed',.)ordfilt2 进行二维统计顺序过滤语法:B=ordfilt2(A,order,domain) B=ordfilt2(A,order,domain,S) B=ordfilt2(.,padopt)wiener2 进行二维适应性去噪过滤处理语法:J=wiener2(I,m n,noise) J,noise=wiener2(I,m n)六、线性滤波函数conv2 进行二维卷积操作语法:C=conv2(A,B) C=conv2(hcol,hrow,A) C=conv2(.,'shape')convmtx2 计算二维卷积矩阵语法:T=convmtx2(H,m,n) T=convmtx2(H,m n)convn 计算n维卷积语法:C=convn(A,B) C=convn(A,B,'shape')filter2 进行二维线性过滤操作语法:Y=filter2(h,X) Y=filter2(h,X,shape)fspecial 创建预定义过滤器语法:h=fspecial(type) h=fspecial(type,parameters)七、线性二维滤波设计函数freqspace 确定二维频率响应的频率空间语法:f1,f2=freqspace(n) f1,f2=freqspace(m n) x1 ,y1=freqspace(.,'meshgrid') f=freqspace(N) f=freqspace(N,'whole')freqz2 计算二维频率响应语法:H,f1,f2=freqz2(h,n1,n2) H,fi,f2=freqz2(h,n2,n1) H,fi,f2=freqz2(h,f1,f2) H,fi,f2=freqz2(h) .=freqz2(h,.,dx dy) .=freqz2(h,.,dx) freqz2(.)fsamp2 用频率采样法设计二维FIR过滤器语法:h=fsamp2(Hd) h=fsamp2(f1,f2,Hd,m n)ftrans2 通过频率转换设计二维FIR过滤器语法:h=ftrans2(b,t) h=ftrans2(b)fwind1 用一维窗口方法设计二维FIR过滤器语法:h=fwind1(Hd,win) h=fwind1(Hd,win1,win2) h=fwind1(f1,f2,Hd,.)fwind2 用二维窗口方法设计二维FIR过滤器语法:h=fwind2(Hd,win) h=fwind2(f1,f2,Hd,win)八、图像变换函数dct2 进行二维离散余弦变换(反余弦变换用idct2)语法:B=dct2(A) B=dct2(A,m.n) B=dct2(A,m n)dctmtx 计算离散余弦傅立叶变换语法:D=dctmtx(n)fft2 进行二维快速傅立叶变换(反变换用ifft2)语法:Y=fft2(X) Y=fft2(X,m,n)fftn 进行n维快速傅立叶变换(反变换用ifftn)语法:Y=ffn(X) Y=fftn(X,siz)fftshift 快速傅立叶变换的DC组件移到光谱中心语法:Y=fftshift(X) Y=fftshift(X,dim)iradon 进行反radon变换语法:I=iradon(P,theta) I=iradon(P,theta,interp,filter,d,n) I,h=iradon(.)phantom 产生一个头部幻影图像语法:P=phantom(def,n) P=phantom(E,n) P,E=phantom(.)radon 计算radon变换语法:R=radon(I,theta) R,xp=radon(.)九、边沿和块处理函数bestblk 确定进行块操作的块大小语法:siz=bestblk(m n,k) mb,nb=bestblk(m n,k)blkproc 实现图像的显示块操作语法:B=blkproc(A,m n),fun) B=blkproc(A,m n,fun,P1,P2,.) B=blkproc(A,m n,mborder nborder,fun,.)col2im 将矩阵的列重新组织到块中语法:A=col2im(B,m n,mm nn,block_type) A=col2im(B,m n,mm nn)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,.) B=colfilt(A,'indexed',.)im2col 重调图像块为列语法:B=im2col(A,m n,block_type) B=im2col(A,m n) B=im2col(A,'indexed',.)nlfilter 进行边沿操作语法:B=nlfilter(A,m n,fun) B=nlfilter(A,m n,fun,P1,P2,.) B=nlfilter(A,'indexed',.)十、二进制图像操作函数applylut 在二进制图像中利用lookup表进行行边沿操作语法:A=applylut(BW,LUT)bwarea 计算二进制图像对象的面积语法:total=bwarea(BW)bweuler 计算二进制图像的欧拉数语法:eul=bweuler(BW)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,idx=bwfill(BW1,'holes',n)bwlabel 标注二进制图像中已连接的部分语法:L=bwlabel(BW,n) L,num=bwlabel(BW,n)bwmorph 提取二进制图像的轮廓语法:BW2=bwmorph(BW1,operation) BW2=bwmorph(BW1,operation,n)bwperim 计算二进制图像中对象的周长语法:BW2=bwperim(BW1) BW2=bwperim(BW1,CONN)bwselect 在二进制图像中选择对象语法:BW2=bwselect(BW1,c,r,n) BW2=bwselect(BW1,n) BW2,idx=bwselect(.) BW2=bwselect(x,y,BW1,xi,yi,n) x,y,BW2,idx,xi,yi=bwselect(.)dilate 放大二进制图像语法:BW2=dilate(BW1,SE) BW2=dilate(BW1,SE,alg) BW2=dilate(BW1,SE,.,n)erode 弱化二进制图像的边界语法:BW2=erode(BW1,SE) BW2=erode(BW1,SE,alg) BW2=erode(BW1,SE,.,n)makelut 创建一个用于applylut函数的lookup表语法:lut=makelut(fun,n) lut=makelut(fun,n,P1,P2,.)十一、区域处理函数roicolor 选择感兴趣的颜色区语法:BW=roicolor(A,low,high) BW=rocicolor(A,v)roifill 在图像的任意区域中进行平滑插补语法:J=roifill(I,c,r) J=roifill(I) J=roifill(I,BW) J,BW=roifill(.) J=roifill(x,y,I,xi,yi) x,y,J,BW,xi,yi=roifill(.)roifilt2 过滤敏感区域语法:J=roifilt2(h,I,BW) J=roifilt2(I,BW,fun) J=roifilt2(I,BW,fun,P1,P2,.)roipoly 选择一个敏感的多边形区域语法:BW=roipoly(I,c,r) BW=roipoly(I) BW=roipoly(x,y,I,xi,yi) BW,xi,yi=roipoly(.) x,y,BW,xi,yi=roipoly(.)十二、颜色映像处理函数brighten 增加或降低颜色映像表的亮度语法:brighten(beta) brighten(h,beta) newmap=brighten(beta) newmap=brighten(cmap,beta)cmpermute 调整颜色映像表中的颜色语法:Y,newmap=cmpermute(X,map) Y,newmap=cmpermute(X,map,index)cmunigue 查找颜色映像表中特定的颜色及相应的图像语法:Y,newmap=cmunigue(X,map) Y,newmap=cmunigue(RGB) Y,newmap=cmunique(I)imapprox 对索引图像进行近似处理语法:Y,newmap=imapprox(X,map,n) Y,newmap=imapprox(X,map,tol) Y=imapprox(X,map,newmap) .=imapprox(.,dither_option)rgbplot 划分颜色映像表语法:rgbplot(cmap)十三、颜色空间转换函数hsv2rgb 转换HSV值为RGB颜色空间:M=hsv2rgb(H)ntsc2rgb 转换NTSC值为RGB颜色空间:rgbmap=ntsc2rgb(yiqmap) RGB=ntsc2rgb(YIQ)rgb2hsv 转换RGB值为HSV颜色空间:cmap=rgb2hsv(M)rgb2ntsc 转换RGB值为NTSC颜色空间:yiqmap=rgb2ntsc(rgbmap) YIQ=rgb2ntsc(RGB)rgb2ycbcr 转换RGB值为YCbCr颜色空间:ycbcrmap=rgb2ycbcr(rgbmap) YCBCR=rgb2ycbcr(RGB)ycbcr2rgb 转化YCbCr值为RGB颜色空间:rgbmap=ycbcr2rgb(ycbcrmap) RGB=ycbcr2rgb(YCBCR)十四、图像类型和类型转换函数dither 通过抖动增加外观颜色分辨率转换图像语法:X=dither(RGB,map) BW=dither(I)gray2ind 转换灰度图像为索引图像语法:X,map=gray2ind(I,n) X,map=gray2ind(BW,n)grayslice 从灰度图像为索引图像语法:X=grayslice(I,n) X=grayslice(I,v)im2bw 转换图像为二进制图像语法:BW=im2bw(I,level) BW=im2bw(X,map,level) BW=im2bw(RGB,level)im2double 转换图像矩阵为双精度型语法:I2=im2double(I1) RGB2=im2double(RGB1) I=im2double(BW) X2=im2double(X1,'indexed')double 转换数据为双精度型语法:double(X)unit8 、unit16转换数据为8位、16位无符号整型: i=unit8(x) i=unit16(x)im2unit8 转换图像阵列为8位无符号整型语法:I2=im2unit8(I1) RGB2=im2unit8(RGB1) I=im2unit8(BW) X2=im2unit8(X1,'indexed')im2unit16 转换图像阵列为16位无符号整型语法:I2=im2unit16(I1) RGB2=im2unit16(RGB1) I=im2unit16(BW) X2=im2unit16(X1,'indexed')ind2gray 把检索图像转化为灰度图像语法:I=ind2gray(X,map)ind2rgb 转化索引图像为RGB真彩图像语法:RGB=ind2rgb(X,map)isbw 判断是否为二进制图像语法:flag=isbw(A)isgray 判断是否为灰度图像语法:flag=isgray(A)isind 判断是否为索引图像语法:flag=isind(A)isrgb 判断是否为RGB真彩色图像语法:flag=isrgb(A)mat2gray 转换矩阵为灰度图像语法:I=mat2gray(A,amin amax) I=mat2gray(A)rgb2gray 转换RGB图像或颜色映像表为灰度图像语法:I=rgb2gray(RGB) newmap=rgb2gray(map)rgb2ind 转换RGB图像为索引图像语法:X,map=rgb2ind(RGB,tol) X,map=rgb2ind(RGB,n) X=rgb2ind(RGB,map) .=rgb2ind(.,dither_option)十五、新增图像处理工具箱函数adapthisteq 限制对比度直方图均衡化: J=adapthisteq(I) J=adapthisteq(I,param1,val1,param2,val2.)applycform 用于颜色空间变换 out=applyform(I,C)bwboundaries 描绘二进制图像边界语法: B=bwboundaries(BW) B=bwboundaries(BW,CONN) B=bwboundaries(BW,CONN,options) BW,CONN,options BL=bwboundaries(.) BLNA=bwboundaries()bwtraceboundary 描述二进制图像中的物体B=bwtraceboundary(BW,P,fstep) B=bwtraceboundary(BW,P,fstep,CONN) B=bwtraceboundary(.N,dir)decorrstrech 对多通道图像进行去相关处理语法:S=decorrstretch(I) S=decorrstretch(I,TOL)dicomdict 获取或读取DICOM文件语法:dicomdict('set',dictionary) dictionary=dicomdict('get')getline 用鼠标选择ployline语法:x,y=getline(fig) x,y=getline(ax) x,y=getline x,y=getline(.,'closed')getpts 用鼠标选择像素点语法:x,y=getpts(fig) x,y=getpts(ax) x,y=getptsgetrect 用鼠标选择矩阵语法:rect=getrect(fig) rect=getrect(ax) rect=getrect(fig)iccread 读取ICC剖面语法:P=iccread(filename)im2java2d 将图像转换为Java缓冲图像语法:jimage=im2java2d(I) jimage=im2java2d(X,MAP)imview 在图像与蓝旗中显示图像语法:imview(I) imview(RGB) imview(X,map) imview(I,range) imview(filename) imview(.'InitialMagnification',initial_mag) h=imview(.) imview close allippl 检查IPPL的存在语法:TF=ippl TF B=ippliptdemos 显示图像处理工具箱中的索引图像lab2double、lab2unit16、lab2unit8 将L*a*b数据分别转换为双精度、16位数据、8位数据makecform 创造一个色彩转换结构poly2mask 把多边形区域转换成mask区域语法:BW=poly2mask(x,y,m,n)unitlut 查找表中A像素值语法:B=unitlut(A,LUT)xyz2double、xyz2unit16 将颜色数据从XYZ转换到双精度、16进制。语法:xyzd=xyz2double(XYZ) xyz16=xyz2unit16(xyz)