def maximum_position(power_masked, kx, ky): # estimate the maximum by parabolic->gaussian interpolation of pixels dkx, dky = kx[0,1]-kx[0,0], ky[1,0]-ky[0,0] iy_max, ix_max = ndimage.maximum_position(power_masked) data_roi = power_masked.data[iy_max-1:iy_max+2, ix_max-1:ix_max+2] x0, y0, z0 = utils.parab_interpolation(np.log(data_roi), 1, 1) k_vec = np.array([(x0+ix_max-1)*dkx + kx[0, 0], (y0+iy_max-1)*dky + ky[0, 0]]) amp = np.exp(z0) return k_vec, amp
def findmax(data): i_max = data.argmax() ix_max = int(i_max % data.shape[1]) iy_max = int(i_max / data.shape[1]) x0, y0, z0 = utils.parab_interpolation(data, ix_max, iy_max) return np.array([kx[0]+x0*dkx, ky[0]+y0*dky])