Obecnie pracuję z danymi astronomicznymi, wśród których mam obrazy z komet. Chciałbym usunąć gradient tła nieba na tych obrazach ze względu na czas przechwytywania (zmierzch). Pierwszy program, który opracowałem w tym celu, wziął użytkownika z wybranych punktów z "ginput" Matplotliba (x, y), wyciągnął dane dla każdej współrzędnej (z), a następnie obsadził dane w nowej tablicy z "griddata" SciPy.Python 3D dopasowanie powierzchni wielomianowej, zależne od zamówienia
Ponieważ zakłada się, że tło zmienia się tylko nieznacznie, chciałbym dopasować trójwymiarowy wielomian niskiego rzędu do tego zestawu punktów (x, y, z). Jednak „griddata” nie zezwala na zlecenia wejściowego:
griddata(points,values, (dimension_x,dimension_y), method='nearest/linear/cubic')
Wszelkie pomysły na innej funkcji, które mogą być używane lub sposobu opracowania LEAs kwadratów pasuje, że pozwoli mi kontrolować kolejność?
Jest to bardzo eleganckie rozwiązanie problemu. Użyłem twojego sugerowanego kodu, aby pasował do eliptycznej paraboloidy z niewielkimi modyfikacjami, które chcę udostępnić. Zainteresowałem się dopasowaniem tylko rozwiązań liniowych w postaci 'z = a * (x-x0) ** 2 + b * (y-y0) ** 2 + c'. Pełny kod moich zmian można zobaczyć [tutaj] (http://www.nublia.com/dev/stackoverflow/stow_polyfit2d.py). – regeirk
Uwaga: najnowsze wersje numpy, patrz odpowiedź @ klaus poniżej. W czasie mojej oryginalnej odpowiedzi 'polyvander2d', etcetera nie istniało, ale są one obecnie drogą do zrobienia. –
czy to jest wielomian trzeciego rzędu? chyba że rozumiem źle, ale czy nie ma terminu 'X ** 3 * Y ** 3' z rzędu 6? – maxymoo