correlate#
- scipy.ndimage.correlate(input, weights, output=None, mode='reflect', cval=0.0, origin=0, *, axes=None)[source]#
多維相關性。
陣列與給定的核心進行相關運算。
- 參數:
- input類陣列
輸入陣列。
- weightsndarray 陣列
權重陣列,維度數量與輸入相同
- output陣列或 dtype,選填
要將輸出放置在其中的陣列,或是回傳陣列的 dtype。預設情況下,將會建立與輸入相同 dtype 的陣列。
- mode{‘reflect’, ‘constant’, ‘nearest’, ‘mirror’, ‘wrap’}, 選填
mode 參數決定輸入陣列如何在其邊界之外延伸。預設值為 ‘reflect’。每個有效值的行為如下
- ‘reflect’ (d c b a | a b c d | d c b a)
輸入會通過關於最後一個像素邊緣反射來延伸。此模式有時也稱為半樣本對稱。
- ‘constant’ (k k k k | a b c d | k k k k)
輸入會通過用相同的常數值(由 cval 參數定義)填充邊緣以外的所有值來延伸。
- ‘nearest’ (a a a a | a b c d | d d d d)
輸入會通過複製最後一個像素來延伸。
- ‘mirror’ (d c b | a b c d | c b a)
輸入會通過關於最後一個像素中心反射來延伸。此模式有時也稱為全樣本對稱。
- ‘wrap’ (a b c d | a b c d | a b c d)
輸入會通過環繞到相對邊緣來延伸。
為了與內插函數保持一致,也可以使用以下模式名稱
- ‘grid-mirror’
這是 ‘reflect’ 的同義詞。
- ‘grid-constant’
這是 ‘constant’ 的同義詞。
- ‘grid-wrap’
這是 ‘wrap’ 的同義詞。
- cval純量,選填
如果 mode 為 ‘constant’,則填充超出輸入邊緣的值。預設值為 0.0。
- origin整數或序列,選填
控制濾波器在輸入陣列像素上的放置。值 0(預設值)將濾波器置中於像素之上,正值將濾波器向左移動,負值向右移動。通過傳遞長度等於輸入陣列維度數量的原點序列,可以沿每個軸指定不同的偏移。
- axes整數或 None 的元組,選填
如果為 None,則沿所有軸對 input 進行濾波。否則,沿指定的軸對 input 進行濾波。當指定 axes 時,用於 mode 或 origin 的任何元組都必須與 axes 的長度相符。這些元組中的第 i 個條目對應於 axes 中的第 i 個條目。
- 回傳:
- resultndarray 陣列
input 與 weights 相關運算的結果。
另請參閱
convolve
將影像與核心進行卷積運算。
範例
相關性是將濾波器遮罩(通常稱為核心)在影像上移動並計算每個位置的乘積總和的過程。
>>> from scipy.ndimage import correlate >>> import numpy as np >>> input_img = np.arange(25).reshape(5,5) >>> print(input_img) [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19] [20 21 22 23 24]]
定義用於相關性的核心(權重)。在此範例中,它是用於中心以及上、下、左、右相鄰元素的總和。
>>> weights = [[0, 1, 0], ... [1, 1, 1], ... [0, 1, 0]]
我們可以計算相關性結果:例如,元素
[2,2]
是7 + 11 + 12 + 13 + 17 = 60
。>>> correlate(input_img, weights) array([[ 6, 10, 15, 20, 24], [ 26, 30, 35, 40, 44], [ 51, 55, 60, 65, 69], [ 76, 80, 85, 90, 94], [ 96, 100, 105, 110, 114]])