用法:
cucim.skimage.measure.regionprops_table(label_image, intensity_image=None, properties=('label', 'bbox'), *, cache=True, separator='-', extra_properties=None)
計算圖像屬性並將它們作為pandas-compatible 表返回。
該表是將列名映射到值數組的字典。有關詳細信息,請參閱下麵的注釋部分。
0.16 版中的新函數。
- label_image:(N, M[, P]) 數組
標記的輸入圖像。值為 0 的標簽將被忽略。
- intensity_image:(M, N[, P][, C]) ndarray,可選
與標記圖像大小相同的強度(即輸入)圖像,以及可選的多通道數據的額外維度。默認為無。
在 0.18.0 版中更改:添加了為通道提供額外維度的函數。
- properties:str 的元組或列表,可選
將包含在結果字典中的屬性 有關可用屬性的列表,請參閱
regionprops()
。用戶應記住添加“label” 以跟蹤區域身份。- cache:布爾型,可選
確定是否緩存計算的屬性。緩存屬性的計算速度要快得多,而內存消耗會增加。
- separator:str,可選
對於OBJECT_COLUMNS 中未列出的非標量屬性,每個元素將出現在其自己的列中,該元素的索引與屬性名稱通過此分隔符分隔。例如,2D 區域的慣性張量將出現在四列中:
inertia_tensor-0-0
、inertia_tensor-0-1
、inertia_tensor-1-0
和inertia_tensor-1-1
(其中分隔符為-
)。對象列是不能以這種方式拆分的列,因為列數會根據對象而變化。例如,
image
和coords
。- extra_properties:可調用的迭代
添加不包含在 skimage 中的額外屬性計算函數。屬性的名稱是從函數名稱派生的,dtype 是通過在小樣本上調用函數來推斷的。如果額外屬性的名稱與現有屬性的名稱衝突,則額外屬性將不可見並發出 UserWarning。屬性計算函數必須將區域掩碼作為其第一個參數。如果屬性需要強度圖像,它必須接受強度圖像作為第二個參數。
- out_dict:dict
字典將屬性名稱映射到該屬性的一組值,每個區域一個值。該字典可用作 pandas
DataFrame
的輸入,以將屬性名稱映射到框架中的列,將區域映射到行。如果圖像沒有區域,則數組的長度為 0,但類型正確。
參數:
返回:
注意:
每列包含一個標量屬性、一個對象屬性或多維數組中的一個元素。
每個區域具有標量值的屬性(例如 “eccentricity”)將顯示為浮點數或 int 數組,其中該屬性名稱作為鍵。
給定圖像維度的多維屬性
of fixed size
,例如“centroid”(無論區域大小,每個質心在 3D 圖像中都將具有三個元素),將被拆分為多個列,名稱為 {property_name }{separator}{element_num}(用於 1D 屬性)、{property_name}{separator}{elem_num0}{separator}{elem_num1}(用於 2D 屬性)等等。對於沒有固定大小的多維屬性,例如“image”(區域的圖像大小因區域大小而異),將使用對象數組,以對應的屬性名稱作為鍵。
例子:
>>> from skimage import data, util, measure >>> image = data.coins() >>> label_image = measure.label(image > 110, connectivity=image.ndim) >>> props = measure.regionprops_table(label_image, image, ... properties=['label', 'inertia_tensor', ... 'inertia_tensor_eigvals']) >>> props {'label': array([ 1, 2, ...]), ... 'inertia_tensor-0-0': array([ 4.012...e+03, 8.51..., ...]), ... ..., 'inertia_tensor_eigvals-1': array([ 2.67...e+02, 2.83..., ...])}
生成的字典可以直接傳遞給 pandas(如果已安裝),以獲得幹淨的 DataFrame:
>>> import pandas as pd >>> data = pd.DataFrame(props) >>> data.head() label inertia_tensor-0-0 ... inertia_tensor_eigvals-1 0 1 4012.909888 ... 267.065503 1 2 8.514739 ... 2.834806 2 3 0.666667 ... 0.000000 3 4 0.000000 ... 0.000000 4 5 0.222222 ... 0.111111
[5 行 x 7 列]
如果我們想測量一個不是內置屬性的特性,我們可以定義自定義函數並將它們作為
extra_properties
傳遞。例如,我們可以創建一個自定義函數來測量一個區域的強度四分位數:>>> from skimage import data, util, measure >>> import numpy as np >>> def quartiles(regionmask, intensity): ... return np.percentile(intensity[regionmask], q=(25, 50, 75)) >>> >>> image = data.coins() >>> label_image = measure.label(image > 110, connectivity=image.ndim) >>> props = measure.regionprops_table(label_image, intensity_image=image, ... properties=('label',), ... extra_properties=(quartiles,)) >>> import pandas as pd >>> pd.DataFrame(props).head() label quartiles-0 quartiles-1 quartiles-2 0 1 117.00 123.0 130.0 1 2 111.25 112.0 114.0 2 3 111.00 111.0 111.0 3 4 111.00 111.5 112.5 4 5 112.50 113.0 114.0
相關用法
- Python cucim.skimage.measure.regionprops用法及代碼示例
- Python cucim.skimage.measure.label用法及代碼示例
- Python cucim.skimage.measure.moments_coords用法及代碼示例
- Python cucim.skimage.measure.moments_normalized用法及代碼示例
- Python cucim.skimage.measure.moments_central用法及代碼示例
- Python cucim.skimage.measure.moments_coords_central用法及代碼示例
- Python cucim.skimage.measure.perimeter用法及代碼示例
- Python cucim.skimage.measure.moments用法及代碼示例
- Python cucim.skimage.measure.centroid用法及代碼示例
- Python cucim.skimage.measure.moments_hu用法及代碼示例
- Python cucim.skimage.measure.profile_line用法及代碼示例
- Python cucim.skimage.measure.block_reduce用法及代碼示例
- Python cucim.skimage.morphology.dilation用法及代碼示例
- Python cucim.skimage.morphology.closing用法及代碼示例
- Python cucim.skimage.morphology.erosion用法及代碼示例
- Python cucim.skimage.morphology.white_tophat用法及代碼示例
- Python cucim.skimage.morphology.remove_small_holes用法及代碼示例
- Python cucim.skimage.morphology.black_tophat用法及代碼示例
- Python cucim.skimage.morphology.reconstruction用法及代碼示例
- Python cucim.skimage.morphology.remove_small_objects用法及代碼示例
注:本文由純淨天空篩選整理自rapids.ai大神的英文原創作品 cucim.skimage.measure.regionprops_table。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。