scipy.ndimage.

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 時,用於 modeorigin 的任何元組都必須與 axes 的長度相符。這些元組中的第 i 個條目對應於 axes 中的第 i 個條目。

回傳:
resultndarray 陣列

inputweights 相關運算的結果。

另請參閱

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]])