scipy.ndimage.interpolation.zoom

weixin_41874599發表於2018-11-30

參考:https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.ndimage.interpolation.zoom.html

功能是縮放陣列,即使用order順序的樣條插值來縮放陣列。

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

Zoom an array.

input:輸入陣列

zoom:型別為float或sequence,沿軸的縮放係數。 如果float,每個軸的縮放是相同的。 如果sequence,zoom應包含每個軸的一個值。

output:放置輸出的陣列,或返回陣列的dtype

order:樣條插值的順序,預設為3.順序必須在0-5範圍內。

輸入為 array([[0., 1., 2.],
       [1., 2., 3.],
       [2., 3., 4.]], dtype=float32))

當order=3時,使用三次插值重新取樣2倍:

輸出為:array([[0.6666667, 0.8053333, 1.136    , 1.5306667, 1.8613334, 2.       ],
       [0.8053333, 0.944    , 1.2746667, 1.6693333, 2.       , 2.1386666],
       [1.136    , 1.2746667, 1.6053333, 2.       , 2.3306668, 2.4693334],
       [1.5306667, 1.6693333, 2.       , 2.3946667, 2.7253335, 2.864    ],
       [1.8613334, 2.       , 2.3306668, 2.7253335, 3.056    , 3.1946666],
       [2.       , 2.1386666, 2.4693334, 2.864    , 3.1946666, 3.3333333]],
      dtype=float32))

當order=0時,使用最近插值重新取樣2倍:

輸出為:array([[0., 0., 1., 1., 2., 2.],
       [0., 0., 1., 1., 2., 2.],
       [1., 1., 2., 2., 3., 3.],
       [1., 1., 2., 2., 3., 3.],
       [2., 2., 3., 3., 4., 4.],
       [2., 2., 3., 3., 4., 4.]], dtype=float32))

當order=1時,用雙線性插值重新取樣2倍:

輸出為:array([[0. , 0.4, 0.8, 1.2, 1.6, 2. ],
       [0.4, 0.8, 1.2, 1.6, 2. , 2.4],
       [0.8, 1.2, 1.6, 2. , 2.4, 2.8],
       [1.2, 1.6, 2. , 2.4, 2.8, 3.2],
       [1.6, 2. , 2.4, 2.8, 3.2, 3.6],
       [2. , 2.4, 2.8, 3.2, 3.6, 4. ]], dtype=float32))

當order=2時:

輸出為:array([[0.5 , 0.66, 1.05, 1.45, 1.84, 2.  ],
       [0.66, 0.82, 1.21, 1.61, 2.  , 2.16],
       [1.05, 1.21, 1.6 , 2.  , 2.39, 2.55],
       [1.45, 1.61, 2.  , 2.4 , 2.79, 2.95],
       [1.84, 2.  , 2.39, 2.79, 3.18, 3.34],
       [2.  , 2.16, 2.55, 2.95, 3.34, 3.5 ]], dtype=float32))

當order=4時:

輸出為: array([[0.8125   , 0.9282333, 1.2255833, 1.5869167, 1.8842666, 2.       ],
       [0.9282333, 1.0439667, 1.3413167, 1.70265  , 2.       , 2.1157334],
       [1.2255833, 1.3413167, 1.6386666, 2.       , 2.29735  , 2.4130833],
       [1.5869167, 1.70265  , 2.       , 2.3613334, 2.6586833, 2.7744167],
       [1.8842666, 2.       , 2.29735  , 2.6586833, 2.9560332, 3.0717666],
       [2.       , 2.1157334, 2.4130833, 2.7744167, 3.0717666, 3.1875   ]],
      dtype=float32))

當order=5時:

輸出為:array([[0.93333334, 1.0360746 , 1.302656  , 1.6306773 , 1.8972586 ,
        2.        ],
       [1.0360746 , 1.138816  , 1.4053973 , 1.7334187 , 2.        ,
        2.1027412 ],
       [1.302656  , 1.4053973 , 1.6719787 , 2.        , 2.2665813 ,
        2.3693228 ],
       [1.6306773 , 1.7334187 , 2.        , 2.3280213 , 2.5946026 ,
        2.697344  ],
       [1.8972586 , 2.        , 2.2665813 , 2.5946026 , 2.861184  ,
        2.9639254 ],
       [2.        , 2.1027412 , 2.3693228 , 2.697344  , 2.9639254 ,
        3.0666666 ]], dtype=float32))

mode:根據給定的模式('常數','最近','反映'或'換行')填充輸入邊界之外的點。 預設為“常量”。

cval:如果mode ='constant',則用於輸入邊界之外的點的值。 預設值為0.0

prefilter : bool, optional 。引數預濾波器確定輸入是否在插值之前使用spline_filter進行預過濾(對於> 1的樣條插值所必需的)。 如果為False,則假定輸入已被過濾。 預設為True。