Tweet battle Petite taquinade sur Twitter aujourd’hui avec Igor Carron, le rédacteur du blog Nuit Blanche. Igor1 vantait les mérites d’un article intéressant à partir d’un des résultats présentés : une reconstruction d’image à partir d’une image ayant perdu (aléatoirement) 90% de ses pixels.
Mais.. attendez… ne serait-ce pas là un problème d’inpainting ? Si fait !
C’était donc l’occasion rêvée pour reparler du code de ce blog récemment arrivé sur Github.
Dans un post récent, je parlais du site de crowd funding1 kickstarter.com, et j’évoquais notamment la grande diversité des projets à la recherche d’argent.
En voici un bon exemple, qui fera frémir le big data geek qui sommeille en vous, et qui regrette de ne pas pouvoir résoudre des équations non-linéaires en dimension 15 sur son androphone : un projet de portage d’Octave sur plates-formes Android.
Voici la vidéo de promotion du projet :
Au cours du développement d’un nouvel algorithme d’amélioration d’images1, j’ai dû abandonner opencv et re-switcher sous matlab. En effet, j’avais abandonné matlab assez tôt dans ma thèse (je traitais des fichiers vidéos, et c’était clairement pas efficace, à la fois pour la rapidité des calculs et l’utilisation de la mémoire) pour employer opencv (en C puis en C++) à la place.
Sauf que là, j’ai besoin d’une fonction qui n’existe pas dans opencv mais qui est dans matlab, et je n’ai pas de temps à consacrer à son implémentation (en gros, une méthode de calcul de SVD qui soit progressive et tourne sur des matrices ayant plus de 20 000 colonnes en temps raisonnable).
Cette semaine, le webcomics xkcd1 se lamente sur ce qu’est devenu kickstarter.com selon l’auteur (pas de spoiler, si vous voulez savoir ce qu’il en pense, il fat aller voir le strip!).
Au détour d’un billet, je citais John Carmack, fameux créateur de jeux vidéos. Le hasard faisant bien les choses, c’était il y a quelques jours (le 5 mai dernier) l’anniversaire des 20 ans de la sortie de la version PC de Wolfenstein 3D.
Beaucoup de joueurs ont dû s’essayer à ce jeu qui a véritablement lancé le genre des FPS (et qui nous permettait de meubler les cours d’informatique au lycée dès que la prof avait le dos tourné…), entre les versions pour différentes plates-formes (PC/DOS, Mac, Nintendo Super-NES et GBA, 3DO, Atari Jaguar… et je dois en oublier) et qui est même ressorti pour iOS.
Au détour d’une question sur StackOverflow, j’ai découvert qu’OpenCV 2.4 avait supprimé le mot-clé const de la fonction cv::Mat(cv::Rect()). On peut donc utiliser le résultat de cette fonction comme argument de la fonction copyTo(). La syntaxe suivante est désormais valide :
cv::Mat bigMat(1024, 1024, CV_32FC1); cv::Mat someSmallData(256, 256, CV_32FC1); someSmallData.copyTo(bigMat(cv::Rect(xmin, ymin, xmin+256, ymin+256)); Avant, il aurait fallu d’abord créer un objet temporaire (en fait, juste un en-tête pour accéder au bon endroit de bigMat) pour obtenir une cv::Mat non constante, puis copier dans cette matrice temporaire.
Nouveaux modules La librairie OpenCV passe officiellement en version 2.4.0.
Au niveau des principales nouveautés, comme souligné précédemment, on voit apparaître un module nonfree pour les codes problématiques (SIFT1, SURF2) qui ne devraient pas être utilisés dans les applications commerciales (hors licences d’utilisation), un module videostab pour stabiliser les vidéos et un autre pour corriger le rolling shutter3, et les fonctions d’inpainting ont migré dans un module photo. Pour le module stitching, il me semble qu’il était déjà là avec la version 2.