2012-12-08 78 views
3

在numpy中是否有索引速記來獲取圖像(或任何ND數組)的中心像素?有沒有簡單的獲取圖像的中心像素?

例子:

cutout = xc[xc.shape[0]/2-30:xc.shape[0]/2+30,xc.shape[1]/2-30:xc.shape[1]/2+30] 

我可以定義一個函數

def get_center_pixels(arr, npix): 
    slices = [slice(shape/2-npix,shape/2+npix) for shape in arr.shape] 
    return arr[slices] 

cutout = get_center_pixels(xc,30) 

是否有更好的方法或內置的方式做到這一點?

+0

您爲它編寫的'get_center_pixels'函數非常簡潔高效。可能有一個稍微好一點的方法,但這就是我要做的,無論它是值得的。 –

回答

2

numpy中我能想到的最接近的標準函數是numpy.fft.fftshift,它將數據沿着選定的軸進行滾動,以便中心點現在位於[0,0]。

+0

我也想出了;它可以工作,但實際上並不比切片清單方法更好(儘管可能是更少的擊鍵次數,所以+1) – keflavich