regionprops

Matlab圖像處理函數(shù):regionprops

這里給出在Matlab圖像處理工具箱中非常重要的一個圖像分析函數(shù):regionprops声离。顧名思義:它的用途是get the properties of region勉躺,即用來度量圖像區(qū)域?qū)傩缘暮瘮?shù)。

語法

STATS = regionprops(L,properties)

描述

測量標注矩陣L中每一個標注區(qū)域的一系列屬性更扁。L中不同的正整數(shù)元素對應不同的區(qū)域,例如:L中等于整數(shù)1的元素對應區(qū)域1赫冬;L中等于整數(shù)2的元素對應區(qū)域2浓镜;以此類推。返回值STATS是一個長度為max(L(:))的結(jié)構(gòu)數(shù)組劲厌,結(jié)構(gòu)數(shù)組的相應域定義了每一個區(qū)域相應屬性下的度量膛薛。properties 可以是由逗號分割的字符串列表、飽含字符串的單元數(shù)組补鼻、單個字符串 'all' 或者 'basic'哄啄。如果 properties 等于字符串 'all'雅任,則所有下述字串列表中的度量數(shù)據(jù)都將被計算,如果 properties 沒有指定或者等于 'basic'咨跌,則屬性: 'Area', 'Centroid', 和 'BoundingBox' 將被計算沪么。下面的列表就是所有有效的屬性字符串,它們大小寫敏感并且可以縮寫锌半。
屬性字符串列表:
| Area | EquivDiameter
| MajorAxisLength
|
| BoundingBox
| EulerNumber
| MinorAxisLength
|
| Centroid
| Extent
| Orientation
|
| ConvexArea
| Extrema
| PixelIdxList
|
| ConvexHull
| FilledArea
| PixelList
|
| ConvexImage
| FilledImage
| Solidity
|
| Eccentricity
| Image
|
|

屬性詳細定義

本部分將結(jié)合一個具體的例子說明各種字串相關屬性的意義禽车,矩陣取自在蟻蛉模式識別中做過預處理后的斑紋分割圖像,如下圖:

image.png

這是一幅二值圖像拳喻,在應用regionprops函數(shù)之前必須將其標注哭当,可以調(diào)用 bwlabel函數(shù)和偽彩色處理,標注后的圖像如下圖:


image.png

下面基于以上的材料來考察屬性的含義冗澈。

'Area'

是標量钦勘,計算出在圖像各個區(qū)域中像素總個數(shù)。注意:這個數(shù)值可能與由函數(shù) bwarea 計算的值有輕微的不同亚亲。對于這樣一個數(shù)值彻采,我們可以使用它除以整個圖像區(qū)域的像素個數(shù)而得到斑紋比例,可以作為模式識別的候選特征捌归,并且這個特征是仿射不變的肛响。在本例中最后計算出的面積向量是
[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列的向量,即包含相應區(qū)域的最小矩形惜索。BoundingBox 形式為 [ul_corner width]特笋,這里 ul_corner 以 [x y z ...] 的坐標形式給出邊界盒子的左上角、boxwidth 以 [x_width y_width ...] 形式指出邊界盒子沿著每個維數(shù)方向的長度巾兆。本例的各部分區(qū)域最小矩形如下圖猎物!注意:請在這熟悉一下函數(shù)rectangle的使用方法。


image.png

'Centroid'

是1行ndims(L)列的向量角塑,給出每個區(qū)域的質(zhì)心(重心)蔫磨。 注意:Centroid 的第一個元素是重心水平坐標(x坐標)、第二個元素是重心垂直坐標(y坐標)圃伶。Centroid 所有其它元素則按照維順序排列堤如。下圖采用以中心為圓心的小圓來演示質(zhì)心檢測的效果:


image.png

圖中各質(zhì)心坐標(標準化后的)依次為:
(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'

是標量,與區(qū)域具有相同標準二階中心矩的橢圓的長軸長度(像素意義下)窒朋。本屬性只支持二維標注矩陣搀罢。

'MinorAxisLength'

是標量,與區(qū)域具有相同標準二階中心矩的橢圓的短軸長度(像素意義下)侥猩。本屬性只支持二維標注矩陣揖膜。

'Eccentricity'

是標量耸别,與區(qū)域具有相同標準二階中心矩的橢圓的離心率(可作為特征)。本屬性只支持二維標注矩陣窘拯。

'Orientation'

是標量,與區(qū)域具有相同標準二階中心矩的橢圓的長軸與x軸的交角(度)。本屬性只支持二維標注矩陣。
本例的各區(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
我們可以考察離心率的變化趨勢,得到對于整個區(qū)域中的各區(qū)域的似圓性如何的大致感覺彩匕,比如下圖是12個區(qū)域的離心率變化情形:

image.png

由上圖可以看出區(qū)域整體的似圓性并不好,實際上可以考慮使用離心率向量作為一個模式識別的特征C角驼仪!

'Image'

二值圖像,與某區(qū)域具有相同大小的邏輯矩陣袜漩。你可以用這個屬性直接將每個子區(qū)域提取出來绪爸,然后再作相應的處理!比如本例的第一個斑紋區(qū)域提出后是:
image.png

'FilledImage'

與上相同宙攻,唯一區(qū)別是這是個做了填充的邏輯矩陣奠货!!


image.png

本例中和上面的沒有區(qū)別,只有區(qū)域有空洞時才有明顯差別座掘。

'FilledArea'

是標量递惋,填充區(qū)域圖像中的 on 像素個數(shù)。

'ConvexHull'

是p行2列的矩陣溢陪,包含某區(qū)域的最小凸多邊形萍虽。此矩陣的每一行存儲此多邊形一個頂點的xy坐標。此屬性只支持2維標注矩陣形真。例如:本例中的所有子區(qū)域的最小凸多邊形圖形如下圖


image.png

看看第2個區(qū)域的大圖:


image.png

'ConvexImage'

二值圖像杉编,用來畫出上述的區(qū)域最小凸多邊形。同時此凸包內(nèi)的像素均打開咆霜,圖像尺寸和此區(qū)域?qū)吔缇匦蜗嗤醪啤4藢傩灾恢С?維標注矩陣。例如:本例中的第2個子區(qū)域的最小凸多邊形圖形為
image.png

裕便。注意:此處函數(shù)roipoly很有用!

'ConvexArea'

是標量见咒,填充區(qū)域凸多邊形圖像中的 on 像素個數(shù)偿衰。

'EulerNumber'

是標量,幾何拓撲中的一個拓撲不變量--歐拉數(shù)改览,等于圖像中目標個數(shù)減去這些目標中空洞的個數(shù)下翎。此屬性只支持2維標注矩陣。本例中的歐拉數(shù)均為1宝当。

'Extrema'

8行2列矩陣视事,八方向區(qū)域極值點。矩陣每行存儲這些點的xy坐標庆揩,向量格式為 [top-left top-right right-top right-bottom bottom-right bottom-left left-bottom left-top]俐东。此屬性只支持2維標注矩陣跌穗。

'EquivDiameter'

是標量,等價直徑:與區(qū)域具有相同面積的圓的直徑虏辫。計算公式為:sqrt(4*Area/pi)蚌吸。. 此屬性只支持2維標注矩陣。本例標準化后的12區(qū)域直徑向量為:

'Solidity'

是標量砌庄,同時在區(qū)域和其最小凸多邊形中的像素比例羹唠。計算公式為:Area/ConvexArea,這也是個仿射特征娄昆,實際上反映出區(qū)域的固靠性程度佩微。此屬性只支持2維標注矩陣。本例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'

是標量萌焰,同時在區(qū)域和其最小邊界矩形中的像素比例哺眯。計算公式為:Area除以邊界矩形面積,這也是個仿射特征杆怕,實際上反映出區(qū)域的擴展范圍程度族购。此屬性只支持2維標注矩陣。不再給出計算結(jié)果A暾洹寝杖!

'PixelIdxList'

p元向量,存儲區(qū)域像素的索引下標互纯。

'PixelList'

p行ndims(L)列矩陣瑟幕,存儲上述索引對應的像素坐標。

支持類

輸入的標注矩陣L可以有任意的數(shù)值類型留潦。

提醒

使用逗號分割列表語法

當你基于regionprops函數(shù)的輸出作算法設計時只盹,使用逗號分割列表語法就凸顯出其非常的價值。例如:對于一個存儲標量的屬性兔院,可以利用此語法創(chuàng)建一個包含圖像中不同區(qū)域內(nèi)此屬性值的向量殖卑。例如以下兩句是等價的:

stats(1).Area, stats(2).Area, ..., stats(end).Area
stats.Area
因此,可以使用下面的方法創(chuàng)建相應的向量:
regionprops(L,'Area'); allArea = [stats.Area];

allArea 就是一個與結(jié)構(gòu)數(shù)組 stats 具備相同長度的向量坊萝。

基于特定原則的區(qū)域選擇

當你要基于特定準則條件選擇某個區(qū)域時孵稽,將函數(shù) ismember 和 regionprops 聯(lián)合使用是很有用處的。例如:創(chuàng)建一個只包含面積大于80的二值圖像十偶,用以下命令
idx = find([stats.Area] > 80); BW2 = ismember(L,idx);

計算性能考慮

大多數(shù)的屬性測量計算時間都非常地少菩鲜,除了那些非常依賴于圖像L中區(qū)域個數(shù)和像素個數(shù)的屬性。例如:
'ConvexHull' 'ConvexImage' 'ConvexArea' 'FilledImage'

另外建議一次性計算所有屬性值惦积,因為分開計算和一起計算時間相差無幾接校!

使用二值圖像工作

在調(diào)用regionprops之前必須將二值圖像轉(zhuǎn)變?yōu)闃俗⒕仃嚒蓚€函數(shù)可以做到:
L = bwlabel(BW); L = double(BW);
注意:雖然這兩個函數(shù)從同一二值圖像產(chǎn)生不同的標注矩陣狮崩,但是它們是等效的蛛勉!例如:給出如下的二值矩陣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)建一個包含兩個分別由整數(shù)1和2標注的連續(xù)區(qū)域標注矩陣

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)建一個包含一個由整數(shù)1標注的不連續(xù)區(qū)域標注矩陣。
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 并不負責自動轉(zhuǎn)換二值圖像數(shù)據(jù)類型董习,而是由你自己決定使用何種數(shù)據(jù)轉(zhuǎn)換方法來存儲自己想要的數(shù)據(jù)烈和。

regionprops函數(shù)的擴展思路

在regionprops函數(shù)的基礎上,你可以使用它提供的基本數(shù)據(jù)來擴展它的功能皿淋,將區(qū)域的曲率數(shù)據(jù)和骨架數(shù)據(jù)作為它的另外屬性值來開發(fā)招刹,從而希望它能用來做更細致的特征提取。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窝趣,一起剝皮案震驚了整個濱河市疯暑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哑舒,老刑警劉巖妇拯,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異洗鸵,居然都是意外死亡越锈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門膘滨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甘凭,“玉大人,你說我怎么就攤上這事火邓〉と酰” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵铲咨,是天一觀的道長躲胳。 經(jīng)常有香客問我,道長纤勒,這世上最難降的妖魔是什么坯苹? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮摇天,結(jié)果婚禮上粹湃,老公的妹妹穿的比我還像新娘。我一直安慰自己闸翅,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布菊霜。 她就那樣靜靜地躺著坚冀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鉴逞。 梳的紋絲不亂的頭發(fā)上记某,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天司训,我揣著相機與錄音,去河邊找鬼液南。 笑死壳猜,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的滑凉。 我是一名探鬼主播统扳,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼畅姊!你這毒婦竟也來了咒钟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤若未,失蹤者是張志新(化名)和其女友劉穎朱嘴,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粗合,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡萍嬉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了隙疚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壤追。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡甚淡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贯卦,到底是詐尸還是另有隱情,我是刑警寧澤撵割,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布贿堰,位于F島的核電站,受9級特大地震影響啡彬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜庶灿,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望往踢。 院中可真熱鬧腾誉,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猪贪。三九已至,卻和暖如春热押,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背楞黄。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留肿仑,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓尤慰,卻偏偏與公主長得像雷蹂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子匪煌,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354