OpenCV vs Matlab... encore !

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).

Je peste, râle et code, et admire mes magnifiques résultats quelque temps plus tard. Fort content de mes résultats, je décide de faire quelques belles mesures de SNR. C’est alors que survint le drame : non seulement la valeur de SNR était minable, mais en plus elle était bien inférieure à celle de l’image bruitée ! Pourtant, visuellement, tout était parfait…

En reprenant tout bout par bout, je me suis rendu compte que mon image estimée avait des valeurs et une dynamique très faibles, et que mes yeux me trompaient. En fait, la fonction matlab d’affichage imagesc() procédait à une extension de dynamique brutale de mon résultat, chose que j’avais oubliée ayant pris l’habitude de faire moi-même les conversions avec la fonction opencv cv::Mat::convertTo().

Bref, j’ai toujours un problème à régler, mais cette fois c’est le bon… et c’est une raison de plus de préférer opencv à matlab quand on le peut !


  1. Oui, encore un, mais le mien est super mieux. Na. ^

Related