web-dev-qa-db-fra.com

Mise en œuvre d'algorithmes de papier technique en C ++ ou MATLAB

Je suis un génie électrique de premier cycle. J'ai lu de nombreux documents techniques sur les algorithmes de traitement des signaux et des images (reconstruction, segmentation, filtrage, etc.). La plupart des algorithmes présentés dans ces papiers sont définis sur le temps continu et la fréquence continue, et donnent souvent les solutions en termes d'équations complexes. Comment implémenteriez-vous un document technique à partir de zéro en C++ ou MATLAB afin de reproduire les résultats obtenus dans ledit papier?

Plus précisément, je cherchais le papier "un algorithme de reconstruction de faisceau de cône général" de Wang et al ( IEEE Trans Med Imaging. 1993; 12 (3): 486-96 ), et j'étais Vous vous demandez, comment puis-je commencer à mettre en œuvre leur algorithme? L'équation 10 vous donne la formule de l'image reconstruite à. Comment voudriez-vous coder cela? Auriez-vous une boucle pour chaque voxel et calculer la formule correspondante? Comment coderiez-vous les fonctions des fonctions dans cette formule? Comment évalueriez-vous des fonctions à des points arbitraires?

J'ai lu le livre "Traitement d'image numérique" par Gonzalez et Woods, mais je suis toujours à perte. J'ai également lu sur la série de livres de recettes numériques. Serait-ce la bonne façon?

Quelles sont vos expériences d'algorithmes de programmation à partir de papiers de recherche? Des conseils ou des suggestions?

14
Damian

Ajout à Nibot Excellente explication , juste quelques points de plus.

  • Les environnements informatiques numériques tels que Matlab, Octave ou Scipey/Numpy vous feront économiser beaucoup d'efforts par rapport à la réalisation de tout seul dans un langage de programmation générique tel que C++. Jongler avec double Les tableaux et les boucles ne se compare que pour avoir des types de données tels que des nombres complexes et des opérations telles que des intégrales à portée de main. (Il est facilité à coup sûr et le bon code C++ peut être un ordre de grandeur plus rapide, avec de bonnes abstractions et des modèles de bibliothèque, il peut même être raisonnablement propre et clair, mais il est certainement plus facile de commencer par E. G. Matlab.)

  • Matlab possède également des "butines à outils" pour par exemple. traitement de l'image et traitement du signal numérique , ce qui peut aider beaucoup, selon ce que vous faites.

  • Mitra's Traitement du signal numérique est un bon livre à apprendre (dans Matlab!) Les bases du temps discret, des filtres, des transformés, etc., qui sont à peu près des connaissances obligatoires pour effectuer des algorithmes techniques décents.
3
Joonas Pulakka

Méthodes numériques. C'est généralement un cours d'université de la division supérieure et un manuel.

DSP est généralement proche de l'intersection des méthodes numériques et de la mise en œuvre efficace. Si vous ignorez l'efficacité, vous pourriez rechercher une méthode d'approximation numérique qui pourrait produire un résultat "suffisant" précis "pour l'équation (s) d'intérêt du document technique. Parfois, on peut traiter des données échantillonnées, où les théorèmes d'échantillonnage mettent quelques limites sur la méthode d'acquisition de données (pré-filtrage) et la plage ou la qualité des résultats que vous pouvez obtenir ces données.

Parfois, MATLAB, recettes numériques, ou diverses bibliothèques d'image/de traitement du signal auront des algorithmes ou un code efficaces pour la solution numérique souhaitée. Mais parfois, vous devrez peut-être rouler le vôtre, il est donc utile de connaître les mathématiques derrière diverses méthodes de solution numérique. Et c'est un gros sujet à part entière.

2
hotpaw2