skimage.metrics#

對應影像的度量,例如距離度量、相似度等。

adapted_rand_error

計算 SNEMI3D 比賽定義的調整蘭德誤差。

contingency_table

傳回匹配分割中所有區域的列聯表。

hausdorff_distance

計算給定影像的非零元素之間的 Hausdorff 距離。

hausdorff_pair

傳回給定影像的非零元素之間 Hausdorff 距離的點對。

mean_squared_error

計算兩個影像之間的均方誤差。

normalized_mutual_information

計算正規化互信息 (NMI)。

normalized_root_mse

計算兩個影像之間的正規化均方根誤差 (NRMSE)。

peak_signal_noise_ratio

計算影像的峰值訊號雜訊比 (PSNR)。

structural_similarity

計算兩個影像之間的平均結構相似性指數。

variation_of_information

傳回與 VI 相關的對稱條件熵。


skimage.metrics.adapted_rand_error(image_true=None, image_test=None, *, table=None, ignore_labels=(0,), alpha=0.5)[原始碼]#

計算 SNEMI3D 比賽定義的調整蘭德誤差。 [1]

參數:
image_true整數的 ndarray

真值標籤影像,與 im_test 的形狀相同。

image_test整數的 ndarray

測試影像。

tablescipy.sparse 以 crs 格式表示的陣列,可選

使用 skimage.evaluate.contingency_table 建立的列聯表。如果為 None,則會即時計算。

ignore_labels整數序列,可選

要忽略的標籤。使用這些值標記的真值影像的任何部分都不會計入分數中。

alpha浮點數,可選

在調整蘭德誤差計算中,給予精確度和召回率的相對權重。

傳回:
are浮點數

調整蘭德誤差。

prec浮點數

調整蘭德精確度:這是測試標籤影像真值影像中具有相同標籤的像素對的數量,除以測試影像中的數量。

rec浮點數

調整蘭德召回率:這是測試標籤影像真值影像中具有相同標籤的像素對的數量,除以真值影像中的數量。

備註

真值分割中標籤為 0 的像素將在分數中忽略。

調整蘭德誤差的計算方式如下

\(1 - \frac{\sum_{ij} p_{ij}^{2}}{\alpha \sum_{k} s_{k}^{2} + (1-\alpha)\sum_{k} t_{k}^{2}}\),其中 \(p_{ij}\) 是像素在測試影像真值影像中具有相同標籤的機率,\(t_{k}\) 是像素在真值影像中具有標籤 \(k\) 的機率,而 \(s_{k}\) 是像素在測試影像中具有標籤 \(k\) 的機率。

預設行為是在調整蘭德誤差計算中,均等地權衡精確度和召回率。當 alpha = 0 時,調整蘭德誤差 = 召回率。當 alpha = 1 時,調整蘭德誤差 = 精確度。

參考文獻

[1]

Arganda-Carreras I, Turaga SC, Berger DR, 等人。(2015) 群眾外包建立連線體的影像分割演算法。Front. Neuroanat. 9:142。 DOI:10.3389/fnana.2015.00142

評估分割度量

評估分割度量

skimage.metrics.contingency_table(im_true, im_test, *, ignore_labels=None, normalize=False, sparse_type='matrix')[原始碼]#

傳回匹配分割中所有區域的列聯表。

參數:
im_true整數的 ndarray

真值標籤影像,與 im_test 的形狀相同。

im_test整數的 ndarray

測試影像。

ignore_labels整數序列,可選

要忽略的標籤。使用這些值標記的真值影像的任何部分都不會計入分數中。

normalize布林值

決定是否依像素計數正規化列聯表。

sparse_type{"matrix", "array"},可選

cont 的傳回類型,可以是 scipy.sparse.csr_arrayscipy.sparse.csr_matrix (預設)。

傳回:
contscipy.sparse.csr_matrix 或 scipy.sparse.csr_array

列聯表。cont[i, j] 將等於在 im_true 中標記為 i 且在 im_test 中標記為 j 的體素數量。視 sparse_type 而定,這可以當作 scipy.sparse.csr_array 傳回。


skimage.metrics.hausdorff_distance(image0, image1, method='standard')[原始碼]#

計算給定影像的非零元素之間的 Hausdorff 距離。

參數:
image0、image1ndarray

True 表示包含在點集中的點的陣列。兩個陣列都必須具有相同的形狀。

method{'standard'、'modified'},可選,預設值 = 'standard'

用於計算 Hausdorff 距離的方法。standard 是標準 Hausdorff 距離,而 modified 是修改後的 Hausdorff 距離。

傳回:
distance浮點數

使用歐幾里得距離,image0image1 中非零像素的坐標之間的 Hausdorff 距離。

備註

Hausdorff 距離 [1]image0 上任何點與 image1 上最接近的點之間的最大距離,反之亦然。Dubuisson 等人的以下研究 [2] 顯示,修改後的 Hausdorff 距離 (MHD) 的效能優於有向 Hausdorff 距離 (HD)。此函數會計算向前和向後平均距離,並傳回兩者中較大者。

參考文獻

[2]

M. P. Dubuisson 和 A. K. Jain。用於物件匹配的修改後的 Hausdorff 距離。在 ICPR94 中,第 A:566-568 頁,耶路撒冷,以色列,1994。 DOI:10.1109/ICPR.1994.576361 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.1.8155

範例

>>> points_a = (3, 0)
>>> points_b = (6, 0)
>>> shape = (7, 1)
>>> image_a = np.zeros(shape, dtype=bool)
>>> image_b = np.zeros(shape, dtype=bool)
>>> image_a[points_a] = True
>>> image_b[points_b] = True
>>> hausdorff_distance(image_a, image_b)
3.0

Hausdorff 距離

Hausdorff 距離

skimage.metrics.hausdorff_pair(image0, image1)[原始碼]#

傳回給定影像的非零元素之間 Hausdorff 距離的點對。

Hausdorff 距離 [1]image0 上任何點與 image1 上最接近的點之間的最大距離,反之亦然。

參數:
image0、image1ndarray

True 表示包含在點集中的點的陣列。兩個陣列都必須具有相同的形狀。

傳回:
point_a、point_b陣列

彼此之間具有 Hausdorff 距離的一對點。

參考文獻

範例

>>> points_a = (3, 0)
>>> points_b = (6, 0)
>>> shape = (7, 1)
>>> image_a = np.zeros(shape, dtype=bool)
>>> image_b = np.zeros(shape, dtype=bool)
>>> image_a[points_a] = True
>>> image_b[points_b] = True
>>> hausdorff_pair(image_a, image_b)
(array([3, 0]), array([6, 0]))

Hausdorff 距離

Hausdorff 距離

skimage.metrics.mean_squared_error(image0, image1)[原始碼]#

計算兩個影像之間的均方誤差。

參數:
image0、image1ndarray

影像。任何維度,都必須具有相同的形狀。

傳回:
mse浮點數

均方誤差 (MSE) 度量。

備註

在 0.16 版本中變更:此函數已從 skimage.measure.compare_mse 重新命名為 skimage.metrics.mean_squared_error

結構相似性索引

結構相似性索引

關於使用 J 不變性校準去噪器的完整教學課程

關於使用 J 不變性校準去噪器的完整教學課程

skimage.metrics.normalized_mutual_information(image0, image1, *, bins=100)[原始碼]#

計算正規化互信息 (NMI)。

\(A\)\(B\) 的正規化互信息量由下式給出:

.. math::

Y(A, B) = frac{H(A) + H(B)}{H(A, B)}

其中 \(H(X) := - \sum_{x \in X}{x \log x}\) 是熵。

Colin Studholme 及其同事提出此方法可用於影像配準 [1]。其值介於 1(完全不相關的影像值)到 2(完全相關的影像值,無論是正相關還是負相關)。

參數:
image0、image1ndarray

要比較的影像。兩個輸入影像必須具有相同的維度數量。

binsint 或 int 序列,選填

聯合直方圖每個軸的 bin 數量。

傳回:
nmifloat

兩個陣列之間的正規化互信息量,以 bins 給定的粒度計算。較高的 NMI 值表示輸入影像更相似。

引發:
ValueError

如果影像的維度數量不相同。

備註

如果兩個輸入影像的形狀不相同,則較小的影像會以零填充。

參考文獻

[1]

C. Studholme, D.L.G. Hill, & D.J. Hawkes (1999). An overlap invariant entropy measure of 3D medical image alignment. Pattern Recognition 32(1):71-86 DOI:10.1016/S0031-3203(98)00091-0


skimage.metrics.normalized_root_mse(image_true, image_test, *, normalization='euclidean')[原始碼]#

計算兩個影像之間的正規化均方根誤差 (NRMSE)。

參數:
image_truendarray

真實影像,與 im_test 具有相同的形狀。

image_testndarray

測試影像。

normalization{‘euclidean’, ‘min-max’, ‘mean’},選填

控制 NRMSE 分母中使用的正規化方法。文獻中沒有標準的正規化方法 [1]。此處可用的方法如下

  • ‘euclidean’:以 im_true 的平均歐幾里得範數進行正規化

    NRMSE = RMSE * sqrt(N) / || im_true ||
    

    其中 || . || 表示 Frobenius 範數,且 N = im_true.size。此結果等同於

    NRMSE = || im_true - im_test || / || im_true ||.
    
  • ‘min-max’:以 im_true 的強度範圍進行正規化。

  • ‘mean’:以 im_true 的平均值進行正規化

傳回:
nrmsefloat

NRMSE 指標。

備註

在 0.16 版本中變更: 此函式已從 skimage.measure.compare_nrmse 更名為 skimage.metrics.normalized_root_mse

參考文獻


skimage.metrics.peak_signal_noise_ratio(image_true, image_test, *, data_range=None)[原始碼]#

計算影像的峰值訊號雜訊比 (PSNR)。

參數:
image_truendarray

真實影像,與 im_test 具有相同的形狀。

image_testndarray

測試影像。

data_rangeint,選填

輸入影像的資料範圍(最小值和最大值之間的距離)。預設情況下,這是從影像資料類型估算的。

傳回:
psnrfloat

PSNR 指標。

備註

在 0.16 版本中變更: 此函式已從 skimage.measure.compare_psnr 更名為 skimage.metrics.peak_signal_noise_ratio

參考文獻

使用簡單的影像拼接組裝影像

使用簡單的影像拼接組裝影像

平移不變小波去噪

平移不變小波去噪

用於保留紋理的非局部均值去噪

用於保留紋理的非局部均值去噪

小波去噪

小波去噪

關於使用 J 不變性校準去噪器的完整教學課程

關於使用 J 不變性校準去噪器的完整教學課程

skimage.metrics.structural_similarity(im1, im2, *, win_size=None, gradient=False, data_range=None, channel_axis=None, gaussian_weights=False, full=False, **kwargs)[原始碼]#

計算兩個影像之間的平均結構相似性索引。請注意浮點影像的 data_range 參數。

參數:
im1, im2ndarray

影像。具有相同形狀的任何維度。

win_sizeint 或 None,選填

比較中使用的滑動視窗的邊長。必須是奇數值。如果 gaussian_weights 為 True,則會忽略此值,視窗大小將取決於 sigma

gradientbool,選填

如果為 True,則也傳回相對於 im2 的梯度。

data_rangefloat,選填

輸入影像的資料範圍(最大值和最小值之間的差異)。預設情況下,這是從影像資料類型估算的。此估計對於浮點影像資料可能不正確。因此,建議始終明確傳遞此純量值(請參閱以下說明)。

channel_axisint 或 None,選填

如果為 None,則假設影像為灰階(單通道)影像。否則,此參數指示陣列的哪個軸對應於通道。

在 0.19 版本中新增: 在 0.19 版本中新增了 channel_axis

gaussian_weightsbool,選填

如果為 True,則每個 patch 的平均值和變異數會在空間上由寬度 sigma=1.5 的正規化高斯核心加權。

fullbool,選填

如果為 True,則也傳回完整的結構相似性影像。

傳回:
mssimfloat

影像上的平均結構相似性索引。

gradndarray

im1 和 im2 之間結構相似性的梯度 [2]。僅當 gradient 設定為 True 時,才會傳回此值。

Sndarray

完整的 SSIM 影像。僅當 full 設定為 True 時,才會傳回此值。

其他參數:
use_sample_covariancebool

如果為 True,則以 N-1 而非 N 來正規化共變異數,其中 N 是滑動視窗內的像素數量。

K1float

演算法參數,K1(小常數,請參閱 [1])。

K2float

演算法參數,K2(小常數,請參閱 [1])。

sigmafloat

gaussian_weights 為 True 時,高斯函數的標準差。

備註

如果未指定 data_range,則會根據影像資料類型自動猜測範圍。但是,對於浮點影像資料,此估計會產生所需範圍值的兩倍,因為 skimage.util.dtype.py 中的 dtype_range 定義的間隔為 -1 到 +1。這會產生 2 的估計值,而不是 1,這在使用影像資料時最常需要(因為負光強度沒有意義)。在使用類似 YCbCr 的色彩資料時,請注意這些範圍在每個通道中都不同(Cb 和 Cr 的範圍是 Y 的兩倍),因此不能使用單次呼叫此函式來計算通道平均 SSIM,因為假設每個通道的範圍都相同。

若要符合 Wang 等人的實作 [1],請將 gaussian_weights 設定為 True,sigma 設定為 1.5,use_sample_covariance 設定為 False,並指定 data_range 引數。

在 0.16 版本中變更: 此函式已從 skimage.measure.compare_ssim 更名為 skimage.metrics.structural_similarity

參考文獻

[1] (1,2,3)

Wang, Z., Bovik, A. C., Sheikh, H. R., & Simoncelli, E. P. (2004). 影像品質評估:從誤差可見性到結構相似性。(Image quality assessment: From error visibility to structural similarity). IEEE 影像處理期刊, 13, 600-612. https://ece.uwaterloo.ca/~z70wang/publications/ssim.pdf, DOI:10.1109/TIP.2003.819861

[2]

Avanaki, A. N. (2009). 為結構相似性優化的精確全域直方圖規範。(Exact global histogram specification optimized for structural similarity). 光學評論, 16, 613-621. arXiv:0901.0065 DOI:10.1007/s10043-009-0119-z

結構相似性索引

結構相似性索引

skimage.metrics.variation_of_information(image0=None, image1=None, *, table=None, ignore_labels=())[原始碼]#

回傳與資訊變異相關的對稱條件熵。[1]

資訊變異定義為 VI(X,Y) = H(X|Y) + H(Y|X)。如果 X 是真實分割,則 H(X|Y) 可以解釋為欠分割的量,而 H(Y|X) 可以解釋為過分割的量。換句話說,完美的過分割將會使 H(X|Y)=0,而完美的欠分割將會使 H(Y|X)=0。

參數:
image0, image1int 類型 ndarray

標籤影像/分割,必須具有相同的形狀。

tablescipy.sparse 稀疏陣列,採用 csr 格式,可選

使用 skimage.evaluate.contingency_table 建立的列聯表。如果為 None,則會使用 skimage.evaluate.contingency_table 計算。如果提供,則會從此表計算熵,並忽略任何影像。

ignore_labels整數序列,可選

要忽略的標籤。使用這些值標記的真值影像的任何部分都不會計入分數中。

傳回:
vifloat 類型 ndarray,形狀 (2,)

image1|image0 和 image0|image1 的條件熵。

參考文獻

[1]

Marina Meilă (2007), 比較聚類—基於資訊的距離, 多變量分析期刊, 第 98 卷,第 5 期,第 873-895 頁, ISSN 0047-259X, DOI:10.1016/j.jmva.2006.11.013

評估分割度量

評估分割度量