Nous avons développé il y a plusieurs années un logiciel de Corrélation d'Images Numériques nommé YaDICs pour "yet another Digital Images Correlation software".
Il est capable de traiter des images 2D et 3D (tomographie) et permet via un fichier d'entrée en netcdf de définir des séquences de corrélation assez diverses.
Le logiciel sait faire de la corrélation intégrée (transformation globale), de la corrélation locale comme tu le fais dans ton soft et aussi la version avec une cinématique de type Éléments finis.
Le calcul est évidemment multi-échelle c-à-d tu commence par une image très moyennée puis tu applique la transformation à l'échelle du dessous et ainsi de suite.
L'originalité de ce logiciel est qu'à chaque échelle tu peux choisir ta méthode (globale, locale FEM) puis en passant à l'échelle suivante l'algorithme fait les projection ad hoc te permettant de commencer le calcul d'un peu moins loin.
Nous avons de plus introduit une régularisation par filtre médian qui nous permet de descendre en taille d'éléments tout en évitant le bruit de manière assez satisfaisante.
Il est parallélisé en OpenMP et est très rapide, il est basé sur la bibliothèque CImg pour le traitement d'image, le tout en C++. Il n'est pas codé par des informaticiens, il ne faut donc pas trop regarder le code de prés.
Il n'est pas interfacé avec python mais netcdf existe en python, il est donc simple de créer un fichier, de le compiler et de lancer le programme de manière automatique.
En ce qui concerne ce qui se fait ailleurs, il y a elastix qui existe depuis plus de 10 ans. Il fait du recalage d'images, il est bien plus générique que nos programmes, il utilise une grille BSplines pour la transformation et peut utiliser les moindres carrés comme nous ou d'autres métriques (NCC,Mutual Information, ...), il traite les images 2D et 3D. Il est interfacé depuis 3 ans au travers du module python SimpleElastix directement accessible via easy_install ou pip. C'est à ce jour la solution la plus polyvalente sous python.
Comme la couche python n'est qu'un binding, il n'est pas possible de développer de nouvelles techniques en python, il faut repasser en C++, mais en tant qu'utilisateur c'est super.
Il est aussi possible de faire de très belle choses avec OpenCV directement avec des algorithmes de type DeepMatching implémentés via OptFlow_DeepFlow mais aussi SimpleFlow implémenté via calcOpticalFlowSF qui existe depuis plus de deux ans.
C'est deux méthodes sont disponibles en python, donc comme tu utilises OpenCV, tu peux facilement y avoir accès. Il est aussi possible de tester la version GPU mais ce n'est pas disponible en python.
Après, il est certain que si tu as cherché DIC, il est probable que tu n'aies rien trouvé ...
[^] # Re: Un truc important que j'ai oublié de dire...
Posté par freejeff . En réponse au journal pydic, une suite d'outil python pour réaliser de la corrélation d'image locale. Évalué à 6.
Salut,
Nous avons développé il y a plusieurs années un logiciel de Corrélation d'Images Numériques nommé YaDICs pour "yet another Digital Images Correlation software".
Il est capable de traiter des images 2D et 3D (tomographie) et permet via un fichier d'entrée en netcdf de définir des séquences de corrélation assez diverses.
Le logiciel sait faire de la corrélation intégrée (transformation globale), de la corrélation locale comme tu le fais dans ton soft et aussi la version avec une cinématique de type Éléments finis.
Le calcul est évidemment multi-échelle c-à-d tu commence par une image très moyennée puis tu applique la transformation à l'échelle du dessous et ainsi de suite.
L'originalité de ce logiciel est qu'à chaque échelle tu peux choisir ta méthode (globale, locale FEM) puis en passant à l'échelle suivante l'algorithme fait les projection ad hoc te permettant de commencer le calcul d'un peu moins loin.
Nous avons de plus introduit une régularisation par filtre médian qui nous permet de descendre en taille d'éléments tout en évitant le bruit de manière assez satisfaisante.
Il est parallélisé en OpenMP et est très rapide, il est basé sur la bibliothèque CImg pour le traitement d'image, le tout en C++. Il n'est pas codé par des informaticiens, il ne faut donc pas trop regarder le code de prés.
Il n'est pas interfacé avec python mais netcdf existe en python, il est donc simple de créer un fichier, de le compiler et de lancer le programme de manière automatique.
En ce qui concerne ce qui se fait ailleurs, il y a elastix qui existe depuis plus de 10 ans. Il fait du recalage d'images, il est bien plus générique que nos programmes, il utilise une grille BSplines pour la transformation et peut utiliser les moindres carrés comme nous ou d'autres métriques (NCC,Mutual Information, ...), il traite les images 2D et 3D. Il est interfacé depuis 3 ans au travers du module python SimpleElastix directement accessible via easy_install ou pip. C'est à ce jour la solution la plus polyvalente sous python.
Comme la couche python n'est qu'un binding, il n'est pas possible de développer de nouvelles techniques en python, il faut repasser en C++, mais en tant qu'utilisateur c'est super.
Il est aussi possible de faire de très belle choses avec OpenCV directement avec des algorithmes de type DeepMatching implémentés via OptFlow_DeepFlow mais aussi SimpleFlow implémenté via calcOpticalFlowSF qui existe depuis plus de deux ans.
C'est deux méthodes sont disponibles en python, donc comme tu utilises OpenCV, tu peux facilement y avoir accès. Il est aussi possible de tester la version GPU mais ce n'est pas disponible en python.
Après, il est certain que si tu as cherché DIC, il est probable que tu n'aies rien trouvé ...