scipy.ndimage.

affine_transform#

scipy.ndimage.affine_transform(input, matrix, offset=0.0, output_shape=None, output=None, order=3, mode='constant', cval=0.0, prefilter=True)[原始碼]#

套用仿射轉換。

給定輸出影像像素索引向量 o,像素值由輸入影像在位置 np.dot(matrix, o) + offset 決定。

這執行「拉取」(或「反向」)重新取樣,將輸出空間轉換到輸入以定位資料。仿射轉換通常以「推播」(或「正向」)方向描述,將輸入轉換到輸出。如果您有「推播」轉換的矩陣,請在此函數中使用其反矩陣 (numpy.linalg.inv)。

參數:
inputarray_like

輸入陣列。

matrixndarray

反向座標轉換矩陣,將輸出座標映射到輸入座標。如果 ndiminput 的維度數,則給定的矩陣必須具有以下形狀之一

  • (ndim, ndim):每個輸出座標的線性轉換矩陣。

  • (ndim,):假設 2D 轉換矩陣是對角的,對角線由給定值指定。然後使用更有效率的演算法,利用問題的可分離性。

  • (ndim + 1, ndim + 1):假設轉換是使用齊次座標指定的 [1]。在這種情況下,傳遞給 offset 的任何值都會被忽略。

  • (ndim, ndim + 1):如上,但齊次轉換矩陣的底行始終為 [0, 0, ..., 1],並且可以省略。

offsetfloat 或 sequence,可選

轉換應用於陣列的偏移量。如果為 float,offset 對於每個軸都相同。如果為 sequence,offset 應包含每個軸一個值。

output_shapetuple of ints,可選

形狀元組。

outputarray 或 dtype,可選

放置輸出的陣列,或返回陣列的 dtype。預設情況下,將建立與輸入相同 dtype 的陣列。

orderint,可選

樣條插值的階數,預設為 3。階數必須在 0-5 範圍內。

mode{‘reflect’, ‘grid-mirror’, ‘constant’, ‘grid-constant’, ‘nearest’, ‘mirror’, ‘grid-wrap’, ‘wrap’},可選

mode 參數決定輸入陣列如何在其邊界之外延伸。預設值為 ‘constant’。每個有效值的行為如下(請參閱 邊界模式 上的其他圖和詳細資訊)

‘reflect’ (d c b a | a b c d | d c b a)

輸入透過在最後一個像素的邊緣反射來延伸。此模式有時也稱為半樣本對稱。

‘grid-mirror’

這是 ‘reflect’ 的同義詞。

‘constant’ (k k k k | a b c d | k k k k)

輸入透過用相同的常數值填充邊緣之外的所有值來延伸,常數值由 cval 參數定義。在輸入邊緣之外不執行插值。

‘grid-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)

輸入透過在最後一個像素的中心反射來延伸。此模式有時也稱為全樣本對稱。

‘grid-wrap’ (a b c d | a b c d | a b c d)

輸入透過環繞到相對邊緣來延伸。

‘wrap’ (d b c d | a b c d | b c a b)

輸入透過環繞到相對邊緣來延伸,但方式使得最後一點和初始點完全重疊。在這種情況下,在重疊點選擇哪個樣本未明確定義。

cvalscalar,可選

如果 mode 為 ‘constant’,則填充輸入邊緣過去的值。預設值為 0.0。

prefilterbool,可選

決定是否在插值之前使用 spline_filter 預先過濾輸入陣列。預設值為 True,如果 order > 1,這將建立一個暫時的 float64 過濾值陣列。如果將此設定為 False,則如果 order > 1,輸出將會稍微模糊,除非輸入已預先過濾,即它是呼叫 spline_filter 於原始輸入的結果。

返回:
affine_transformndarray

轉換後的輸入。

註解

給定的矩陣和偏移量用於找到輸出中每個點在輸入中的對應座標,透過仿射轉換。輸入在這些座標處的值由請求階數的樣條插值決定。輸入邊界外的點根據給定模式填充。

在版本 0.18.0 中變更:先前,仿射轉換的確切解釋取決於矩陣是以 1D 陣列還是 2D 陣列形式提供。如果將 1D 陣列提供給 matrix 參數,則索引 o 處的輸出像素值由位置 matrix * (o + offset) 處的輸入影像決定。

對於複數值 input,此函數獨立轉換實部和虛部。

在版本 1.6.0 中新增:新增複數值支援。

參考文獻