matlab axis 用法,MATLAB中regionprops的用法
Matlab圖像處理函數(shù):regionprops
這里給出在Matlab圖像處理工具箱中非常重要的一個(gè)圖像分析函數(shù):regionprops。顧名思義:它的用途是get the properties of region,即用來度量圖像區(qū)域?qū)傩缘暮瘮?shù)。
語法
STATS = regionprops(L,properties)
描述
測(cè)量標(biāo)注矩陣L中每一個(gè)標(biāo)注區(qū)域的一系列屬性。L中不同的正整數(shù)元素對(duì)應(yīng)不同的區(qū)域,例如:L中等于整數(shù)1的元素對(duì)應(yīng)區(qū)域1;L中等于整數(shù)2的元素對(duì)應(yīng)區(qū)域2;以此類推。返回值STATS是一個(gè)長度為max(L(:))的結(jié)構(gòu)數(shù)組,結(jié)構(gòu)數(shù)組的相應(yīng)域定義了每一個(gè)區(qū)域相應(yīng)屬性下的度量。properties 可以是由逗號(hào)分割的字符串列表、飽含字符串的單元數(shù)組、單個(gè)字符串 'all' 或者 'basic'。如果 properties 等于字符串 'all',則所有下述字串列表中的度量數(shù)據(jù)都將被計(jì)算,如果 properties 沒有指定或者等于 'basic',則屬性: 'Area', 'Centroid', 和 'BoundingBox' 將被計(jì)算。下面的列表就是所有有效的屬性字符串,它們大小寫敏感并且可以縮寫。
屬性字符串列表
Area
EquivDiameter
MajorAxisLength
BoundingBox
EulerNumber
MinorAxisLength
Centroid
Extent
Orientation
ConvexArea
Extrema
PixelIdxList
ConvexHull
FilledArea
PixelList
ConvexImage
FilledImage
Solidity
Eccentricity
Image
屬性詳細(xì)定義
本部分將結(jié)合一個(gè)具體的例子說明各種字串相關(guān)屬性的意義,矩陣取自在蟻蛉模式識(shí)別中做過預(yù)處理后的斑紋分割圖像,如下圖:
這是一幅二值圖像,在應(yīng)用regionprops函數(shù)之前必須將其標(biāo)注,可以調(diào)用 bwlabel函數(shù)和偽彩色處理,標(biāo)注后的圖像如下圖:
下面基于以上的材料來考察屬性的含義。
'Area'
是標(biāo)量,計(jì)算出在圖像各個(gè)區(qū)域中像素總個(gè)數(shù)。注意:這個(gè)數(shù)值可能與由函數(shù) bwarea 計(jì)算的值有輕微的不同。對(duì)于這樣一個(gè)數(shù)值,我們可以使用它除以整個(gè)圖像區(qū)域的像素個(gè)數(shù)而得到斑紋比例,可以作為模式識(shí)別的候選特征,并且這個(gè)特征是仿射不變的。在本例中最后計(jì)算出的面積向量是
[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.
'BoundingBox'
是1行ndims(L)*2列的向量,即包含相應(yīng)區(qū)域的最小矩形。BoundingBox 形式為 [ul_corner width],這里 ul_corner 以 [x y z ...] 的坐標(biāo)形式給出邊界盒子的左上角、boxwidth 以 [x_width y_width ...] 形式指出邊界盒子沿著每個(gè)維數(shù)方向的長度。本例的各部分區(qū)域最小矩形如下圖!注意:請(qǐng)?jiān)谶@熟悉一下函數(shù)rectangle的使用方法。
'Centroid'
是1行ndims(L)列的向量,給出每個(gè)區(qū)域的質(zhì)心(重心)。?注意:Centroid 的第一個(gè)元素是重心水平坐標(biāo)(x坐標(biāo))、第二個(gè)元素是重心垂直坐標(biāo)(y坐標(biāo))。Centroid 所有其它元素則按照維順序排列。下圖采用以中心為圓心的小圓來演示質(zhì)心檢測(cè)的效果:
圖中各質(zhì)心坐標(biāo)(標(biāo)準(zhǔn)化后的)依次為:
(x,y)= 0.10478, 0.76739 0.11883, 0.081545 0.19586, 0.61092 0.30701, 0.30807 0.65712, 0.31613 0.73165, 0.30531 0.74548, 0.35378 0.80624, 0.72802 0.84546, 0.61564 0.90554, 0.079574 0.93477, 0.77871 0.97611, 0.15576
'MajorAxisLength'
是標(biāo)量,與區(qū)域具有相同標(biāo)準(zhǔn)二階中心矩的橢圓的長軸長度(像素意義下)。本屬性只支持二維標(biāo)注矩陣。
'MinorAxisLength'
是標(biāo)量,與區(qū)域具有相同標(biāo)準(zhǔn)二階中心矩的橢圓的短軸長度(像素意義下)。本屬性只支持二維標(biāo)注矩陣。
'Eccentricity'
是標(biāo)量,與區(qū)域具有相同標(biāo)準(zhǔn)二階中心矩的橢圓的離心率(可作為特征)。本屬性只支持二維標(biāo)注矩陣。
'Orientation'
是標(biāo)量,與區(qū)域具有相同標(biāo)準(zhǔn)二階中心矩的橢圓的長軸與x軸的交角(度)。本屬性只支持二維標(biāo)注矩陣。
本例的各區(qū)域橢圓數(shù)據(jù)為: 長軸:18.767,45.172,43.003,30.687,16.505,15.698,5.8833,5.8833,46.954,38.873,22.929,15.429 短軸: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
我們可以考察離心率的變化趨勢(shì),得到對(duì)于整個(gè)區(qū)域中的各區(qū)域的似圓性如何的大致感覺,比如下圖是12個(gè)區(qū)域的離心率變化情形:
由上圖可以看出區(qū)域整體的似圓性并不好,實(shí)際上可以考慮使用離心率向量作為一個(gè)模式識(shí)別的特征!!
'Image'
二值圖像,與某區(qū)域具有相同大小的邏輯矩陣。你可以用這個(gè)屬性直接將每個(gè)子區(qū)域提取出來,然后再作相應(yīng)的處理!比如本例的第一個(gè)斑紋區(qū)域提出后是:
'FilledImage'
與上相同,唯一區(qū)別是這是個(gè)做了填充的邏輯矩陣!
本例中和上面的沒有區(qū)別,只有區(qū)域有空洞時(shí)才有明顯差別。
'FilledArea'
是標(biāo)量,填充區(qū)域圖像中的 on 像素個(gè)數(shù)。
'ConvexHull'
是p行2列的矩陣,包含某區(qū)域的最小凸多邊形。此矩陣的每一行存儲(chǔ)此多邊形一個(gè)頂點(diǎn)的xy坐標(biāo)。此屬性只支持2維標(biāo)注矩陣。例如:本例中的所有子區(qū)域的最小凸多邊形圖形如下圖
看看第2個(gè)區(qū)域的大圖:
'ConvexImage'
二值圖像,用來畫出上述的區(qū)域最小凸多邊形。同時(shí)此凸包內(nèi)的像素均打開,圖像尺寸和此區(qū)域?qū)?yīng)邊界矩形相同。此屬性只支持2維標(biāo)注矩陣。例如:本例中的第2個(gè)子區(qū)域的最小凸多邊形圖形為。注意:此處函數(shù)roipoly很有用!
'ConvexArea'
是標(biāo)量,填充區(qū)域凸多邊形圖像中的 on 像素個(gè)數(shù)。
'EulerNumber'
是標(biāo)量,幾何拓?fù)渲械囊粋€(gè)拓?fù)洳蛔兞?-歐拉數(shù),等于圖像中目標(biāo)個(gè)數(shù)減去這些目標(biāo)中空洞的個(gè)數(shù)。此屬性只支持2維標(biāo)注矩陣。本例中的歐拉數(shù)均為1。
'Extrema'
8行2列矩陣,八方向區(qū)域極值點(diǎn)。矩陣每行存儲(chǔ)這些點(diǎn)的xy坐標(biāo),向量格式為 [top-left top-right right-top right-bottom bottom-right bottom-left left-bottom left-top]。此屬性只支持2維標(biāo)注矩陣。
'EquivDiameter'
是標(biāo)量,等價(jià)直徑:與區(qū)域具有相同面積的圓的直徑。計(jì)算公式為:sqrt(4*Area/pi)。. 此屬性只支持2維標(biāo)注矩陣。本例標(biāo)準(zhǔn)化后的12區(qū)域直徑向量為:
[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.
'Solidity'
是標(biāo)量,同時(shí)在區(qū)域和其最小凸多邊形中的像素比例。計(jì)算公式為:Area/ConvexArea,這也是個(gè)仿射特征,實(shí)際上反映出區(qū)域的固靠性程度。此屬性只支持2維標(biāo)注矩陣。本例12區(qū)域凸元素比例向量為:
[0.97071,0.66171,0.90846,0.86585,0.84211,0.94393,1,1,0.9096,0.75514,0.90823,0.94737].
'Extent'
是標(biāo)量,同時(shí)在區(qū)域和其最小邊界矩形中的像素比例。計(jì)算公式為:Area除以邊界矩形面積,這也是個(gè)仿射特征,實(shí)際上反映出區(qū)域的擴(kuò)展范圍程度。此屬性只支持2維標(biāo)注矩陣。不再給出計(jì)算結(jié)果!!
'PixelIdxList'
p元向量,存儲(chǔ)區(qū)域像素的索引下標(biāo)。
'PixelList'
p行ndims(L)列矩陣,存儲(chǔ)上述索引對(duì)應(yīng)的像素坐標(biāo)。
支持類
輸入的標(biāo)注矩陣L可以有任意的數(shù)值類型。
提醒
使用逗號(hào)分割列表語法
當(dāng)你基于regionprops函數(shù)的輸出作算法設(shè)計(jì)時(shí),使用逗號(hào)分割列表語法就凸顯出其非常的價(jià)值。例如:對(duì)于一個(gè)存儲(chǔ)標(biāo)量的屬性,可以利用此語法創(chuàng)建一個(gè)包含圖像中不同區(qū)域內(nèi)此屬性值的向量。例如以下兩句是等價(jià)的:
stats(1).Area, stats(2).Area, ..., stats(end).Area
stats.Area
因此,可以使用下面的方法創(chuàng)建相應(yīng)的向量:
regionprops(L,'Area'); allArea = [stats.Area];
allArea 就是一個(gè)與結(jié)構(gòu)數(shù)組 stats 具備相同長度的向量。
基于特定原則的區(qū)域選擇
當(dāng)你要基于特定準(zhǔn)則條件選擇某個(gè)區(qū)域時(shí),將函數(shù) ismember 和 regionprops 聯(lián)合使用是很有用處的。例如:創(chuàng)建一個(gè)只包含面積大于80的二值圖像,用以下命令
idx = find([stats.Area] > 80); BW2 = ismember(L,idx);
計(jì)算性能考慮
大多數(shù)的屬性測(cè)量計(jì)算時(shí)間都非常地少,除了那些非常依賴于圖像L中區(qū)域個(gè)數(shù)和像素個(gè)數(shù)的屬性。例如:
'ConvexHull' 'ConvexImage' 'ConvexArea' 'FilledImage'
另外建議一次性計(jì)算所有屬性值,因?yàn)榉珠_計(jì)算和一起計(jì)算時(shí)間相差無幾!
使用二值圖像工作
在調(diào)用regionprops之前必須將二值圖像轉(zhuǎn)變?yōu)闃?biāo)注矩陣。兩個(gè)函數(shù)可以做到:
L = bwlabel(BW); L = double(BW);
注意:雖然這兩個(gè)函數(shù)從同一二值圖像產(chǎn)生不同的標(biāo)注矩陣,但是它們是等效的!例如:給出如下的二值矩陣BW,
1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1
bwlabel 創(chuàng)建一個(gè)包含兩個(gè)分別由整數(shù)1和2標(biāo)注的連續(xù)區(qū)域標(biāo)注矩陣
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 2
double 創(chuàng)建一個(gè)包含一個(gè)由整數(shù)1標(biāo)注的不連續(xù)區(qū)域標(biāo)注矩陣。
mylabel2 = double(BW) mylabel2 = 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1
regionprops 并不負(fù)責(zé)自動(dòng)轉(zhuǎn)換二值圖像數(shù)據(jù)類型,而是由你自己決定使用何種數(shù)據(jù)轉(zhuǎn)換方法來存儲(chǔ)自己想要的數(shù)據(jù)。
regionprops函數(shù)的擴(kuò)展思路
在regionprops函數(shù)的基礎(chǔ)上,你可以使用它提供的基本數(shù)據(jù)來擴(kuò)展它的功能,將區(qū)域的曲率數(shù)據(jù)和骨架數(shù)據(jù)作為它的另外屬性值來開發(fā),從而希望它能用來做更細(xì)致的特征提取。
總結(jié)
以上是生活随笔為你收集整理的matlab axis 用法,MATLAB中regionprops的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: udp计算机dll,Udp_Socket
- 下一篇: 计算机课件比赛总结,课件制作比赛活动总结