2D плоскость подходит, как параметризовать?

Я пытаюсь подобрать плоскость, которая имитирует фон изображения. Я делаю это с помощью scipy.optimize.least_squares. Я следую рецепту отсюда: http://scipy-cookbook.readthedocs.io/items/FittingData.html (прокрутите до середины страницы: Подгонка 2D гауссовского)

Если я правильно понимаю их код, то можно указать их параметры в функции:

def Guassian(data): params = moments(data) errorfunction = lambda p: np.ravel(gaussian(*p)(*np.indices(data.shape))-data)

сгладив их 2D-массив с помощью np.ravel().

Мой вопрос, как это возможно? Если я делаю то же самое, я получаю хорошо сходящуюся подгонку, но я могу поменять свои x 1 и x[2] и все еще получить ту же самую точную подгонку (- что совершенно логично, если вы посмотрите на мою реализованную модель.) Так что же я здесь делаешь неправильно?

Я следовал их коду с пометкой http://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html Наименьших квадратов:

from scipy.optimize import least_squares
import numpy as np

def model(x,u):
   return(x[0]+x[1]*u+x[2]*u)

def meritFun(x,u,y):
   return(model(x,u) - y)

def uFun(area):
   u = range(area**2)
   return(np.asarray(u))

i0 = 693
j0 = 449
area = 100

image = imageOpen(nameArray)
field = getROI(image,coverage,area,i0,j0)

meanX = xSlices(field,area)
meanY = ySlices(field,area)
mean = np.mean(field)

u = uFun(area)
y = np.ravel(field)
x0 = np.array([mean,meanX,meanY])

res = least_squares(meritFun, x0, args=(u, y), verbose=1)

Я не предоставлял xSlices, ySlices, поскольку они просто возвращают предположение среднего значения в направлении x,y: среднее значение = 0,00377306499016 среднее значение X = 0,00377306499016 среднее значение Y =0,00377306499016. Изображение, возвращаемое функцией regionOfIntrest getROI(image,...):

[Есть причины для подгонки самолета, хотя он пока не выглядит так. Если вы не хотите возиться с изображением, создайте массив (100*100) с моделью (u,x)+noise]

0 ответов

Другие вопросы по тегам