1 u% y7 t* W( i, }3 l D. x, h ; O0 b( q& d& O: N! b# H7 }2.统计标注连通域 % K7 S& j( w Y0 e- ? 4 l. _7 \: k: z; Q. O参考网址:: q! I/ x# k3 E" J0 g8 E! _2 a9 R
/ K7 P R* c2 e" ?' A9 `- x( d, u
Matlab中bwlabel函数的使用9 S: r- R& Z3 B% k
9 f3 Q% z6 I' M% F* T2 Z
matlab的Regionprops详解 " c5 i" X% k' e7 Y5 v! E* n. C& h; U
1 `+ k: d5 T' W% T$ Hbwlabel函数 7 B8 K2 F# O* }# j9 J' E. { : r5 g. l6 J" A. e6 Y" y1 ^& d/ I* ^2 X3 W
L = bwlabel(BW,n) , x2 G# M* D6 a0 M5 L2 O t) z: [8 E返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。 6 _" a* ~; m5 C% [: ]( d% U4连通或8连通是图像处理里的基本感念:而8连通,是说一个像素,如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角连接着,则认为他们是联通的;4连通是指,如果像素的位置在其他像素相邻的上、下、左或右,则认为他们是连接着的,连通的,在左上角、左下角、右上角或右下角连接,则不认为他们连通。请注意“或”字的含义,就是满足其中一个条件就认为是连通的。* i# X3 ~1 K/ x
[L,num] = bwlabel(BW,n)这里num返回的就是BW中连通区域的个数。 , q: Z9 i1 J+ N4 l2 x通俗的说,这个函数的作用是用来找这个二值图像中的连通区域的,对于不同的符合条件的连通区域(4连通,8连通)分别用不同的标号加以区别,结果保存在L这个矩阵里,而num里保存的是输入图像中连通区域的总数。4 V1 y0 a" |2 x; }% g. S4 b
, f/ s9 t7 J: z. h& I
( M s: x" S* p# a; M) iRegionprops函数 $ e, \: r( p9 _ 4 ?$ Z6 K- ?5 P% g# |% H) }+ K" o- n. j# d( ?/ Y
Regionprops:用途是get the properties of region,即用来度量图像区域属性的函数。, A( c5 n7 d V+ E* V
2 [! n" t3 d& P
语法:STATS = regionprops(image,properties)2 E( N; ]4 G. u6 c9 v5 w9 k
6 b5 l. s' f* n/ |
image是为传入的是bwlabel函数传出的,经过标记后的图像数据。7 c! N0 }+ g2 ], `3 `2 m R
5 {" O" n, K; @! q1 ]4 Dproperties:这个则是你需要传入的参数。 $ }, O- K8 p) \: c; c* f6 d, F $ [' G, C% H1 k3 c3 `' G. F比如我们需要求面积,则传入Area参数。 ! }1 ~" ?% N$ s) Y, Z, }6 \. R6 h; r0 }) E M7 Y3 N; ?2 R
求周长,则传入Perimeter参数。" T: Q( ~, N+ k, r
1 w4 `" g6 |# Z, T0 A& w
求离心率,则传入Eccentricity参数。 i6 ^0 G6 e H# o
& |0 R. U+ D0 o8 T0 L$ Y- O _) A* c$ G
regionprops 函数具体有哪些参数可以参考Matlab官方文档。 ( ?5 M" A& N0 u- g$ _9 @ - M1 D+ O) V6 G9 v% ? N在Matlab右上角查询regionprops函数,点开,则会有最官方的使用方法和参数含义。0 S, a+ Z6 L5 `, Z6 I$ T) L3 R