Slide 1

Slide 1 text

Generic Image Processing with Climb Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr

Slide 2

Slide 2 text

Outline • Introduction • Using Climb • Developping Climb • Going Further • Conclusion 2

Slide 3

Slide 3 text

INTRODUCTION 3

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Architecture 7 The different layers of the library Generic types Morphers Image Algorithms Chaining Operator GUI

Slide 8

Slide 8 text

USING CLIMB 8

Slide 9

Slide 9 text

Algorithms 9 original grayscale median filter Otsu threshold dilation erosion jitter

Slide 10

Slide 10 text

(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’))

Slide 11

Slide 11 text

dilation diff erosion otsu to-gray image-load Chaining Operator 11 More complex chaining

Slide 12

Slide 12 text

DEVELOPPING CLIMB 12

Slide 13

Slide 13 text

• 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:

Slide 14

Slide 14 text

(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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

(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

Slide 17

Slide 17 text

Morphers 17 Transforming images with morphers Value morpher Structure morpher

Slide 18

Slide 18 text

GOING FURTHER 18

Slide 19

Slide 19 text

Properties 19 Adapting genericity algorithms values type structures type segmentation graph 2dmatrix 3dmatrix bool grayscale rgb support:regular

Slide 20

Slide 20 text

Value: GUI 20 Climb based interface I A H B D C E F G GTK-BOX Morpher Resize climb graph

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

QUESTIONS ? Thanks for your attention, 22

Slide 23

Slide 23 text

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