generic image processing with climb - slides
DESCRIPTION
TRANSCRIPT
Generic Image Processing with Climb
Laurent Senta – Didier Verna
LRDEEPITA Research Lab
April 30, 2012
lrde.epita.fr
2
Outline
• Introduction• Using Climb• Developping Climb• Going Further• Conclusion
INTRODUCTION
3
Generic Image Processing
4
Images: Roland Levillain. Software Architecture for Generic Image Processing Tools
I
A
H B
DC
EF
G
I
A
H B
DC
EF
G
segmentation
Genericity Purpose
5
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
valuestype
structurestype
segmentation
graph
2dmatrix
3dmatrix
bool grayscale rgb
S x V x A combinations
Climb
• Generic Image Processing library– Common Lisp
• Inspired by Olena: C++, 10 years old– Dynamic vs Static– Usability, maintainability, performance,…
• Still in beta
6
Compilers sbcl
Dependencies iterate, lisp-magick, cl-heap, lisp-unit, cl-gtk2
7
ArchitectureThe different layers of the library
Generic types Morphers
Image Algorithms Chaining Operator
GUI
USING CLIMB
8
Algorithms
9
original grayscale
median filter
Otsu threshold
dilation erosionjitter
(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’)
Chaining OperatorChaining algorithms with the $ operator
10
(save (erosion (otsu (image-load ‘images/lena128gray.jpg’)) (4-connectivity)) ‘out/lena-eroded.png’)
image-load ‘images/lena128gray.jpg’otsudilation (4-connectivity)save ‘out/lena-eroded.png’
($ (image-load ‘images/lena128gray.jpg’) (otsu) (dilation (4-connectivity)) (save ‘out/lena-eroded.png’))
chain
dilation
diff
erosion
otsuto-grayimage-load
Chaining Operator
11
More complex chaining
DEVELOPPING CLIMB
12
• matrix[x, y] → pixelvalue
• graph.getNode(label) → nodevalue
• model[x, y, z] → voxelvalue
• matrix[x, y] → pixelvalue
• graph.getNode(label) → nodevalue
• model[x, y, z] → voxelvalue
Image Definition
13
I
A
H B
DC
EF
G
Image access
image(site) = value
(setf (iref image site) value)
Generalization:
Lisp:
(value-inverse ) (iref image site)(setf (iref image site) )
Values and Sites
14
Values:
Site:
bool grayscale RGB
x
y
I
A
H B
DC
EF
G
2d-point label
Browsing Images
15
x
y
Site-set:
(let ( ) (loop :for s := :while s ))
(domain (image-domain image))(site-set-next domain)
…
I
A
H B
DC
EF
G
(let ( ) (loop :for s := :while s )) …
(site-set-next neighbors) (neighbors (site-set-window window site))
Browsing Images
16
x
y
Site-set-window:
I
A
H B
DC
EF
G
17
MorphersTransforming images with morphers
Value morpher Structure morpher
GOING FURTHER
18
19
PropertiesAdapting genericity
algorithms
valuestype
structurestype
segmentation
graph
2dmatrix
3dmatrix
bool grayscale rgb
support:regular
Value:
GUI
20
Climb based interface
I
A
H B
DC
EF
G
GTK-BOX
Morpher Resize
climb graph
Conclusion
21
Current status
Image Processing Practitionner Algorithm implementor
• Built-in algorithms• Composition tools• Chaining operator• Morphers
• GUI
• High-level domain model• Generic values• Generic structures• Generic implementations
Hot topics
Genericity Usability Performance
22
QUESTIONS ?Thanks for your attention,
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