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

Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 

Dernier (20)

Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 

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