SlideShare a Scribd company logo
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




2
INTRODUCTION


3
Generic Image Processing
Images: Roland Levillain. Software Architecture for Generic Image Processing Tools



                                                I       H           B

                                            G                   C
                                                        A
                                                                        D
                                                    F
                                                            E


segmentation


                                                I       H           B

                                            G                   C
                                                        A
                                                                    D
                                                    F
                                                            E

4
Genericity Purpose
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
5
                       type
Climb
• Generic Image Processing library
      – Common Lisp
• Inspired by Olena: C++, 10 years old
      – Dynamic vs Static
      – Usability, maintainability, performance,…
• Still in beta



    Compilers      sbcl
    Dependencies   iterate, lisp-magick, cl-heap, lisp-unit, cl-gtk2



6
Architecture
The different layers of the library




                                            GUI




                                                         Chaining
                                      Image Algorithms
                                                         Operator




                                       Generic types     Morphers




7
USING CLIMB


8
Algorithms



    original     grayscale     Otsu threshold




     jitter    median filter      dilation      erosion


9
Chaining Operator
Chaining algorithms with the $ operator

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



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




10
Chaining Operator
More complex chaining


                                    erosion



 image-load        to-gray   otsu              diff



                                    dilation




11
DEVELOPPING CLIMB


12
Image Definition
                               I       H           B

                           G                   C
                                       A
                                                   D
                                   F
                                           E

 Image access

      • matrix[x, y] → pixelvalue
      • graph.getNode(label) → nodevalue
      • model[x, y, z] → voxelvalue

      Generalization:   image(site) = value

      Lisp:        (setf (iref image site) value)

13
Values and Sites
 Values:



             bool              grayscale                            RGB

     Site:
                                               I        H       B
                               x
                                           G                C
                                                       A
                                                                D
                                                   F
                                                            E
                y
                    2d-point                           label



               (setf (iref image site)
                     (value-inverse (iref image site)))


14
Browsing Images
         Site-set:
                               x           I       H       B
                                       G               C
                                                   A       D
                                               F       E
     y



           (let ((domain (image-domain image)))
             (loop :for s := (site-set-next domain)
                   :while s
                   …))




15
Browsing Images
           Site-set-window:
                                 x           I       H       B
                                         G               C
                                                     A       D
                                                 F       E
     y



         (let ((neighbors (site-set-window window site)))
           (loop :for s := (site-set-next neighbors)
                 :while s
                 …))




16
Morphers
Transforming images with morphers
              Value morpher         Structure morpher




17
GOING FURTHER


18
Properties
Adapting genericity


                                 algorithms


                                          support:regular

                  segmentation




                                                            values
                                                             type
                     graph         bool grayscale rgb
           2dmatrix
       3dmatrix


               structures
19                type
GUI
Climb based interface




                                                    Value:
                            I       H           B   GTK-BOX

                        G                   C
                                    A               Morpher
                                                D    Resize
                                F
                                        E

                            climb graph

20
Conclusion
Current status


        Image Processing Practitionner                  Algorithm implementor

        • Built-in algorithms                        • High-level domain model
        • Composition tools                               • Generic values
              • Chaining operator                         • Generic structures
              • Morphers                                  • Generic implementations
        • GUI




     Hot topics


                   Genericity            Usability           Performance




21
Thanks for your attention,

     QUESTIONS ?


22
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

More Related Content

PDF
FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証
PDF
Lecture9
PDF
Modern features-part-3-software
PDF
Algorithm for Multi-Path Hop-By-Hop Routing
PDF
Object Detection with Discrmininatively Trained Part based Models
PDF
Object Recognition with Deformable Models
PPT
Matlab Intro
PDF
CG OpenGL 3D viewing-course 7
FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証
Lecture9
Modern features-part-3-software
Algorithm for Multi-Path Hop-By-Hop Routing
Object Detection with Discrmininatively Trained Part based Models
Object Recognition with Deformable Models
Matlab Intro
CG OpenGL 3D viewing-course 7

What's hot (10)

PDF
Form 5 formulae and note
PPTX
Opencv
PDF
Csr2011 june14 17_00_pospelov
PPTX
Introduction to OpenCV
PDF
Mesh Processing Course : Differential Calculus
PDF
Functional Programming in C++
PPTX
PDF
006 hyperbola
PDF
Object recognition with pictorial structures
PDF
Finding%20 trigonometric%20ratios
Form 5 formulae and note
Opencv
Csr2011 june14 17_00_pospelov
Introduction to OpenCV
Mesh Processing Course : Differential Calculus
Functional Programming in C++
006 hyperbola
Object recognition with pictorial structures
Finding%20 trigonometric%20ratios
Ad

Viewers also liked (11)

PPTX
DOCX
Kekeliruan Konsep Nur Muhammad
PDF
Jash mehta ist 659 final project report
DOCX
Cách cắm hoa đẹp tự nhiên
PDF
{Name}黑客松
PDF
今さら聞けないコミュニケーションの基本〜挨拶と基本コミュニケーション 先生:唐沢 明
PPT
The trade show ecosytem with kappes additions ch
PPTX
Theseus
PPT
P. point cuidemos la costa
PPT
宇城先生0611 fix
PPT
Geology 2 eso
Kekeliruan Konsep Nur Muhammad
Jash mehta ist 659 final project report
Cách cắm hoa đẹp tự nhiên
{Name}黑客松
今さら聞けないコミュニケーションの基本〜挨拶と基本コミュニケーション 先生:唐沢 明
The trade show ecosytem with kappes additions ch
Theseus
P. point cuidemos la costa
宇城先生0611 fix
Geology 2 eso
Ad

Similar to Generic Image Processing With Climb - Slides (15)

PDF
CG OpenGL 3D object representations-course 8
PPTX
Cloud-based Storage, Processing and Rendering for Gegabytes 3D Biomedical Images
PDF
Graph Databases introduction to rug-b
PDF
MATHEON Center Days: Index determination and structural analysis using Algori...
PPTX
Feature Extraction
PDF
Reyes and Shader Pipeline
PDF
DiscoGAN
PDF
Modern OpenGL Usage: Using Vertex Buffer Objects Well
PDF
Halide - 1
PPSX
point processing
PDF
EMF Compare 2.0: Scaling to Millions (updated)
PDF
Generative modeling with Convolutional Neural Networks
PDF
Recent Progress on Utilizing Tag Information with GANs - StarGAN & TD-GAN
PPT
Point Processing
PDF
Matlab intro
CG OpenGL 3D object representations-course 8
Cloud-based Storage, Processing and Rendering for Gegabytes 3D Biomedical Images
Graph Databases introduction to rug-b
MATHEON Center Days: Index determination and structural analysis using Algori...
Feature Extraction
Reyes and Shader Pipeline
DiscoGAN
Modern OpenGL Usage: Using Vertex Buffer Objects Well
Halide - 1
point processing
EMF Compare 2.0: Scaling to Millions (updated)
Generative modeling with Convolutional Neural Networks
Recent Progress on Utilizing Tag Information with GANs - StarGAN & TD-GAN
Point Processing
Matlab intro

Recently uploaded (20)

PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Cloud computing and distributed systems.
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
MYSQL Presentation for SQL database connectivity
PPT
Teaching material agriculture food technology
Unlocking AI with Model Context Protocol (MCP)
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Cloud computing and distributed systems.
Programs and apps: productivity, graphics, security and other tools
Chapter 3 Spatial Domain Image Processing.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Digital-Transformation-Roadmap-for-Companies.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Spectral efficient network and resource selection model in 5G networks
A comparative analysis of optical character recognition models for extracting...
Encapsulation_ Review paper, used for researhc scholars
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
NewMind AI Weekly Chronicles - August'25-Week II
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
MYSQL Presentation for SQL database connectivity
Teaching material agriculture food technology

Generic Image Processing With Climb - Slides

  • 1. Generic Image Processing with Climb Laurent Senta – Didier Verna April 30, 2012 LRDE EPITA Research Lab lrde.epita.fr
  • 2. Outline • Introduction • Using Climb • Developping Climb • Going Further • Conclusion 2
  • 4. Generic Image Processing Images: Roland Levillain. Software Architecture for Generic Image Processing Tools I H B G C A D F E segmentation I H B G C A D F E 4
  • 5. Genericity Purpose 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 5 type
  • 6. Climb • Generic Image Processing library – Common Lisp • Inspired by Olena: C++, 10 years old – Dynamic vs Static – Usability, maintainability, performance,… • Still in beta Compilers sbcl Dependencies iterate, lisp-magick, cl-heap, lisp-unit, cl-gtk2 6
  • 7. Architecture The different layers of the library GUI Chaining Image Algorithms Operator Generic types Morphers 7
  • 9. Algorithms original grayscale Otsu threshold jitter median filter dilation erosion 9
  • 10. Chaining Operator Chaining algorithms with the $ operator (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’) (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’)) 10
  • 11. Chaining Operator More complex chaining erosion image-load to-gray otsu diff dilation 11
  • 13. Image Definition I H B G C A D F E Image access • matrix[x, y] → pixelvalue • graph.getNode(label) → nodevalue • model[x, y, z] → voxelvalue Generalization: image(site) = value Lisp: (setf (iref image site) value) 13
  • 14. Values and Sites Values: bool grayscale RGB Site: I H B x G C A D F E y 2d-point label (setf (iref image site) (value-inverse (iref image site))) 14
  • 15. Browsing Images Site-set: x I H B G C A D F E y (let ((domain (image-domain image))) (loop :for s := (site-set-next domain) :while s …)) 15
  • 16. Browsing Images Site-set-window: x I H B G C A D F E y (let ((neighbors (site-set-window window site))) (loop :for s := (site-set-next neighbors) :while s …)) 16
  • 17. Morphers Transforming images with morphers Value morpher Structure morpher 17
  • 19. Properties Adapting genericity algorithms support:regular segmentation values type graph bool grayscale rgb 2dmatrix 3dmatrix structures 19 type
  • 20. GUI Climb based interface Value: I H B GTK-BOX G C A Morpher D Resize F E climb graph 20
  • 21. Conclusion Current status Image Processing Practitionner Algorithm implementor • Built-in algorithms • High-level domain model • Composition tools • Generic values • Chaining operator • Generic structures • Morphers • Generic implementations • GUI Hot topics Genericity Usability Performance 21
  • 22. Thanks for your attention, QUESTIONS ? 22
  • 23. 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

Editor's Notes

  • #3: Starts bydescribing Image Processing and whywe are looking for genericityThenwe’lltake a look atClimbfromdifferent point of view: First: as a IP researchersthat uses the toolsweprovide to transformits images Second: as a Developperthatwants to implements new algorithms in the libraryFinally, I’ll show you prototypes that are not fully part of the libraryyetDon’thesitate to ask question any time if I’m not clear
  • #4: Let’s talk about Image Processing
  • #11: Usingsetf and variable to store the intermediateresultsChaining all the algo call in one bigprocedureHowever, the first method: repetitive, many variable, namemistakes = errorsthatcouldbe hard to find the second methodmay push the algorithmparametersaway, hard to understand and modificateWhatwewant to do as IP researchers:chainmanyalgorithm andthe librarywouldimplicitlyunderstandthateachresultismeant to bepassed to the nextprocessingThanks to the Lisp macro system, Climbprovides the $ operatorthatwill replace the first parameter of each call by the result of the previous one.Usingthis IP-orientedsyntax, wecanwritereadblechain of algorithmwithouthaving to deal withmanyrepetition > Best of both world[Demo: erosion](loader le lena-otsu!)
  • #12: Now, sequence of algo: too simpleOftenyouwan to branch the processing in order to construct more complexoperatorsHereis an example of a basic border detectionfilterthatworks by computing the diffbetween the eroded and dilated version of the same image.$-operatordedicated to IP, soanothersyntaxisadded to support thisparadigmwith the 2 slash operator[Demo]I’mgoing to applythisfilter on a a new image,Copy and paste the code fromels.rtWhathappen ?Add the //But I’mmaywant to call functionthat are not part of the image processlikeloggingAdd the ‘(timer-start) ‘(timer-print ‘’Time:’)CallDetailresultsShow the printed messageThis toolis important to us because shows capabilitiesof Lisp to transformitselfconstructDSL not simplydedicated to complex programmer trick but canbeusedto adapt the language to the userswe’reaiming for.
  • #13: Well,nowlet’s a look at the Genericity layer and how wecanadd new algorithm in the library
  • #16: Site-set, set of sites used to browse an areaThey are iterator that returns a site each time you call site-set-next[Slide1-2-3]retrieve all the site for a given image[Slides]Explain line image-domain, call code on s (could be the previous code) no-info underlying typeDemo: InvertNow that we can browse a while image, we also want to browse a specific area,That we call the neighborhood of a site.
  • #17: Anothercommon patternBrowsing a neighborhood allows us to compute local information,And for example, in the segmentation algorithm, find the sitesThat are close, in the value space but also in the structure spaceBrowse a neighborhood: site-set centered on a site and retrieve all it's neighborhoodsUsed for example to compute the mean value in the mean filter or in the erosion/dilationTo spread the values to their neighborsExplain lineAgain, no infoLet’swrite a bluralgorithm[DEMO]
  • #18: In order to finish with the climbdeveloppement, let’stake a look atmorphers.Morpher are objectsbuiltaround an image thatwilltransformsome of it’spropertiesdynamically.Values: transforme the valuesFor example: gray morpher, convert values, image saw by the outside world as grayscaleStructure: Transform the structuresFor example: restrictmorpher, the image saw by the outside world as a smaller oneAvoidWaste of memorySimplifygenericitysinceyoucaneasilyconvert an image that do not fit the prerequisite for an algorithmA thresholdalgorithmthatneeds a grayscale imageAn algorithmthatneeds an image with a size being a power of 2Slower ? Not necessarily: morpherblurwithmorpherresize[Demomorpherblur]
  • #19: NowI’mgoing to talk about prototype thingswe’reworking on
  • #21: these algo are available in a GUI Provide the algorithm without knownledge in programming interesting: based on the generic types defined in ClimbClimb based GUI: climb graph for the algo call and the gtk displaymorpher used for image resizing from the computation to the display (no duplication)Interesting: library generic enough to allows unusual uses of the types[Demo] run the previous $-chain using the GUIAdvantage over $: Cycle for density computation,…
  • #22: Conclusion:Even if Climbis not yet a stable generic IP library, we have been able to developtoolsthat shows how Lisp canbe an interestinglanguage in a domainwere C and C++ are king.Westill have somedevbeforebeing able to release it, howeverheresome point of enhancementwe’dlike to be able to work ongenericity and usability: automorphing performances: bench the wholelibraryusability: goingfurtherwith the gui by discoveringautomatically the algorithms and parameters
  • #23: Label, applicable ?, rIsize