當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python cucim.skimage.measure.regionprops用法及代碼示例


用法:

cucim.skimage.measure.regionprops(label_image, intensity_image=None, cache=True, coordinates=None, *, extra_properties=None)

測量標記圖像區域的屬性。

參數

label_image(M, N[, P]) 數組

標記的輸入圖像。值為 0 的標簽將被忽略。

在 0.14.1 版中更改:之前,label_image被處理numpy.squeeze因此允許任意數量的單件維度。這導致對具有單一尺寸的圖像的處理不一致。要恢複舊行為,請使用regionprops(np.squeeze(label_image), ...).

intensity_image(M, N[, P][, C]) ndarray,可選

與標記圖像大小相同的強度(即輸入)圖像,以及可選的多通道數據的額外維度。默認為無。

在 0.18.0 版中更改:添加了為通道提供額外維度的函數。

cache布爾型,可選

確定是否緩存計算的屬性。緩存屬性的計算速度要快得多,而內存消耗會增加。

coordinatesDEPRECATED

此參數已棄用,並將在 scikit-image 的未來版本中刪除。

有關詳細信息,請參閱Coordinate conventions

自 0.16.0 版起已棄用:到處使用“rc” 坐標。調用可能就足夠了numpy.transpose在您的標簽圖像上獲得與 0.15 及更早版本相同的值。但是,對於某些屬性,轉換將不那麽簡單。例如,新的方向是\(\frac{\pi}{2}\) 加上舊的方向。

extra_properties可調用的迭代

添加不包含在 skimage 中的額外屬性計算函數。屬性的名稱是從函數名稱派生的,dtype 是通過在小樣本上調用函數來推斷的。如果額外屬性的名稱與現有屬性的名稱衝突,則額外屬性將不可見並發出 UserWarning。屬性計算函數必須將區域掩碼作為其第一個參數。如果屬性需要強度圖像,它必須接受強度圖像作為第二個參數。

返回

propertiesRegionProperties列表

每個項目說明一個帶標簽的區域,並且可以使用下麵列出的屬性進行訪問。

注意

以下屬性可以作為屬性或鍵訪問:

區域int

區域的像素數。

盒子元組

邊界框 (min_row, min_col, max_row, max_col) 。屬於邊界框的像素位於半開區間 [min_row; max_row)[min_col; max_col) 中。

bbox_areaint

邊界框的像素數。

質心數組

質心坐標元組 (row, col)

convex_areaint

凸包圖像的像素數,它是包圍該區域的最小凸多邊形。

convex_image(H, J) ndarray

與邊界框大小相同的二進製凸包圖像。

坐標(N, 2) 數組

該區域的坐標列表(row, col)

偏心浮點數

與區域具有相同second-moments 的橢圓的偏心率。偏心率是焦距(焦點之間的距離)與長軸長度之比。該值在區間 [0, 1) 中。為 0 時,橢圓變為圓形。

equivalent_diameter浮點數

與區域麵積相同的圓的直徑。

euler_numberint

非零像素集合的歐拉特性。計算為連接組件數減去孔數(input.ndim 連通性)。在 3D 中,連接組件的數量加上孔的數量減去隧道的數量。

程度浮點數

區域中的像素與總邊界框中的像素之比。計算為area / (rows * cols)

feret_diameter_max浮點數

最大 Feret 直徑計算為區域凸包輪廓周圍點之間的最長距離,由 find_contours 確定。 [5]

filled_areaint

該區域的像素數將所有的洞都填滿。說明filled_image的區域。

filled_image(H, J) ndarray

具有與邊界框相同大小的填充孔的二進製區域圖像。

圖片(H, J) ndarray

與邊界框大小相同的切片二值區域圖像。

inertia_tensorndarray

圍繞其質量旋轉的區域的慣性張量。

inertia_tensor_eigvals元組

慣性張量的特征值按降序排列。

intensity_imagendarray

區域邊界框內的圖像。

標簽int

帶標簽的輸入圖像中的標簽。

local_centroid數組

質心坐標元組 (row, col) ,相對於區域邊界框。

major_axis_length浮點數

具有與區域相同的歸一化第二中心矩的橢圓長軸的長度。

max_intensity浮點數

該地區強度最大的值。

mean_intensity浮點數

該區域的平均強度值。

min_intensity浮點數

該區域中強度最小的值。

minor_axis_length浮點數

具有與區域相同的歸一化第二中心矩的橢圓短軸的長度。

時刻(3, 3) 數組

高達三階的空間矩:

m_ij = sum{ array(row, col) * row^i * col^j }

其中總和超過該區域的 rowcol 坐標。

moments_central(3, 3) 數組

最高 3 階的中心矩(平移不變):

mu_ij = sum{ array(row, col) * (row - row_c)^i * (col - col_c)^j }

其中總和超過區域的rowcol坐標,row_ccol_c是區域質心的坐標。

moments_hu元組

Hu 矩(平移、縮放和旋轉不變)。

moments_normalized(3, 3) 數組

歸一化矩(平移和尺度不變)高達 3 階:

nu_ij = mu_ij / m_00^[(i+j)/2 + 1]

其中m_00 是第零個空間矩。

方向浮點數

第 0 軸(行)與具有與該區域相同的秒矩的橢圓長軸之間的角度,逆時針範圍從 -pi/2pi/2

周長浮點數

使用 4 連接將輪廓近似為通過邊界像素中心的線的對象周長。

perimeter_crofton浮點數

由 Crofton 公式在 4 個方向上近似的物體周長。

切片元組

從源圖像中提取對象的切片。

堅固性浮點數

區域中的像素與凸包圖像的像素之比。

weighted_centroid數組

用強度圖像加權的質心坐標元組(row, col)

weighted_local_centroid數組

質心坐標元組(row, col),相對於區域邊界框,用強度圖像加權。

weighted_moments(3, 3) 數組

高達 3 階的強度圖像的空間矩:

wm_ij = sum{ array(row, col) * row^i * col^j }

其中總和超過該區域的 rowcol 坐標。

weighted_moments_central(3, 3) 數組

高達 3 階的強度圖像的中心矩(平移不變):

wmu_ij = sum{ array(row, col) * (row - row_c)^i * (col - col_c)^j }

其中總和超過區域的rowcol坐標,row_ccol_c是區域加權質心的坐標。

weighted_moments_hu元組

強度圖像的 Hu 矩(平移、縮放和旋轉不變)。

weighted_moments_normalized(3, 3) 數組

高達 3 階的強度圖像的歸一化矩(平移和尺度不變):

wnu_ij = wmu_ij / wm_00^[(i+j)/2 + 1]

其中wm_00是第零空間矩(intensity-weighted區域)。

每個區域還支持迭代,這樣你就可以做到:

for prop in region:
    print(prop, region[prop])

參考

1

Wilhelm Burger, Mark Burge. Principles of Digital Image Processing: Core Algorithms. Springer-Verlag, London, 2009.

2

B. Jähne. Digital Image Processing. Springer-Verlag, Berlin-Heidelberg, 6. edition, 2005.

3

T. H. Reiss. Recognizing Planar Objects Using Invariant Image Features, from Lecture notes in computer science, p. 676. Springer, Berlin, 1993.

4

https://en.wikipedia.org/wiki/Image_moment

5

W. Pabst, E. Gregorová. Characterization of particles and particle systems, pp. 27-28. ICT Prague, 2007. https://old.vscht.cz/sil/keramika/Characterization_of_particles/CPPS%20_English%20version_.pdf

例子

>>> from skimage import data, util
>>> from cucim.skimage.measure import label, regionprops
>>> img = cp.asarray(util.img_as_ubyte(data.coins()) > 110)
>>> label_img = label(img, connectivity=img.ndim)
>>> props = regionprops(label_img)
>>> # centroid of first labeled object
>>> props[0].centroid
(22.72987986048314, 81.91228523446583)
>>> # centroid of first labeled object
>>> props[0]['centroid']
(22.72987986048314, 81.91228523446583)

通過將函數傳遞為 extra_properties 添加自定義測量

>>> from skimage import data, util
>>> from cucim.skimage.measure import label, regionprops
>>> import numpy as np
>>> img = cp.asarray(util.img_as_ubyte(data.coins()) > 110)
>>> label_img = label(img, connectivity=img.ndim)
>>> def pixelcount(regionmask):
...     return np.sum(regionmask)
>>> props = regionprops(label_img, extra_properties=(pixelcount,))
>>> props[0].pixelcount
7741
>>> props[1]['pixelcount']
42

相關用法


注:本文由純淨天空篩選整理自rapids.ai大神的英文原創作品 cucim.skimage.measure.regionprops。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。