适合实施

Fit implementation

您好,我正在尝试使 psf 适合图像。背景应由低阶多项式近似。如果我只取一个常数,它就可以正常工作:

def fitter(image, trueImage,psf,intensity): 
   p0 = [intensity]            
   p0.append(np.amin(trueImage)*4**2) 
   meritFun = lambda p: np.ravel(image-(p[0]*psf+p[1]))
   p = least_squares(meritFun,p0,method='trf')

现在我遇到了如何为我的多项式定义 x 和 y 的问题:

#Does not work!
def fitter(image, trueImage,psf,intensity): 
   p0 = [intensity]            
   p0.append(np.amin(trueImage)*4**2) 
   p0.append(1)
   p0.append(1) #some clever initial guess
   meritFun = lambda p: np.ravel(image-(p[0]*psf+p[1]+p[2]*x+p[3]*y))
   p = least_squares(meritFun,p0,method='trf')

x 和 y 显然是我的图像数组的索引 ij,但是我如何知道我的拟合例程?

正如 Paul Panzer 在评论中提到的,解决这个问题的一种方法是使用 np.ogrid:

def fitter(image, trueImage,psf,intensity): 
    x = np.ogrid[:image.shape[0]]
    y = np.ogrid[:image.shape[1]]
    p0 = [intensity]            
    p0.append(np.amin(trueImage)*4**2)
    p0.append(0)
    p0.append(0)
    meritFun = lambda p: np.ravel(image-(p[0]*psf+p[1]+p[2]*x+p[3]*y))
    p = least_squares(meritFun,p0,method='trf')