Я пытаюсь оптимизировать подгонку математически определенной функции к изображению, которое, как я знаю, содержит похожую структуру.Есть ли общеизвестный способ вычисления остатков для подгонки функции к изображению?
Я использую scipy.minimize.optimize
, чтобы попытаться подогнать кривую к изображению.Моя стратегия состоит в том, чтобы измерить, насколько хорошо моя функция, которая сегментирована в матрице B
ниже, соответствует моей функции f
путем минимизации среднего евклидова расстояния между B
и f
.
.определила следующую функцию, которую я передаю в scipy.optimize.minimize
:
# x is a tuple of arguments passed to f
# f is the function I am trying to fit to B, which returns a matrix of 0s and 1s
# B is the image I am trying to fit to, whose voxel values are 0 or 1
from scipy.ndimage.morphology import distance_transform_edt
def objective(x, f, B):
f_matrix = f(*x)
f_matrix_edt = distance_transform_edt(f_matrix)
residuals = B * f_matrix_edt
return residuals.sum()
Я ожидаю, что решение сходится к сильной подгонке, но я получаю подгонки, которые даже не содержатся в пределах моей матрицы.Я подозреваю, что это потому, что моя стратегия вычисления остатков в этом контексте совершенно неверна!