Bonjour J'essaye d'adapter un psf à une image. L'arrière-plan devrait être aproximated par des polynômes d'ordre inférieur. Si je prends juste une constante, il fonctionne très bien:Mise en place de l'ajustement
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')
Maintenant, j'ai la question de savoir comment définir les x et y est pour mes polynômes:
#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 et y sont obviuosly les indices i, j de ma matrice d'image, mais comment puis-je dire que ma routine d'ajustement?
Vous cherchez quelque chose comme 'np.ogrid [: image.Forme [0],: image.shape [1]] '? –
np.ogrid se sent bien .... Ce que j'ai fait: 'meritFun = lambda p: np.ravel (image - (p [0] * psf + p [1] * np.ogrid [: image.shape [0] ] + p [2] * np.ogrid [: image.shape [1]] + p [3])) '. Est-ce correctement implémenté? Le code compile mais maintenant mon installateur ne trouve pas de solution (ce qui peut être une difficulté numérique mais je veux exclure que quelque chose ne va pas avec ma fonction.) Le modèle que je veux ressemble à: 'image - (A * psf + c1 * x + c2 * y + c0) ' – Sebastiano1991
Je suis maintenant assez sûr que np.ogrid a fait l'affaire.Merci de la fonction très utile! – Sebastiano1991