matlab图像处理函数总汇.docx
《matlab图像处理函数总汇.docx》由会员分享,可在线阅读,更多相关《matlab图像处理函数总汇.docx(27页珍藏版)》请在冰点文库上搜索。
matlab图像处理函数总汇
图像处理函数详解——bwareaopen
功能:
用于从对象中移除小对象。
用法:
BW2=bwareaopen(BW,P)
BW2=bwareaopen(BW,P,CONN)
BW2=bwareaopen(BW,P,CONN)从二值图像中移除所有小于P的连通对象。
CONN对应邻域方法,默认为8。
例子:
originalBW=imread('text.png');
imview(originalBW)
bwAreaOpenBW=bwareaopen(originalBW,50);
imview(bwAreaOpenBW)
图像处理函数详解——bwlabel
功能:
对连通对象进行标注,bwlabel主要对二维二值图像中各个分离部分进行标注(多维用bwlabeln,用法类似)。
用法:
L=bwlabel(BW,n)
[L,num]=bwlabel(BW,n)
L=bwlabel(BW,n)表示返回和BW相同大小的数组L。
L中包含了连通对象的标注。
参数n为4或8,分别对应4邻域和8邻域,默认值为8。
[L,num]=bwlabel(BW,n)返回连通数num。
图像处理函数详解——bwperim
功能:
查找二值图像的边缘。
用法:
BW2=bwperim(BW1)
BW2=bwperim(BW1,conn)
BW2=bwperim(BW1,conn)表示从输入图像BW1中返回只包括对象边缘像素点的图像。
conn的定义值如下:
维数
参数值
说明
对二维
4
4邻域
8
8邻域
对三维
6
6邻域
18
18邻域
26
26邻域
例子:
BW1=imread('circbw.tif');
BW2=bwperim(BW1,8);
imshow(BW1)
figure,imshow(BW2)
图像处理函数详解——colfilt
功能:
以列方法进行邻域处理,也可执行常规非线性滤波(自己理解的)。
用法:
B=colfilt(A,[mn],block_type,fun)
该函数生成了一幅图像A,在A中,每一列对应于其中心位于图像内某个位置的邻域所包围的像素。
然后将函数应用于该矩阵中。
[mn]表示大小为m行n列的邻域。
block_type表示了一个字符串,包括'distinct','sliding'两种,其中'sliding'是在输入图像中逐个像素地滑动该m乘n的区域。
fun表示引用了一个函数进行处理,函数返回值的大小必须和原图像大小相同。
举例:
I=imread('tire.tif');
imshow(I)
I2=uint8(colfilt(I,[55],'sliding',@mean));
figure,imshow(I2)
图像处理函数详解——dither
功能:
可以把真彩色图像装换成索引图像或者把灰度图像转换为二值图像。
用法:
X=dither(RGB,map)
BW=dither(I)
X=dither(RGB,map,Qm,Qe)
X=dither(RGB,map)表示把真彩色图像RGB按指定的色图map抖动成索引图像X,但map不能超过65536种颜色。
BW=dither(I)
表示把灰度图像I抖动成二值图像BW
X=dither(RGB,map,Qm,Qe)Qm表示沿每个颜色轴反转颜色图的量化的位数,Qe表示颜色空间计算误差的量化位数。
如果Qe<Qm,则不进行抖动操作。
默认值Qe=5,Qm=8
例子:
I=imread('cameraman.tif');
BW=dither(I);
imview(BW)
图像处理函数详解——conv2
功能:
是二维卷积运算函数(与convmtx2相似)。
如果a和b是两个离散变量n1和n2的函数,则关于a和b的二维卷积运算数学公式如下:
用法:
C=conv2(A,B)
C=conv2(hcol,hrow,A)
C=conv2(...,'shape')
C=conv2(A,B)计算数组A和B的卷积。
如果一个数组描述了一个二维FIR滤波器,则另一个数组被二维滤波。
当A的大小为[ma,na],B的大小为[mb,nb]时,C的大小为[ma+mb-1,mb+nb-1]。
‘shape’见下表
参数值
含义
‘full’
默认值,返回全部二维卷积值。
‘same’
返回与A大小相同卷积值的中间部分
‘valid’
当all(size(A)>=size(B)),C的大小为[ma+mb-1,mb+nb-1];否则,C返回[]。
在n维卷积运算中,C的大小为max(size(A)-size(B)+1,0)
例子:
s=[121;000;-1-2-1];
A=zeros(10);
A(3:
7,3:
7)=ones(5);
H=conv2(A,s);
mesh(H)
图像处理函数详解——histeq
功能:
直方图均衡化。
用法:
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,hgram)
newmap=histeq(X,map)
[newmap,T]=histeq(X,...)
这三个是针对索引图像调色板的直方图均衡化,用法和灰度图像的一样。
举例:
I=imread('tire.tif');
J=histeq(I);
imshow(I)
figure,imshow(J)
图像处理函数详解——im2bw
功能:
通过设定亮度将阈值灰度、真彩、索引图像转换为二值图像。
用法:
BW=im2bw(I,level)
BW=im2bw(X,map,level)
BW=im2bw(RGB,level)
分别将灰度图像、索引图像、真彩色图像转换为二值图像。
Level是归一化的阈值,值域为[0,1]。
Level可以由函数graythresh(I)来计算。
例子:
loadtrees
BW=im2bw(X,map,0.4);
imview(X,map),imview(BW)
图像处理函数详解——im2uint8
功能:
将图像转换为8位无符号整型。
也可将输出值限定在[0255]内。
用法:
I2=im2uint8(I)
RGB2=im2uint8(RGB)
I=im2uint8(BW)
X2=im2uint8(X,'indexed')
举例:
I=reshape(uint8(linspace(0,255,255)),[55])
I2=im2uint8(I)
图像处理函数详解——imadd
功能:
实现图像相加运算。
用法:
Z=imadd(X,Y)
例子:
I=imread('rice.png');
J=imread('cameraman.tif');
K=imadd(I,J,'uint16');
%转换数据类型,然后将图像相加
imshow(K,[])
图像处理函数详解——imadjust
功能:
调节灰度图像的亮度或彩色图像的颜色矩阵。
用法:
J=imadjust(I,[low_in;high_in],[low_out;high_out],gamma)
将图像I中的亮度值映射到J中的新值,即将low_in至hige_in之间的值映射到low_out至high_out之间的值。
low_in以下与high_in以上的值被剪切掉了,也就是说,low_in以下的值映射到low_out,high_in以上的值映射到high_out。
它们都可以使用空的矩阵[],默认值是[01]。
newmap=imadjust(map,[low_inhigh_in],[low_outhigh_out],gamma)
调整索引色图像的调色板map。
RGB2=imadjust(RGB1,[low_inhigh_in],[low_outhigh_out],gamma)
对RGB图像1的红、绿、蓝调色板分别进行调整。
随着颜色矩阵的调整,每一个调色板都有唯一的映射值。
参数gamma指定了曲线的形状,该曲线用来映射I的亮度值。
如果gamma小于1,映射被加权到更高的输出值。
如果gamma大于1,映射被加权到更低的输出值。
如果省略了函数的参量,则gamma默认为1(线性映射)。
举例:
调整灰度图像:
K=imadjust(I,[0.30.7],[]);
figure,imshow(K)
调整RGB图像:
RGB1=imread('football.jpg');
RGB2=imadjust(RGB1,[.2.30;.6.71],[]);
imshow(RGB1),figure,imshow(RGB2)
图像处理函数详解——imapprox
功能:
减少索引图像的色彩数,能够指定新色图的色彩数。
即对索引图像进行近似处理。
用法:
[Y,newmap]=imapprox(X,map,n)
[Y,newmap]=imapprox(X,map,tol)
Y=imapprox(X,map,newmap)
[...]=imapprox(...,dither_option)
[Y,newmap]=imapprox(X,map,n)表示把索引图像和色图map进行最小值量化逼近。
函数返回索引图像和新的色图newmap,色图至多有n种色彩。
[Y,newmap]=imapprox(X,map,tol)表示把索引图像和色图map进行均衡量化逼近。
新色图newmap至多有(floor(1/tol)+1)^3种色彩,tol的范围必须为[0,1.0]。
例子:
[X,map]=imread('trees.tif');
[Y,newmap]=imapprox(X,map,16);
imview(Y,newmap)
图像处理函数详解——imcomplement
功能:
对图像进行求反运算。
用法:
IM2=imcomplement(IM)
计算图像IM的负片。
图像IM可以是二值图像、灰度图像、或者RGB图像。
IM2和IM类型相同。
例子:
X=uint8([2551075;44225100]);
X2=imcomplement(X)
X2=
0 245 180
211 30 155
bw=imread('text.png');
bw2=imcomplement(bw);
subplot(1,2,1),imshow(bw)
subplot(1,2,2),imshow(bw2)
I=imread('glass.png');
J=imcomplement(I);
imshow(I),figure,imshow(J)
图像处理函数详解——imfinfo
功能:
获取图像文件的信息
用法:
info=imfinfo(filename,fmt)
info=imfinfo(filename)
参数fmt对应于图像处理工具箱中所有支持的图像文件格式(如'bmp','jpg'等等)
例子:
info=imfinfo('canoe.tif')
info=
Filename:
'canoe.tif'
FileModDate:
'25-Oct-199622:
10:
39'
FileSize:
69708
Format:
'tif'
FormatVersion:
[]
Width:
346
Height:
207
BitDepth:
8
ColorType:
'indexed'
FormatSignature:
[7373420]
ByteOrder:
'little-endian'
NewSubfileType:
0
BitsPerSample:
8
Compression:
'PackBits'
PhotometricInterpretation:
'RGBPalette'
StripOffsets:
[9x1 double]
SamplesPerPixel:
1
RowsPerStrip:
23
StripByteCounts:
[9x1 double]
XResolution:
72
YResolution:
72
ResolutionUnit:
'Inch'
Colormap:
[256x3 double]
PlanarConfiguration:
'Chunky'
TileWidth:
[]
TileLength:
[]
TileOffsets:
[]
TileByteCounts:
[]
Orientation:
1
FillOrder:
1
GrayResponseUnit:
0.0100
MaxSampleValue:
255
MinSampleValue:
0
Thresholding:
1
图像处理函数详解——imhist
功能:
显示图像的直方图。
输入数据类型可以是无符号8位、16位、有符号16位、单精浮点、字符型、逻辑型等数据。
用法:
imhist(I,n) 计算和显示图像I的直方图,n为指定的灰度级数目,默认为256。
如果I是二值图像,那么n仅有两个值。
imhist(X,map) 计算和显示索引图像x的直方图,map为调色板。
[counts,x]=imhist(...) 返回直方图数据向量counts或相应的色彩值向量x。
举例:
I=imread('rice.tif')
imshow(I)
figure,imhist(I)
图像处理函数详解——imnoise
功能:
模仿噪声信息,相当于图像的相加运算。
用法:
J=imnoise(I,type)
J=imnoise(I,type,parameters)
参数Type对应的噪声类型如下:
'gaussian'高斯白噪声
'localvar'0均值白噪声
'poisson'泊松噪声
'salt&pepper'盐椒噪声
'speckle'乘性噪声
例子:
I=imread('eight.tif');
J=imnoise(I,'salt&pepper',0.02);
%密度0.02的盐椒噪声
imshow(I)
figure,imshow(J)
图像处理函数详解——imresize
功能:
改变图像的大小。
用法:
B=imresize(A,m)
B=imresize(A,m,method)
B=imresize(A,[mrowsncols],method)
B=imresize(...,method,n)
B=imresize(...,method,h)
imrersize函数使用由参数method指定的插值运算来改变图像的大小。
method的几种可选值:
'nearest'(默认值)最近邻插值
'bilinear'双线性插值
'bicubic'双三次插值
B=imresize(A,m)表示把图像A放大m倍
B=imresize(...,method,h)中的h可以是任意一个FIR滤波器(h通常由函数ftrans2、fwind1、fwind2、或fsamp2等生成的二维FIR滤波器)。
例子:
I=imread('circuit.tif');
J=imresize(I,1.25);
%使用默认的最近邻插值法放大图像1.25倍
imshow(I)
figure,imshow(J)
图像处理函数详解——imdilate
功能:
对图像实现膨胀操作。
用法:
IM2=imdilate(IM,SE)
IM2=imdilate(IM,NHOOD)
IM2=imdilate(IM,SE,PACKOPT)
IM2=imdilate(...,PADOPT)
IM2=imdilate(IM,SE)膨胀灰度,二值,压缩二值图像IM,返回IM2。
参数SE为由strel函数返回的结构元素或者结构元素对象组。
IM2=imdilate(IM,NHOOD)膨胀图像IM,这里NHOOD是定义结构元素邻域0和1的矩阵。
IM2=imdilate(IM,SE,PACKOPT)定义IM是否是一个压缩的二值图像。
IM2=imdilate(...,PADOPT)指出输出图像的大小。
例子:
I=imread('cameraman.tif');
se=strel('ball',5,5);
I2=imdilate(I,se);
imshow(I),title('Original')
figure,imshow(I2),title('Dilated'
图像处理函数详解——imerode
功能:
对图像实现腐蚀操作,即膨胀操作的反操作。
用法:
IM2=imerode(IM,SE)
IM2=imerode(IM,NHOOD)
IM2=imerode(IM,SE,PACKOPT,M)
IM2=imerode(...,PADOPT)
IM2=imerode(IM,SE)腐蚀灰度,二值,压缩二值图像IM,返回IM2。
参数SE为由strel函数返回的结构元素或者结构元素对象组。
IM2=imerode(IM,NHOOD)腐蚀图像IM,这里NHOOD是定义结构元素邻域0和1的矩阵。
IM2=imerode(...,PADOPT)指出输出图像的大小(是否与输入图像大小一致)。
例子:
originalBW=imread('circles.png');
se=strel('disk',11);
erodedBW=imerode(originalBW,se);
imview(originalBW),imview(erodedBW)
图像处理函数详解——imopen
功能:
对图像实现开运算,开运算一般能平滑图像的轮廓,消弱狭窄的部分,去掉细的突出。
用法:
IM2=imopen(IM,SE)
IM2=imopen(IM,NHOOD)
IM2=imopen(IM,SE)用结构元素SE实现灰度图像或二值图像的IM的形态开运算。
SE可以是单个结构元素对象或者结构元素对象数组。
IM2=imopen(IM,NHOOD)用结构元素strel(NHOOD)执行开运算。
例子:
I=imread('snowflakes.png');
se=strel('disk',5);
I_opened=imopen(I,se);
imview(I_opened,[])
图像处理函数详解——imclose
功能:
对图像实现闭运算,闭运算也能平滑图像的轮廓,但与开运算相反,它一般融合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。
用法:
IM2=imclose(IM,SE)
IM2=imclose(IM,NHOOD)
用法和imopen相同,请在本论坛查找!
例子:
originalBW=imread('circles.png');
se=strel('disk',10);
closeBW=imclose(originalBW,se);
imview(closeBW)
图像处理函数详解——mat2gray
功能:
将矩阵转化为灰度图像。
用法:
I=mat2gray(A,[aminamax]) 把一个double类的任意数组转换成取值范围为[01]的亮度图像。
其中图像I的取值范围也在0(黑色)到1(白色)之间。
参数amin和amax表示将A中小于amin的值转换为0,将A中大于amax的值转换为1。
I=mat2gray(A) 将矩阵A中实际最小值和最大值分别赋给amin和amax。
举例:
I=imread('rice.png');
J=filter2(fspecial('sobel'),I);
K=mat2gray(J);
imshow(I),figure,imshow(K)
图像处理函数详解——montage
功能:
在同一时间显示多帧