scipy.ndimage.

zoom#

scipy.ndimage.zoom(input, zoom, output=None, order=3, mode='constant', cval=0.0, prefilter=True, *, grid_mode=False)[source]#

縮放陣列。

陣列會使用所請求階數的 spline 插值進行縮放。

參數:
inputarray_like

輸入陣列。

zoomfloat 或 sequence

沿軸的縮放因子。如果為 float,則 zoom 對於每個軸都相同。如果為 sequence,則 zoom 應包含每個軸的一個值。

outputarray 或 dtype,可選

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

orderint,可選

spline 插值的階數,預設值為 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 的結果。

grid_modebool,可選

如果為 False,則縮放像素中心之間的距離。否則,使用包括完整像素範圍的距離。例如,當 grid_mode 為 False 時,長度為 5 的 1 維訊號被認為長度為 4,但當 grid_mode 為 True 時,長度為 5。請參閱以下視覺圖示

| pixel 1 | pixel 2 | pixel 3 | pixel 4 | pixel 5 |
     |<-------------------------------------->|
                        vs.
|<----------------------------------------------->|

上圖中箭頭的起點對應於每種模式下的座標位置 0。

返回:
zoomndarray

縮放後的輸入。

註解

對於複數值 input,此函數會獨立縮放實部和虛部。

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

範例

>>> from scipy import ndimage, datasets
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> ax1 = fig.add_subplot(121)  # left side
>>> ax2 = fig.add_subplot(122)  # right side
>>> ascent = datasets.ascent()
>>> result = ndimage.zoom(ascent, 3.0)
>>> ax1.imshow(ascent, vmin=0, vmax=255)
>>> ax2.imshow(result, vmin=0, vmax=255)
>>> plt.show()
../../_images/scipy-ndimage-zoom-1_00_00.png
>>> print(ascent.shape)
(512, 512)
>>> print(result.shape)
(1536, 1536)