SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

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
 

Tendances (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
 

En vedette

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
 

En vedette (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
 

Similaire à 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
 

Similaire à 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
 

Dernier

Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 

Dernier (20)

Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 

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

Notes de l'éditeur

  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