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
Top Related