Bibliothèque de traitements d'images en virgule flottante. http://la.buvette.org/photos/cumul/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

the_floatimg_hack.tex 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. \documentclass[a4paper,10pt]{article}
  2. % \listfiles % pour le debug
  3. \usepackage[french]{babel}
  4. \usepackage[utf8]{inputenc}
  5. \usepackage[T1]{fontenc}
  6. % XXX \usepackage{lipsum}
  7. \usepackage{makeidx}
  8. \usepackage{listings}
  9. % \usepackage{color}
  10. % \usepackage{url}
  11. \usepackage{xspace}
  12. \usepackage[verbose]{layout}
  13. \makeindex
  14. % -------------------------------------------------------------------
  15. \title{Floating images processing}
  16. \author{tTh}
  17. \begin{document}
  18. \maketitle
  19. \section{Image flottante ?}
  20. De quoi parle-t-on exactement ?
  21. \vspace{1em}
  22. Traditionnellement, les valeurs des pixels dans les images
  23. informatiques sont mémorisées sur 8 bits, un octet\index{octet},
  24. soit 256 valeurs différentes.
  25. Ceci dit, on trouve parfois des images codées sur 16 bits par
  26. composante, mais c'est loin d'être le cas général.
  27. J'ai donc souhaité aller plus loin, et coder chaque canal de
  28. chaque pixel en virgule flottante sur 32bits, le type
  29. \texttt{float}\index{float} du langage C.
  30. % -------------------------------------------------------------------
  31. \tableofcontents
  32. \pagebreak
  33. % -------------------------------------------------------------------
  34. \section{Example}
  35. Pour commencer,
  36. nous allons créer une image RGB\index{RGB} complètement noire,
  37. puis l'enregistrer dans un fichier \texttt{.fimg}\index{.fimg},
  38. un format complètement inconnu, puisque je viens de l'inventer
  39. à l'instant même.
  40. Tout d'abord, nous devons déclarer et garnir quelques variables
  41. pour gérer la machinerie interne.
  42. \begin{verbatim}
  43. int width = 640, height = 480;
  44. char *fname * "exemple.fimg";
  45. FloatImg fimg;
  46. \end{verbatim}
  47. Ensuite, nous enchainerons trois étapes : création de l'image
  48. en mémoire centrale, initialisations des valeurs de pixel à 0.0,
  49. et pour conclure, enregistrement dans un fichier.
  50. \begin{verbatim}
  51. foo = fimg_create(&fimg, width, height, 3);
  52. if (foo) {
  53. fprintf(stderr, "create floatimg -> %d\n", foo);
  54. exit(1);
  55. }
  56. fimg_clear(&fimg);
  57. foo = fimg_dump_to_file(&fimg, fname, 0);
  58. if (foo) {
  59. fprintf(stderr, "dump fimg -> %d\n", foo);
  60. exit(1);
  61. }
  62. \end{verbatim}
  63. Une fois ce code enrobé dans un \texttt{main()}, compilé et exécuté,
  64. nous pouvons entrevoir, grâce au logiciel
  65. \texttt{fimgstats} (voir page \pageref{fimgstats}),
  66. le résultat sous forme de chiffres divers, et/ou inutiles~:
  67. \begin{verbatim}
  68. $ ./fimgstats quux.img
  69. ----------- numbers from 'quux.img' :
  70. 640 480 3 0x7f3718c4f010 0x7f3718d7b010 0x7f3718ea7010
  71. surface 307200
  72. mean values:
  73. R 0.000000
  74. G 0.000000
  75. B 0.000000
  76. A 0.000000
  77. max value 0.000000
  78. \end{verbatim}
  79. % -------------------------------------------------------------------
  80. \section{Mise en œuvre}
  81. Pour le moment, la procédure d'installation est un peu rude,
  82. pour ne pas dire clairement sommaire.
  83. \vspace{1em}
  84. Un script \texttt{build.sh} permet de construire approximativement
  85. le bouzin. Il est loin d'être parfait.
  86. % -------------------------------------------------------------------
  87. \section{Les outils}
  88. \textsl{3615mavie} : sur des projets comme celui-ci, qui travaillent
  89. in-fine sur des objets que l'on peut considérer comme « physiques »,
  90. il est important de passer à une utilisation
  91. normale\footnote{Il y a une vie en dehors de git.} et construire
  92. des trucs qui mettent en action le code primitif.
  93. \vspace{1em}
  94. \subsection{mkfimg}\index{mkfimg}\label{mkfimg}
  95. Création d'un fichier contenant une image de teinte constante.
  96. \subsection{fimgstats}\index{fimgstats}\label{fimgstats}
  97. Affichage de quelques valeurs calculées à partir d'un fichier
  98. \texttt{.fimg}\index{.fimg}.
  99. % -------------------------------------------------------------------
  100. \section{Video for Linux}\index{v4l2}
  101. Donc, maintenant, nous savons un peu tripoter des images flottantes.
  102. Et nous devons nous poser une question fondamentale\footnote{primitive ?}
  103. sur la provenance de ces données prétendnat être des images.
  104. % -------------------------------------------------------------------
  105. \section{Et pour la suite ?}
  106. % -------------------------------------------------------------------
  107. \printindex
  108. \end{document}