Generic Image Processing with Climb Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30,...

Preview:

Citation preview

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

Recommended