generic image processing with climb - slides

23
Generic Image Processing with Climb Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr

Upload: lsenta

Post on 26-Jan-2015

118 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Generic Image Processing With Climb - Slides

Generic Image Processing with Climb

Laurent Senta – Didier Verna

LRDEEPITA Research Lab

April 30, 2012

lrde.epita.fr

Page 2: Generic Image Processing With Climb - Slides

2

Outline

• Introduction• Using Climb• Developping Climb• Going Further• Conclusion

Page 3: Generic Image Processing With Climb - Slides

INTRODUCTION

3

Page 4: Generic Image Processing With Climb - Slides

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

Page 5: Generic Image Processing With Climb - Slides

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

Page 6: Generic Image Processing With Climb - Slides

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

Page 7: Generic Image Processing With Climb - Slides

7

ArchitectureThe different layers of the library

Generic types Morphers

Image Algorithms Chaining Operator

GUI

Page 8: Generic Image Processing With Climb - Slides

USING CLIMB

8

Page 9: Generic Image Processing With Climb - Slides

Algorithms

9

original grayscale

median filter

Otsu threshold

dilation erosionjitter

Page 10: Generic Image Processing With Climb - Slides

(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

Page 11: Generic Image Processing With Climb - Slides

dilation

diff

erosion

otsuto-grayimage-load

Chaining Operator

11

More complex chaining

Page 12: Generic Image Processing With Climb - Slides

DEVELOPPING CLIMB

12

Page 13: Generic Image Processing With Climb - Slides

• 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:

Page 14: Generic Image Processing With Climb - Slides

(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

Page 15: Generic Image Processing With Climb - Slides

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

Page 16: Generic Image Processing With Climb - Slides

(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

Page 17: Generic Image Processing With Climb - Slides

17

MorphersTransforming images with morphers

Value morpher Structure morpher

Page 18: Generic Image Processing With Climb - Slides

GOING FURTHER

18

Page 19: Generic Image Processing With Climb - Slides

19

PropertiesAdapting genericity

algorithms

valuestype

structurestype

segmentation

graph

2dmatrix

3dmatrix

bool grayscale rgb

support:regular

Page 20: Generic Image Processing With Climb - Slides

Value:

GUI

20

Climb based interface

I

A

H B

DC

EF

G

GTK-BOX

Morpher Resize

climb graph

Page 21: Generic Image Processing With Climb - Slides

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

Page 22: Generic Image Processing With Climb - Slides

22

QUESTIONS ?Thanks for your attention,

Page 23: Generic Image Processing With Climb - Slides

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