J'implémente le document " Transport de masse optimal pour l'enregistrement et la déformation ", mon objectif étant de le mettre en ligne car je ne trouve aucun code de transport de masse eulérien en ligne et cela serait intéressant au moins pour la communauté des chercheurs en traitement d'images.
Le document peut être résumé comme suit:
- trouver une carte initiale utilisant des correspondances d'histogramme 1D le long des coordonnées x et y
- résoudre le point fixe de
Pour les simulations numériques (effectuées sur une grille régulière), elles indiquent l'utilisation du poicalc de matlab pour résoudre l'équation du poisson, elles utilisent des différences finies centrées pour les dérivées spatiales, à l'exception de qui est calculé à l'aide d'un schéma au près.
En utilisant mon code, la fonction énergétique et la boucle de la cartographie diminuent correctement pendant quelques itérations (de quelques dizaines à quelques milliers selon le pas de temps). Mais après cela, la simulation explose: l'énergie augmente pour atteindre un NAN en très peu d'itérations. J'ai essayé plusieurs commandes pour les différenciations et les intégrations (un remplacement d'ordre supérieur à cumptrapz peut être trouvé ici ), et différents schémas d'interpolation, mais j'ai toujours le même problème (même sur des images très lisses, non nul partout, etc.).
N'importe qui serait intéressé à regarder le code et / ou le problème théorique auquel je suis confronté? Le code est assez court.
Code avec fonctions de débogage
Veuillez remplacer gradient2 () à la fin par gradient (). C'était un gradient d'ordre supérieur mais ne résout pas non plus les choses.
Pour l'instant, je ne m'intéresse qu'à la partie transport optimale du papier, pas au terme de régularisation supplémentaire.
Merci !