Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Generic Image Processing With Climb – 5th ELS

vjeux
May 10, 2012

Generic Image Processing With Climb – 5th ELS

vjeux

May 10, 2012
Tweet

More Decks by vjeux

Other Decks in Education

Transcript

  1. Generic Image Processing with Climb Laurent Senta – Didier Verna

    LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr
  2. Generic Image Processing 4 Images: Roland Levillain. Software Architecture for

    Generic Image Processing Tools I A H B D C E F G I A H B D C E F G segmentation
  3. Genericity Purpose 5 Graphic: Laurent Najman. Point de vue d'un

    théoricien sur l'intérêt de la généricité pour le traitement d'images algorithms values type structures type segmentation graph 2dmatrix 3dmatrix bool grayscale rgb S x V x A combinations
  4. Climb • Generic Image Processing library – Common Lisp •

    Inspired by Olena: C++, 10 years old – Dynamic vs Static – Usability, maintainability, performance,… • Still in beta 6 Compilers sbcl Dependencies iterate, lisp-magick, cl-heap, lisp-unit, cl-gtk2
  5. Architecture 7 The different layers of the library Generic types

    Morphers Image Algorithms Chaining Operator GUI
  6. (setf img (image-load ‘images/lena128gray.jpg’)) (setf ot-img (otsu img)) (setf dil-img

    (dilation ot-img (4-connectivity))) (save dil-img ‘out/lena-dilated.png’) Chaining Operator Chaining algorithms with the $ operator 10 (save (erosion (otsu (image-load ‘images/lena128gray.jpg’)) (4-connectivity)) ‘out/lena-eroded.png’) image-load ‘images/lena128gray.jpg’ otsu dilation (4-connectivity) save ‘out/lena-eroded.png’ ($ (image-load ‘images/lena128gray.jpg’) (otsu) (dilation (4-connectivity)) (save ‘out/lena-eroded.png’))
  7. • matrix[x, y] → pixelvalue • graph.getNode(label) → nodevalue •

    model[x, y, z] → voxelvalue • matrix[x, y] → pixelvalue • graph.getNode(label) → nodevalue • model[x, y, z] → voxelvalue Image Definition 13 I A H B D C E F G Image access image(site) = value (setf (iref image site) value) Generalization: Lisp:
  8. (value-inverse ) (iref image site) (setf (iref image site) )

    Values and Sites 14 Values: Site: bool grayscale RGB x y I A H B D C E F G 2d-point label
  9. Browsing Images 15 x y Site-set: (let ( ) (loop

    :for s := :while s )) (domain (image-domain image)) (site-set-next domain) … I A H B D C E F G
  10. (let ( ) (loop :for s := :while s ))

    … (site-set-next neighbors) (neighbors (site-set-window window site)) Browsing Images 16 x y Site-set-window: I A H B D C E F G
  11. Properties 19 Adapting genericity algorithms values type structures type segmentation

    graph 2dmatrix 3dmatrix bool grayscale rgb support:regular
  12. Value: GUI 20 Climb based interface I A H B

    D C E F G GTK-BOX Morpher Resize climb graph
  13. Conclusion 21 Current status Image Processing Practitionner Algorithm implementor •

    Built-in algorithms • Composition tools • Chaining operator • Morphers • GUI • High-level domain model • Generic values • Generic structures • Generic implementations Hot topics Genericity Usability Performance
  14. Sources • Th. Géraud and R. Levillain. Semantics-driven genericity: A

    sequel to the static C++ object-oriented programming paradigm (SCOOP 2). • R. Levillain, Th. Géraud, and L. Najman. Why and how to design a generic and efficient image processing framework: The case of the Milena library. • N. Otsu. A threshold selection method from gray-level histograms. • P. Soille. Morphological Image Analysis: Principles and Applications • Roland Levillain. Software Architecture for Generic Image Processing Tools • Laurent Najman. Point de vue d'un théoricien sur l'intérêt de la généricité pour le traitement d'images 23