230 likes | 379 Views
Generic Image Processing with Climb. Laurent Senta – Didier Verna. April 30, 2012. LRDE EPITA Research Lab. lrde.epita.fr. Outline. Introduction Using Climb Developping Climb Going Further Conclusion. Introduction. Generic Image Processing.
E N D
Generic Image ProcessingwithClimb Laurent Senta – Didier Verna April 30, 2012 LRDE EPITA ResearchLab lrde.epita.fr
Outline • Introduction • Using Climb • Developping Climb • Going Further • Conclusion
Generic Image Processing Images: Roland Levillain. Software Architecture for Generic Image Processing Tools I I H H B B G G C C A A D D F F E E segmentation
GenericityPurpose 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 segmentation S x V x A combinations values type graph bool grayscale rgb 2dmatrix 3dmatrix structures type
Climb • Generic Image Processinglibrary • Common Lisp • Inspired by Olena: C++, 10 yearsold • DynamicvsStatic • Usability, maintainability, performance,… • Still in beta
Architecture The differentlayers of the library GUI Image Algorithms ChainingOperator Generic types Morphers
Algorithms original grayscale Otsu threshold jitter medianfilter dilation erosion
ChainingOperator Chainingalgorithmswith the $ operator (setfimg(image-load‘images/lena128gray.jpg’)) (setfot-img(otsuimg)) (setfdil-img(dilationot-img(4-connectivity))) (savedil-img‘out/lena-dilated.png’) (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’ chain ($ (image-load‘images/lena128gray.jpg’) (otsu) (dilation (4-connectivity)) (save‘out/lena-eroded.png’))
ChainingOperator More complexchaining erosion image-load to-gray otsu diff dilation
Image Definition I H B G C A D F Image access E • 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 Generalization: image(site) = value Lisp: (setf (iref image site) value)
Values and Sites Values: I H B bool grayscale RGB G C A Site: D F x E y label 2d-point (setf (iref image site) ) (iref image site) (value-inverse )
Browsing Images Site-set: x I H B G C A D F E y (domain (image-domain image)) (let ( ) (loop:for s := :whiles )) (site-set-nextdomain) …
Browsing Images Site-set-window: x I H B G C A D F E y … (site-set-nextneighbors) (neighbors (site-set-windowwindow site)) (let ( ) (loop:for s := :whiles ))
Morphers Transforming images withmorphers Value morpher Structure morpher
Properties Adaptinggenericity algorithms support:regular segmentation values type graph bool grayscale rgb 2dmatrix 3dmatrix structures type
GUI Climbbased interface I H B G C A D F E Value: GTK-BOX MorpherResize climb graph
Conclusion Currentstatus Algorithmimplementor Image ProcessingPractitionner • High-leveldomain model • Generic values • Generic structures • Genericimplementations • Built-in algorithms • Composition tools • Chainingoperator • Morphers • GUI Hot topics
Thanks for your attention, Questions ?
Sources • Th. Géraud and R. Levillain. Semantics-drivengenericity: A sequel to the static C++ object-orientedprogrammingparadigm (SCOOP 2). • R. Levillain, Th. Géraud, and L. Najman. Why and how to design a generic and efficient image processingframework: The case of the Milena library. • N. Otsu. A thresholdselectionmethodfrom gray-levelhistograms. • 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