SlideShare ist ein Scribd-Unternehmen logo
1 von 23
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

Weitere ähnliche Inhalte

Was ist angesagt?

Form 5 formulae and note
Form 5 formulae and noteForm 5 formulae and note
Form 5 formulae and notesmktsj2
 
Csr2011 june14 17_00_pospelov
Csr2011 june14 17_00_pospelovCsr2011 june14 17_00_pospelov
Csr2011 june14 17_00_pospelovCSR2011
 
Mesh Processing Course : Differential Calculus
Mesh Processing Course : Differential CalculusMesh Processing Course : Differential Calculus
Mesh Processing Course : Differential CalculusGabriel Peyré
 
Functional Programming in C++
Functional Programming in C++Functional Programming in C++
Functional Programming in C++sankeld
 
Object recognition with pictorial structures
Object recognition with pictorial structuresObject recognition with pictorial structures
Object recognition with pictorial structureszukun
 
Finding%20 trigonometric%20ratios
Finding%20 trigonometric%20ratiosFinding%20 trigonometric%20ratios
Finding%20 trigonometric%20ratiosNene Thomas
 

Was ist angesagt? (10)

Form 5 formulae and note
Form 5 formulae and noteForm 5 formulae and note
Form 5 formulae and note
 
Opencv
OpencvOpencv
Opencv
 
Csr2011 june14 17_00_pospelov
Csr2011 june14 17_00_pospelovCsr2011 june14 17_00_pospelov
Csr2011 june14 17_00_pospelov
 
Introduction to OpenCV
Introduction to OpenCVIntroduction to OpenCV
Introduction to OpenCV
 
Mesh Processing Course : Differential Calculus
Mesh Processing Course : Differential CalculusMesh Processing Course : Differential Calculus
Mesh Processing Course : Differential Calculus
 
Functional Programming in C++
Functional Programming in C++Functional Programming in C++
Functional Programming in C++
 
DBMS Class 2
DBMS Class 2DBMS Class 2
DBMS Class 2
 
006 hyperbola
006 hyperbola006 hyperbola
006 hyperbola
 
Object recognition with pictorial structures
Object recognition with pictorial structuresObject recognition with pictorial structures
Object recognition with pictorial structures
 
Finding%20 trigonometric%20ratios
Finding%20 trigonometric%20ratiosFinding%20 trigonometric%20ratios
Finding%20 trigonometric%20ratios
 

Andere mochten auch

Kekeliruan Konsep Nur Muhammad
Kekeliruan Konsep  Nur MuhammadKekeliruan Konsep  Nur Muhammad
Kekeliruan Konsep Nur MuhammadAbu Muhammad
 
Jash mehta ist 659 final project report
Jash mehta ist 659 final project reportJash mehta ist 659 final project report
Jash mehta ist 659 final project reportJash Mehta
 
Cách cắm hoa đẹp tự nhiên
Cách cắm hoa đẹp tự nhiênCách cắm hoa đẹp tự nhiên
Cách cắm hoa đẹp tự nhiênLong Nguyen
 
{Name}黑客松
{Name}黑客松{Name}黑客松
{Name}黑客松Ben Liu
 
今さら聞けないコミュニケーションの基本〜挨拶と基本コミュニケーション 先生:唐沢 明
今さら聞けないコミュニケーションの基本〜挨拶と基本コミュニケーション 先生:唐沢 明今さら聞けないコミュニケーションの基本〜挨拶と基本コミュニケーション 先生:唐沢 明
今さら聞けないコミュニケーションの基本〜挨拶と基本コミュニケーション 先生:唐沢 明schoowebcampus
 
The trade show ecosytem with kappes additions ch
The trade show ecosytem with kappes additions chThe trade show ecosytem with kappes additions ch
The trade show ecosytem with kappes additions chChristopher Kappes
 

Andere mochten auch (11)

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

Ähnlich wie Generic Image Processing With Climb - Slides

CG OpenGL 3D object representations-course 8
CG OpenGL 3D object representations-course 8CG OpenGL 3D object representations-course 8
CG OpenGL 3D object representations-course 8fungfung Chen
 
Cloud-based Storage, Processing and Rendering for Gegabytes 3D Biomedical Images
Cloud-based Storage, Processing and Rendering for Gegabytes 3D Biomedical ImagesCloud-based Storage, Processing and Rendering for Gegabytes 3D Biomedical Images
Cloud-based Storage, Processing and Rendering for Gegabytes 3D Biomedical ImagesYan Xu
 
Graph Databases introduction to rug-b
Graph Databases introduction to rug-bGraph Databases introduction to rug-b
Graph Databases introduction to rug-bPere Urbón-Bayes
 
MATHEON Center Days: Index determination and structural analysis using Algori...
MATHEON Center Days: Index determination and structural analysis using Algori...MATHEON Center Days: Index determination and structural analysis using Algori...
MATHEON Center Days: Index determination and structural analysis using Algori...Dagmar Monett
 
Reyes and Shader Pipeline
Reyes and Shader PipelineReyes and Shader Pipeline
Reyes and Shader PipelineShuen-Huei Guan
 
Modern OpenGL Usage: Using Vertex Buffer Objects Well
Modern OpenGL Usage: Using Vertex Buffer Objects Well Modern OpenGL Usage: Using Vertex Buffer Objects Well
Modern OpenGL Usage: Using Vertex Buffer Objects Well Mark Kilgard
 
Halide - 1
Halide - 1Halide - 1
Halide - 1Kobe Yu
 
EMF Compare 2.0: Scaling to Millions (updated)
EMF Compare 2.0: Scaling to Millions (updated)EMF Compare 2.0: Scaling to Millions (updated)
EMF Compare 2.0: Scaling to Millions (updated)mikaelbarbero
 
Generative modeling with Convolutional Neural Networks
Generative modeling with Convolutional Neural NetworksGenerative modeling with Convolutional Neural Networks
Generative modeling with Convolutional Neural NetworksDenis Dus
 
Recent Progress on Utilizing Tag Information with GANs - StarGAN & TD-GAN
Recent Progress on Utilizing Tag Information with GANs - StarGAN & TD-GANRecent Progress on Utilizing Tag Information with GANs - StarGAN & TD-GAN
Recent Progress on Utilizing Tag Information with GANs - StarGAN & TD-GANHao-Wen (Herman) Dong
 
Matlab intro
Matlab introMatlab intro
Matlab introfvijayami
 

Ähnlich wie Generic Image Processing With Climb - Slides (15)

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

Kürzlich hochgeladen

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 

Kürzlich hochgeladen (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 

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

Hinweis der Redaktion

  1. 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
  2. Let’s talk about Image Processing
  3. 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!)
  4. 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.
  5. Well,nowlet’s a look at the Genericity layer and how wecanadd new algorithm in the library
  6. 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.
  7. 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]
  8. 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]
  9. NowI’mgoing to talk about prototype thingswe’reworking on
  10. 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,…
  11. 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
  12. Label, applicable ?, rIsize