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

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

Mar 28, 2015

Download

Documents

Sasha Scribner
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Generic Image Processing with Climb Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr.

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 Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr.

2

Outline

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

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

INTRODUCTION

3

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

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 Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr.

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 Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr.

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 Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr.

7

ArchitectureThe different layers of the library

Generic types Morphers

Image Algorithms Chaining Operator

GUI

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

USING CLIMB

8

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

Algorithms

9

original grayscale

median filter

Otsu threshold

dilation erosionjitter

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

(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 Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr.

dilation

diff

erosion

otsuto-grayimage-load

Chaining Operator

11

More complex chaining

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

DEVELOPPING CLIMB

12

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

• 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 Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr.

(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 Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr.

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 Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr.

(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 Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr.

17

MorphersTransforming images with morphers

Value morpher Structure morpher

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

GOING FURTHER

18

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

19

PropertiesAdapting genericity

algorithms

valuestype

structurestype

segmentation

graph

2dmatrix

3dmatrix

bool grayscale rgb

support:regular

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

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 Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr.

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 Laurent Senta – Didier Verna LRDE EPITA Research Lab April 30, 2012 lrde.epita.fr.

22

QUESTIONS ?Thanks for your attention,

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

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