Wdrażam artykuł „ Optymalny transport masowy do rejestracji i wypaczania ”, moim celem jest umieszczenie go w Internecie, ponieważ po prostu nie mogę znaleźć żadnego kodu eulerowskiego transportu masowego w Internecie, co byłoby interesujące, przynajmniej dla społeczności naukowej zajmującej się przetwarzaniem obrazu.
Artykuł można podsumować w następujący sposób:
- znajdź początkową mapę przy użyciu dopasowań histogramu 1D wzdłuż współrzędnych x i y
- rozwiąż dla stałego punktu , gdzieoznacza obrót o 90 stopni przeciwnie do ruchu wskazówek zegara,dla rozwiązania równania Poissona z warunkami brzegowymi Dirichleta (= 0), ijest wyznacznikiem macierzy Jakubowej.
- stabilność jest gwarantowana przez czas
W przypadku symulacji numerycznych (wykonywanych na regularnej siatce), wskazują one użycie poicalc Matlaba do rozwiązania równania Poissona , używają wyśrodkowanych różnic skończonych dla pochodnych przestrzennych, z wyjątkiem który jest obliczany przy użyciu schematu wiatru.
Używając mojego kodu, funkcjonalność energetyczna i zawijanie mapowania odpowiednio zmniejszają się przez kilka iteracji (od kilkudziesięciu do kilku tysięcy w zależności od kroku czasowego). Ale potem symulacja eksploduje: energia wzrasta, aby osiągnąć NAN w bardzo niewielu iteracjach. Próbowałem kilku rozróżnień i integracji (można znaleźć tutaj zamiennik wyższego rzędu dla cumptrapz ) i różnych schematów interpolacji, ale zawsze mam ten sam problem (nawet na bardzo płynnych obrazach, wszędzie niezerowe itp.).
Czy ktoś byłby zainteresowany zapoznaniem się z kodem i / lub teoretycznym problemem, przed którym stoję? Kod jest raczej krótki.
Kod z funkcjami debugowania
Zastąp gradient2 () na końcu gradientem (). To był gradient wyższego rzędu, ale też nie rozwiązuje problemu.
Interesuje mnie tylko optymalna część transportowa papieru, a nie dodatkowy termin regularyzacji.
Dzięki !