您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么使用Python實現統計圖像連通域”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
ndimage提供一系列函數,可以計算標注后的數組的相關特征,比如最值、均值、均方根等。
下列函數,如果未作其他說明,那么就有3個參數,分別是(input, labels=None, index=None),其中input為輸入數組;labels為input的標簽,形狀和input相同;index為整數或者整數數列,為用于計算的label。
函數 | 物理量 | 函數 | 物理量 |
---|---|---|---|
mean | 平均值 | center_of_mass | 質心 |
maximum | 最大值 | maximum_position | 最大值位置 |
minimum | 最小值 | minimum_position | 最小值位置 |
median | 中位數 | extrema | 最大值、最小值,及其位置 |
sum_labels | 求和 | ||
variance | 方差 | standard_deviation | 標準差 |
示例如下
import numpy as np import scipy.ndimage as sn x = np.random.randint(10, size=(3,3)) print(x) ''' [[0 3 5] [9 3 1] [1 5 7]] ''' sn.center_of_mass(x) # (1.1470588235294117, 1.088235294117647) sn.extrema(x) # (0, 9, (0, 0), (1, 0))
通過label函數,可以對數組中的連通區域進行標注,效果如下
from scipy.ndimage import label import numpy as np a = np.array([[0,0,1,1,0,0], [0,0,0,1,0,0], [1,1,0,0,1,0], [0,0,0,1,0,0]]) labels, N = label(a) print(labels) ''' [[0 0 1 1 0 0] [0 0 0 1 0 0] [2 2 0 0 3 0] [0 0 0 4 0 0]] ''' print(N) 4
在label函數中,還有一個用于規范何為“連通”的參數,即structure,其數據類型為二值數組,其維度與輸入的input相同。
在上面的示例中,連通域1,3,4盡管沒有上下左右的聯系,但在對角線上是有交集的,通過調整structure參數,可以提供一種將這三個區域連在一起的連通域方案。
stru = np.ones([3,3]) bLab, bN = label(a, stru) print(bLab) ‘'‘ [[0 0 1 1 0 0] [0 0 0 1 0 0] [2 2 0 0 1 0] [0 0 0 1 0 0]] '‘'
可見,這次只選出了兩組連通域。
前面提到的所有統計函數,形參都有三個,分別是input, labels, index,其中input為輸入數組,labels為將要處理的連通域,index為準備處理的連通域序號。
np.random.seed(42) test = np.random.rand(5,5) test[test<0.8] = 0 labels, N = sn.label(test) print(N) # 2 print(labels) # ‘'‘ [[0 1 0 0 0] [0 0 2 0 0] [0 2 2 0 0] [0 0 0 0 0] [0 0 0 0 0]] '‘' print(test) ‘'‘ [[0. 0.95071431 0. 0. 0. ] [0. 0. 0.86617615 0. 0. ] [0. 0.96990985 0.83244264 0. 0. ] [0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. ]] '‘'
接下來通過連通域統計函數,針對某個連通域進行計算
>>> sn.mean(test, labels, 1) 0.9507143064099162 >>> sn.mean(test, labels, 2) 0.8895095462457837 >>> sn.mean(test, labels, 0) 0.0
當index=1時,會找出labels中為1的位置,然后把test中這些位置的元素求平均。
“怎么使用Python實現統計圖像連通域”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。