Matlab图像处理工具箱函数详解汇总

上传人:痛*** 文档编号:84851263 上传时间:2022-05-04 格式:DOC 页数:61 大小:238.50KB
收藏 版权申诉 举报 下载
Matlab图像处理工具箱函数详解汇总_第1页
第1页 / 共61页
Matlab图像处理工具箱函数详解汇总_第2页
第2页 / 共61页
Matlab图像处理工具箱函数详解汇总_第3页
第3页 / 共61页
资源描述:

《Matlab图像处理工具箱函数详解汇总》由会员分享,可在线阅读,更多相关《Matlab图像处理工具箱函数详解汇总(61页珍藏版)》请在装配图网上搜索。

1、目录1. bwareaopen12. bwlabel23. bwperim24. colfilt35. conv236. dither47. histeq58. im2bw69. im2uint8610. imadd611. imadjust712. imapprox813. imcomplement814. imfinfo915. imhist101117. imresize1118. imdilate1219. imerode1320. imopen1321. imclose1422. mat2gray1423. montage1524. nlfilter1525. regionprops

2、1626. rgb2gray2027. roicolor2128. roifill2229. roifilt22230. roipoly2331. strel241. bwareaopen功能:用于从对象中移除小对象。 . b, x4 F1 |: k& U( u( h2 T: X( V, B9 用法:BW2 = bwareaopen(BW,P)BW2 = bwareaopen(BW,P,CONN)BW2 = bwareaopen(BW,P,CONN)从二值图像中移除所有小于P的连通对象。CONN对应邻域方法,默认为8。, l, L# s2 R8 ) dw8 s a) _. 例子:origina

3、lBW = imread(text.png);imview(originalBW) bwAreaOpenBW = bwareaopen(originalBW,50);2. bwlabel功能:对连通对象进行标注,bwlabel主要对二维二值图像中各个分离部分进行标注(多维用bwlabeln,用法类似)。1 _0 _|( G* H% q用法: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,

4、n)返回连通数num。3. bwperim功能:查找二值图像的边缘。* B8 z3 6 N( i, O+ Y6 1 v& R U, B. h. b用法:BW2 = bwperim(BW1) |+ D/ J L7 x% Q4 |BW2 = bwperim(BW1,conn)8 5 H5 J- 1 X. |) XBW2 = bwperim(BW1,conn)表示从输入图像BW1中返回只包括对象边缘像素点的图像。conn的定义值如下:) r |5 x O- a8 9维数参数值说明对二维44领域88领域对三维66领域1818领域2626领域例子:7 y3 H# D# _- U/ c2 H4 ) F!

5、w8 c*( C- S* W) x! O3 P. b( P% kBW1 = imread(circbw.tif);BW2 = bwperim(BW1,8); * F& k: 6 3 : ximshow(BW1)% E p+ Q% T y7 k; q2 e# Xfigure, imshow(BW2)4. colfilt功能:以列方法进行邻域处理,也可执行常规非线性滤波(自己理解的)。. L T1 q6 a9 _ _用法:B = colfilt(A,m n,block_type,fun)该函数生成了一幅图像,在中,每一列对应于其中心位于图像内某个位置的邻域所包围的像素。然后将函数应用于该矩阵中。m

6、 n表示大小为m行n列的邻域。block_type表示了一个字符串,包括distinct,sliding两种,其中sliding是在输入图像中逐个像素地滑动该m乘n的区域。fun表示引用了一个函数进行处理,函数返回值的大小必须和原图像大小相同。举例:I = imread(tire.tif);! 7 I5 r) Z5 w nQ( H5 F! W/ p imshow(I) I2 = uint8(colfilt(I,5 5,sliding,mean); figure, imshow(I2) O6 g) e+ W! k. z7 t6 J1 x/ t/ b3 c这个函数我是根据冈萨雷斯的图像处理书来翻译

7、的,而且有些地方我也不是很明白,如果有什么问题的话,可以一起商榷。5. conv2功能:是二维卷积运算函数(与convmtx2相似)。如果a和b是两个离散变量n1和n2的函数,则关于a和b的二维卷积运算数学公式如下:- A3 * r% q6 m9 Y5 g M9 K用法:C = conv2(A,B)+ Z/ T; X+ L2 X! y7 B* aC = conv2(hcol,hrow,A)C = conv2(.,shape)5 C wT! ?2 ! q* ?C = conv2(A,B)计算数组A和B的卷积。如果一个数组描述了一个二维FIR滤波器,则另一个数组被二维滤波。当A的大小为ma,na,

8、B的大小为mb,nb时,C的大小为ma+mb-1,mb+nb-1。shape见下表参数值 X5 y3 M! N7 q, s9 C) * ! s) u含义3 J0 F; # n0 P* b( d# Zfull! Z7 f: f; n- l; Z 默认值,返回全部二维卷积值。 F# N3 L* 6 O+ K4 usame5 & K9 x2 b7 % h9 3 b% R返回与A大小相同卷积值的中间部分6 q, . q9 f, m& O7 e5 ) valid/ G% c) D4 S9 P# z7 O s当all(size(A)=size(B),C的大小为ma+mb-1,mb+nb-1;否则,C返回。

9、在n维卷积运算中,C的大小为max(size(A)- size(B)+1,0)# _1 F0 ( I8 I例子:s = 1 2 1; 0 0 0; -1 -2 -1;A = zeros(10);A(3:7,3:7) = ones(5);H = conv2(A,s);mesh(H)+ i+ 0 Z ?b6. dither功能:可以把真彩色图像装换成索引图像或者把灰度图像转换为二值图像。1 v0 O( w3 l7 W9 A6 A, g3 l T用法:X = dither(RGB,map)BW = dither(I) X = dither(RGB,map,Qm,Qe)5 9 Z0 lQ7 p/ jX

10、 = dither(RGB,map)表示把真彩色图像RGB按指定的色图map抖动成索引图像X,但map不能超过65536种颜色。BW = dither(I)表示把灰度图像I抖动成二值图像BWX = dither(RGB,map,Qm,Qe) Qm表示沿每个颜色轴反转颜色图的量化的位数,Qe表示颜色空间计算误差的量化位数。如果QeQm,则不进行抖动操作。默认值Qe=5,Qm=8 R: |6 a4 _) - Z-例子:I = imread(cameraman.tif);BW = dither(I);imview(BW)7. histeq功能:直方图均衡化。$ e; A. L% P! G g- D2

11、 用法: J = histeq(I,hgram)将原始图像I的直方图变成用户指定的向量hgram。hgram中的各元素的值域为0,1。 J = histeq(I,n)指定直方图均衡后的灰度级数n,默认值为64。+ G j8 2 R+ ( o0 s) J,T = histeq(I,.)返回从能将图像I的灰度直方图变换成图像J的直方图变换T。 newmap = histeq(X,map,hgram)1 j. y% a: ? A4 x newmap = histeq(X,map) newmap,T = histeq(X,.) 这三个是针对索引图像调色板的直方图均衡化,用法和灰度图像的一样。# J-

12、o3 o$ Y; U# S& e! t0 k4 N) z1 Q举例:; z0 V/ b- w$ f/ k I = imread(tire.tif); J = histeq(I);8 u$ F# r0 T# r* m m2 XW1 e; f imshow(I)8 / _7 3 H9 E# Q figure, imshow(J)8. im2bw功能:通过设定亮度将阈值灰度、真彩、索引图像转换为二值图像。. X# sZP- 5 r, a9 D j用法:BW = im2bw(I,level)BW = im2bw(X,map,level)BW = im2bw(RGB,level)分别将灰度图像、索引图像

13、、真彩色图像转换为二值图像。7 e8 s d# |4 b: x5 t1 L* L% j( w& Level是归一化的阈值,值域为0,1。Level可以由函数graythresh(I)来计算。例子:load treesBW = im2bw(X,map,0.4);imview(X,map),imview(BW)9. im2uint8功能:将图像转换为8位无符号整型。也可将输出值限定在0 255内。用法: I2 = im2uint8(I)$ W. q6 B& / W9 Y+ , v M RGB2 = im2uint8(RGB)3 R$ n3 r3 E7 T I = im2uint8(BW) X2 =

14、 im2uint8(X,indexed)举例:I = reshape(uint8(linspace(0,255,255),5 5) I2 = im2uint8(I)10. imadd功能:实现图像相加运算。# S$ T+ v6 g3 3 F- p用法:Z = imadd(X,Y) * s# B& ?8 Y& i* j4例子:I = imread(rice.png);J = imread(cameraman.tif);K = imadd(I,J,uint16);%转换数据类型,然后将图像相加imshow(K,)11. imadjust功能:% w. D( Y f; X3 V: v k8 h9 g

15、7 调节灰度图像的亮度或彩色图像的颜色矩阵。v ?. |- TE, I: d: n ( C! g5 A% 5 yV! z2 用法: 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。它们都可以使用空的矩阵,默认值是0 1。% W; N7 w& m u _ newm

16、ap = imadjust(map,low_in high_in,low_out high_out,gamma) 调整索引色图像的调色板map。8 S2 O; 7 B; k: s& ? i: R9 f1 q- B% d9 B RGB2 = imadjust(RGB1,low_in high_in,low_out high_out,gamma)( N w2 l) j6 / & c0 l4 对RGB图像1的红、绿、蓝调色板分别进行调整。随着颜色矩阵的调整,每一个调色板都有唯一的映射值。7 T) C Y5 z5 Z H$ . I, , b& L% V, W/ G1 S* T+ R$ Y5 F% x

17、参数gamma指定了曲线的形状,该曲线用来映射I的亮度值。如果gamma小于1,映射被加权到更高的输出值。如果gamma大于1,映射被加权到更低的输出值。如果省略了函数的参量,则gamma默认为1(线性映射)。. m4 . G* W5 s* r% ak, Q( p举例: 调整灰度图像:K = imadjust(I,0.3 0.7,); e$ _8 ! f( b3 z/ V! |0 o$ B0 P5 b figure, imshow(K). f5 ?, D; r7 t, e3 P I& r* d 调整RGB图像:RGB1 = imread(football.jpg); RGB2 = imadju

18、st(RGB1,.2 .3 0; .6 .7 1,);9 V1 E2 g1 , E; W2 # j! B: V0 imshow(RGB1), figure, imshow(RGB2)12. imapprox功能:减少索引图像的色彩数,能够指定新色图的色彩数。即对索引图像进行近似处理。用法:Y,newmap = imapprox(X,map,n); s- U; b4 B0 r( BY,newmap = imapprox(X,map,tol)* 4 A9 c h; cL4 O+ GY = imapprox(X,map,newmap)+ _& F- u: o5 T 9 . = imapprox(.,

19、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)13. imcomplement功能:对图像进行

20、求反运算。用法:IM2 = imcomplement(IM) 计算图像IM的负片。图像IM可以是二值图像、灰度图像、或者RGB图像。IM2和IM类型相同。i6 |4 u5 z; Um例子:/ wm3 Z0 c% k X = uint8( 255 10 75; 44 225 100);9 l) k8 ?% E: P: Z3 iq X2 = imcomplement(X)5 o9 Y- B0 E5 m& 5 V0 m X2 = 0 245 180% c% G: S B$ g; M1 b 211 30 155! * n1 u% w/ I8 b+ o# aT bw = imread(text.png)

21、; bw2 = imcomplement(bw); subplot(1,2,1),imshow(bw)9 d* ; v z) z4 O3 5 : Z0 I subplot(1,2,2),imshow(bw2)! , J I! y7 x, L# G I = imread(glass.png); J = imcomplement(I);+ D. Q& v+ S w4 |. # 2 h imshow(I), figure, imshow(J)14. imfinfo功能:获取图像文件的信息) t+ K1 l0 5 用法:info = imfinfo(filename,fmt) info = imfin

22、fo(filename)4 d( b- 0 I s0 C k M参数fmt对应于图像处理工具箱中所有支持的图像文件格式(如bmp,jpg等等). S; v6 3 s4 i m5 M. g+ G% Q/ |) s0 E- j例子:info = imfinfo(canoe.tif) info = Filename:canoe.tif8 D2 / b6 # S0 |6 K4 M, ?0 # FileModDate: 25-Oct-1996 22:10:395 2 p; . x* S$ i/ FileSize: 69708% Z+ t7 r& L; d4 rR Format: tif FormatVe

23、rsion: Width: 346 Height: 207 BitDepth: 8 ColorType: indexed FormatSignature: 73 73 42 0% x0 E6 # ( X9 w. # Rk6 i ByteOrder: little-endian+ - F 8 b1 f NewSubfileType: 06 D2 N 1 x h. ) w BitsPerSample: 8 Compression: PackBits PhotometricInterpretation: RGB Palette* f8 5 |) W5 y$ z: StripOffsets: 9x1d

24、oubleV. q U- u. _% V6 e. _ SamplesPerPixel: 1: w, S* w3 W, * B& _ RowsPerStrip: 239 R 0 p# h8 C StripByteCounts: 9x1double7 M1 bS7 m8 d5 tU q: r9 ?2 | XResolution: 72- k! : Z5 O7 T; n3 J7 j9 P YResolution: 72; E) v* W; G- X - g+ 9 & I ResolutionUnit: Inch Colormap: 256x3double PlanarConfiguration: C

25、hunky TileWidth: C r8 _4 S$ N. r: x# E TileLength: & N$ G- Kb 0 Q0 g& Y* 4 I TileOffsets: TileByteCounts: ( ; F* cKH* r4 d Orientation: 1 FillOrder: 1 GrayResponseUnit: 0.01007 b Z1 R2 p; MaxSampleValue: 255 MinSampleValue: 0 Thresholding: 115. imhist功能:显示图像的直方图。 输入数据类型可以是无符号8位、16位、有符号16位、单精浮点、字符型、逻

26、辑型等数据。! G6 i3 ; S$ U! P; * f- 7 n用法:, g: j. C/ h; E; m& |% |+ o. f# w6 . v imhist(I,n)计算和显示图像I的直方图,n为指定的灰度级数目,默认为256。 如果I是二值图像,那么n仅有两个值。5 / h8 j* i% 5 v; Y K0 Z imhist(X,map)计算和显示索引图像x的直方图,map为调色板。4 e& u r8 j& M8 Q counts,x = imhist(.)返回直方图数据向量counts或相应的色彩值向量x。举例: I=imread(rice.tif) imshow(I)$ T$ o(

27、 P9 _1 X4 figure,imhist(I)16.imnoise功能:模仿噪声信息,相当于图像的相加运算。9 _/ X; C1 w7 Z5 I0 E3 L5 D& Z: 用法: J = imnoise(I,type) 5 s! b/ T8 o9 m2 _! V u+ ?3 b# B/ oJ = imnoise(I,type,parameters)参数Type对应的噪声类型如下: 8 p; V4 u3 k+ S- ( O8 mgaussian高斯白噪声9 K J# c! HT+ aK2 6 ( clocalvar0均值白噪声; ?0 ( l1 u2 1 Y7 A: ( poisson泊松

28、噪声salt & pepper盐椒噪声speckle乘性噪声0 D7 T( Y, X; C( G% w!例子:I = imread(eight.tif);J = imnoise(I,salt & pepper,0.02);imshow(I)figure, imshow(J)17. imresize功能:改变图像的大小。8 d6 j! f6 eK* F. f4 l用法:B = imresize(A,m) g, |6 i* T, g8 B6 v jB = imresize(A,m,method) , k2 m) zJ: d( ZB = imresize(A,mrows ncols,method)

29、9 ! w# C: Yj& l6 GB = imresize(.,method,n) B = imresize(.,method,h)Z Q, w/ m1 Y* H% 3 imrersize函数使用由参数method指定的插值运算来改变图像的大小。method的几种可选值:S! |) B w5 # I9 v3 K: Unearest(默认值)最近邻插值bilinear双线性插值bicubic双三次插值6 e0 w! A2 u3 DB = imresize(A,m)表示把图像A放大m倍0 V$ Z9 B% c/ P1 N9 Q+ CB = imresize(.,method,h)中的h可以是任意

30、一个FIR滤波器(h通常由函数ftrans2、fwind1、fwind2、或fsamp2等生成的二维FIR滤波器)。0 M% $ D7 b, D2 j! g! x _例子:I = imread(circuit.tif);J =imresize(I,1.25);imshow(I)figure, imshow(J)18. imdilate功能:对图像实现膨胀操作。$ n7 H j& E6 $ B, S. _. o M2 |& s* R- c用法:IM2 = imdilate(IM,SE) P7 P% I- M+ A! s& G& IM2 = imdilate(IM,NHOOD) * c( q8 !

31、 h, y. n; . VIM2 = imdilate(IM,SE,PACKOPT) IM2 = imdilate(.,PADOPT) ) K. d) o* % t: 0 s IM2 = imdilate(IM,SE) 膨胀灰度,二值,压缩二值图像IM,返回IM2。参数SE为由strel函数返回的结构元素或者结构元素对象组。T/ Q1 r3 A6 d% s0 rIM2 = imdilate(IM,NHOOD)膨胀图像IM,这里NHOOD是定义结构元素邻域0和1的矩阵。6 _8 J$ S3 P3 ) 2 CIM2 = imdilate(IM,SE,PACKOPT)定义IM是否是一个压缩的二值图像

32、。$ V- B3 y$ K4 & IM2 = imdilate(.,PADOPT)指出输出图像的大小。& b- o( s$ S3 & i( %例子:I = imread(cameraman.tif);se = strel(ball,5,5);I2 = imdilate(I,se);imshow(I), title(Original)figure, imshow(I2), title(Dilated)19. imerode功能:对图像实现腐蚀操作,即膨胀操作的反操作。用法:IM2 = imerode(IM,SE) IM2 = imerode(IM,NHOOD) IM2 = imerode(IM,

33、SE,PACKOPT,M) - . N # m( w0 r* m! L- WIM2 = imerode(.,PADOPT) IM2 = imerode(IM,SE) 腐蚀灰度,二值,压缩二值图像IM,返回IM2。参数SE为由strel函数返回的结构元素或者结构元素对象组。0 g. j . k$ 0 h4 It: zIM2 = imerode(IM,NHOOD)腐蚀图像IM,这里NHOOD是定义结构元素邻域0和1的矩阵。$ N l/ L U/ H$ O2 b/ _) iIM2 = imerode(.,PADOPT)指出输出图像的大小(是否与输入图像大小一致)。 _! k% L4 X% q/ O3

34、 8 X9 B例子:originalBW = imread(circles.png);! Y9 0 E+ p! Use = strel(disk,11);erodedBW = imerode(originalBW,se);imview(originalBW), imview(erodedBW)20. imopen功能:对图像实现开运算,开运算一般能平滑图像的轮廓,消弱狭窄的部分,去掉细的突出。& - M1 X* c v用法:IM2 = imopen(IM,SE)IM2 = imopen(IM,NHOOD); H6 0 & * # k4 X: KIM2 = imopen(IM,SE)用结构元素S

35、E实现灰度图像或二值图像的IM的形态开运算。SE可以是单个结构元素对象或者结构元素对象数组。- r2 J) o0 J( m: ?8 d2 eIM2 = imopen(IM,NHOOD)用结构元素strel(NHOOD)执行开运算。& Y! C1 5 G/ l, S4 y4 |: D) y$ m ) b: H(例子:I = imread(snowflakes.png);se = strel(disk,5);I_opened = imopen(I,se);imview(I_opened,)21. imclose功能:对图像实现闭运算,闭运算也能平滑图像的轮廓,但与开运算相反,它一般融合窄的缺口和细

36、长的弯口,去掉小洞,填补轮廓上的缝隙。$ d8 T8 n; I* a! 用法:IM2 = imclose(IM,SE)( d, B4 T; P, ) I8 dIM2 = imclose(IM,NHOOD)用法和imopen相同,请在本论坛查找!例子:originalBW = imread(circles.png); se = strel(disk,10); closeBW = imclose(originalBW,se);imview(closeBW) 22. mat2gray功能:将矩阵转化为灰度图像。5 n ?: , N* B# n7 O: L4 x用法:I = mat2gray(A,am

37、in amax) 把一个double类的任意数组转换成取值范围为0 1的亮度图像。其中图像I的取值范围也在0(黑色)到1(白色)之间。参数amin和amax表示将A中小于amin的值转换为0,将A中大于amax的值转换为1。$ i* A1 K5 o# c6 t: d I = mat2gray(A) 将矩阵A中实际最小值和最大值分别赋给amin和amax。1 q; z! G+ W% R% R2 . U举例:I = imread(rice.png); _ U* y: t# t J = filter2(fspecial(sobel),I);$ N/ O* ! ! d; M, h K = mat2gr

38、ay(J);* N9 j. U! n8 v9 V! u+ v imshow(I), figure, imshow(K)23. montage功能:在同一时间显示多帧图像中的所有帧。& 7 v! u8 B# _+ f0 t9 o1 u4 _x2 p用法:montage(I) montage(BW)8 D5 l! s( D5 w# qmontage(X,map)5 f% r$ Z$ j) y7 t, r% jmontage(RGB). n. 6 Q/ G9 v. z; v& I( r& ! U: vh = montage(.)0 u1 a2 X7 fr8 Rmontage(I)显示灰度图像I共k帧

39、,I为m*n*1*k的数组0 P- D% h9 u3 h. Vmontage(BW) 显示二值图像I共k帧,I为m*n*1*k的数组# C4 R3 v V- 0 l& 0 Mmontage(X,map)显示索引图像I共k帧,色图由map指定为所有的帧图像的色图,X为m*n*1*k的数组# W* | t2 O, # ; Amontage(RGB)显示真彩色图像GRB共k帧,RGB为m*n*3*k的数组: r Z F7 例子: o1 F d1 x! l/ E$ x/ h1 |1 T) e5 xS xmri=uint8(zeros(128,128,1,27); H9 g. - y8 l! for f

40、rame=1:27 / t3 g* Uj3 s i8 Cmri(:,:,:,frame),map=imread(mri.tif,frame);G+ J3 u6 R+ Y4 7 d+ %把每一帧读入内存中 ( ; k0 b! J8 o, ! r% s4 u/ C+ nend( T+ f) W2 J2 v% montage(mri,map);* U2 24. nlfilter功能:用来执行通用的滑动邻域操作。, M% 9 O# e. P* b! F% y2 用法:B = nlfilter(A,m n,fun) B = nlfilter(A,m n,fun,P1,P2,.) 0 o& W6 R+ H

41、$ C7 y! p2 iB = nlfilter(A,indexed,.) # l% + D1 X; B = nlfilter(A,m n,fun)表示对图像A的每一个m*n滑块应用函数fun。fun函数必须接受m*n块作为输入,并返回一个标量y,形如:c=fun(x)c为m*n块x的中心像素点的输入值。9 i7 f j# ! p; P例子:B = nlfilter(A,3 3,myfun); V * K8 W0 w0 f. u, 其中myfun是以m文件如下:function scalar = myfun(x)scalar = median(x(:);25. regionprops这里给出在

42、Matlab图像处理工具箱中非常重要的一个图像分析函数:regionprops。顾名思义:它的用途是get the properties of region,即用来度量图像区域属性的函数。 语法STATS = regionprops(L,properties)描述测量标注矩阵L中每一个标注区域的一系列属性。L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推。返回值STATS是一个长度为max(L(:)的结构数组,结构数组的相应域定义了每一个区域相应属性下的度量。properties 可以是由逗号分割的字符串列表、饱含字符串的单元数

43、组、单个字符串 all 或者 basic。如果 properties 等于字符串 all,则所有下述字串列表中的度量数据都将被计算,如果 properties 没有指定或者等于 basic,则属性: Area, Centroid, 和 BoundingBox 将被计算。下面的列表就是所有有效的属性字符串,它们大小写敏感并且可以缩写。 属性字符串列表 AreaEquivDiameter9 X9 I4 n+ U, bMajorAxisLength, P; K: v, J& F; V/ C. l, BoundingBoxEulerNumberMinorAxisLengthCentroidExtent

44、OrientationConvexAreaExtremaPixelIdxList|) D5 M% 7 g( : v% o# ConvexHullFilledArea# k, z! C) N% _+ G% F# _PixelList3 J+ R$ x4 ?: b3 P |% Q8 eConvexImageFilledImageSolidity( J* q$ o% w- Eccentricity0 9 t7 j$ W* f! Image属性详细定义本部分将结合一个具体的例子说明各种字串相关属性的意义,矩阵取自在蚁蛉模式识别中做过预处理后的斑纹分割图像,如下图:这是一幅二值图像,在应用regionp

45、rops函数之前必须将其标注,可以调用 bwlabel函数和伪彩色处理,标注后的图像如下图:下面基于以上的材料来考察属性的含义。 Area是标量,计算出在图像各个区域中像素总个数。注意:这个数值可能与由函数 bwarea 计算的值有轻微的不同。对于这样一个数值,我们可以使用它除以整个图像区域的像素个数而得到斑纹比例,可以作为模式识别的候选特征,并且这个特征是仿射不变的。在本例中最后计算出的面积向量是 3.8952,9.7213,17.663,3.5762,1.3432,1.6958,0.41974,0.41974,21.625,12.324,4.8187,1.5111/10000.Boundi

46、ngBox是1行ndims(L)*2列的向量,即包含相应区域的最小矩形。BoundingBox 形式为 ul_corner width,这里 ul_corner 以 x y z . 的坐标形式给出边界盒子的左上角、boxwidth 以 x_width y_width . 形式指出边界盒子沿着每个维数方向的长度。本例的各部分区域最小矩形如下图!注意:请在这熟悉一下函数rectangle的使用方法。Centroid是1行ndims(L)列的向量,给出每个区域的质心(重心)。 注意:Centroid 的第一个元素是重心水平坐标(x坐标)、第二个元素是重心垂直坐标(y坐标)。Centroid 所有其它

47、元素则按照维顺序排列。下图采用以中心为圆心的小圆来演示质心检测的效果:图中各质心坐标(标准化后的)依次为: (x,y)=0.10478, 0.767390.11883, 0.0815450.19586, 0.610920.30701, 0.308070.65712, 0.316130.73165, 0.305310.74548, 0.353780.80624, 0.728020.84546, 0.615640.90554, 0.0795740.93477, 0.778710.97611, 0.15576MajorAxisLength是标量,与区域具有相同标准二阶中心矩的椭圆的长轴长度(像素意义

48、下)。本属性只支持二维标注矩阵。 MinorAxisLength 是标量,与区域具有相同标准二阶中心矩的椭圆的短轴长度(像素意义下)。本属性只支持二维标注矩阵。 Eccentricity 是标量,与区域具有相同标准二阶中心矩的椭圆的离心率(可作为特征)。本属性只支持二维标注矩阵。 Orientation 是标量,与区域具有相同标准二阶中心矩的椭圆的长轴与x轴的交角(度)。本属性只支持二维标注矩阵。 本例的各区域椭圆数据为:长轴:18.767,45.172,43.003,30.687,16.505,15.698,5.8833,5.8833,46.954,38.873,22.929,15.429短

49、轴:16.211,26.079,32.709,9.8458,6.8019,8.6386,5.8833,5.8833,35.976,31.022,16.98,7.8038离心率:0.50387,0.81652,0.6492,0.94713,0.91114,0.83497,0,0,0.64262,0.60262,0.67205,0.86266方向角:-29.219,-32.192,-9.3909,-50.904,-70.333,48.823,0,0,14.035,17.986,3.0319,-34.238我们可以考察离心率的变化趋势,得到对于整个区域中的各区域的似圆性如何的大致感觉,比如下图是12

50、个区域的离心率变化情形:由上图可以看出区域整体的似圆性并不好,实际上可以考虑使用离心率向量作为一个模式识别的特征! Image 二值图像,与某区域具有相同大小的逻辑矩阵。你可以用这个属性直接将每个子区域提取出来,然后再作相应的处理!比如本例的第一个斑纹区域提出后是。 FilledImage 与上相同,唯一区别是这是个做了填充的逻辑矩阵!本例中和上面的没有区别,只有区域有空洞时才有明显差别。 FilledArea 是标量,填充区域图像中的 on 像素个数。 ConvexHull 是p行2列的矩阵,包含某区域的最小凸多边形。此矩阵的每一行存储此多边形一个顶点的xy坐标。此属性只支持2维标注矩阵。例

51、如:本例中的所有子区域的最小凸多边形图形如下图看看第2个区域的大图。 ConvexImage 二值图像,用来画出上述的区域最小凸多边形。同时此凸包内的像素均打开,图像尺寸和此区域对应边界矩形相同。此属性只支持2维标注矩阵。例如:本例中的第2个子区域的最小凸多边形图形为。注意:此处函数roipoly很有用! ConvexArea 是标量,填充区域凸多边形图像中的 on 像素个数。 EulerNumber 是标量,几何拓扑中的一个拓扑不变量-欧拉数,等于图像中目标个数减去这些目标中空洞的个数。 此属性只支持2维标注矩阵。本例中的欧拉数均为1。 Extrema 8行2列矩阵,八方向区域极值点。矩阵每

52、行存储这些点的xy坐标,向量格式为 top-left top-right right-top right-bottom bottom-right bottom-left left-bottom left-top。此属性只支持2维标注矩阵。 EquivDiameter 是标量,等价直径:与区域具有相同面积的圆的直径。计算公式为:sqrt(4*Area/pi)。. 此属性只支持2维标注矩阵。本例标准化后的12区域直径向量为: 2.227,3.5182,4.7423,2.1339,1.3077,1.4694,0.73105,0.73105,5.2473,3.9612,2.477,1.3871/100

53、.Solidity 是标量,同时在区域和其最小凸多边形中的像素比例。计算公式为:Area/ConvexArea,这也是个仿射特征,实际上反映出区域的固靠性程度。此属性只支持2维标注矩阵。本例12区域凸元素比例向量为: 0.97071,0.66171,0.90846,0.86585,0.84211,0.94393,1,1,0.9096,0.75514,0.90823,0.94737.Extent 是标量,同时在区域和其最小边界矩形中的像素比例。计算公式为:Area除以边界矩形面积,这也是个仿射特征,实际上反映出区域的扩展范围程度。此属性只支持2维标注矩阵。不再给出计算结果! PixelIdxLi

54、st p元向量,存储区域像素的索引下标。 PixelListp行ndims(L)列矩阵,存储上述索引对应的像素坐标。 支持类输入的标注矩阵L可以有任意的数值类型。 提醒使用逗号分割列表语法当你基于regionprops函数的输出作算法设计时,使用逗号分割列表语法就凸显出其非常的价值。例如:对于一个存储标量的属性,可以利用此语法创建一个包含图像中不同区域内此属性值的向量。例如以下两句是等价的: stats(1).Area, stats(2).Area, ., stats(end).Areastats.Area因此,可以使用下面的方法创建相应的向量: regionprops(L,Area);all

55、Area = stats.Area;allArea 就是一个与结构数组 stats 具备相同长度的向量。 基于特定原则的区域选择当你要基于特定准则条件选择某个区域时,将函数 ismember 和 regionprops 联合使用是很有用处的。例如:创建一个只包含面积大于80的二值图像,用以下命令 idx = find(stats.Area 80);BW2 = ismember(L,idx);计算性能考虑大多数的属性测量计算时间都非常地少,除了那些非常依赖于图像L中区域个数和像素个数的属性。例如: ConvexHull ConvexImage ConvexArea FilledImage 另外建

56、议一次性计算所有属性值,因为分开计算和一起计算时间相差无几! 使用二值图像工作在调用regionprops之前必须将二值图像转变为标注矩阵。两个函数可以做到: L = bwlabel(BW); L = double(BW);注意:虽然这两个函数从同一二值图像产生不同的标注矩阵,但是它们是等效的!例如:给出如下的二值矩阵BW, 1 1 0 0 0 01 1 0 0 0 00 0 0 0 0 00 0 0 0 1 10 0 0 0 1 1bwlabel 创建一个包含两个分别由整数1和2标注的连续区域标注矩阵 mylabel = bwlabel(BW)mylabel = 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 2double 创建一个包含一个由整数1标注的不连续区域标注矩阵。 mylabel2 = double(BW)mylabel2 = 1 1

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!