You are on page 1of 48

Lecture 8 (3.31.

08)

Morphological Image Processing

Shahram Ebadollahi

A number of figures used in this presentation are courtesy of


“Morphological Image Analysis” by P. Soille

3/31/2008 DIP ELEN E4830 1


Outline

1 What is Mathematical Morphology?


1 Background Notions
1 Introduction to Set Operations on Images
1 Basic operation
1 Erosion, Dilation, Opening, Closing, Hit-or-Miss
1 Algorithms
1 Morphological operations on gray-level
images

3/31/2008 2
Morphological Image Processing

1 Started in 1960s by G. •Point

Matheron and J. Serra •neighborhood


Ψ
Morphological

1 f g
Image
Analysis of form and Transform

structure of objects g = Ψ[ f ]
Image-to-image transform

1 Tools/Operations for
describing/characterizing
image regions and image
filtering

1 Images are treated as sets


3/31/2008 3
Applications - filtering

3/31/2008 4
Applications - segmentation

3/31/2008 5
Applications - quantification

3/31/2008 6
Background Notions:
Image as a Set
Binary image

f : D f ⊂ Ζ n → {0,1}
Image as a set: Set of all white pixels
definition domain of f –or- image plane

Grey-level image

f : D f ⊂ Ζ n → {0,1, 1 , t max }
Image as Digital Elevation Map (DEM)

• How could the grey-level image be treated as a set?

Image Graph {
G ( f ) = ( x, t ) ∈ Ζ n × Ν 0 | t = f ( x ) }
Image Sub-Graph SG ( f ) = {( x, t ) ∈ Ζ n
× Ν 0 | 0 ≤ t ≤ f ( x) }
3/31/2008 7
Background Notions:
Gray-level Image as a Set

3/31/2008 8
Set Operations on Images -
Union & Intersection

Union ( f ∨ g )( x) = max[ f ( x), g ( x)] SG ( f ∨ g ) = SG ( f ) 2 SG ( g )


Intersection ( f ∧ g )( x) = min[ f ( x), g ( x)] SG ( f ∧ g ) = SG ( f ) 3 SG ( g )

(Ψ1 ∨ Ψ2 )( f ) = Ψ1 ( f ) ∨ Ψ2 ( f )
(Ψ1 ∧ Ψ2 )( f ) = Ψ1 ( f ) ∧ Ψ2 ( f )
3/31/2008 9
Set Operations on Images
max fc f
Complementation

f c ( x) = t max − f ( x)

Set Difference

X \Y = X 3Y c
Note: Only on binary images

g = g (− x) ∀x ∈
Translation

f b ( x ) = f ( x − b)

Reflection

B = {− b | b ∈ B}
3/31/2008 10
Morphological Image Operations

•All morphological image operations are the result


of interaction between a set representing an image
and a set representing a structuring element

•All interactions are based on combination of


intersection, union, complementation and
translation

3/31/2008 11
Graphs
Graph is a pair of vertices
and edges (V,E), where:

V = (v 1 , v 2 , 4 ,vn )
E = (e 1 , e 2 , 4 , em )

• Planar graph
• Simple graph

Neighborhood of vertex v: N G (v) = {v'∈ V | (v, v' ) ∈ E}


Path P in graph G: PG = (v0 , v1 ,4, vl ) , (vi , vi +1 ) neighbors

PGh
3/31/2008 12
Grids & Connectivity

Connectivity:
a set is connected if each pair of
its points can be joined by a path
completely in the set

Gh-Connectivty:
2 pixel p and q of image f are Gh-
connected iff there exists a PGh
path with end points p and q

3/31/2008 13
Structuring Element (SE):
A Small Set for Probing Images

3/31/2008 14
Erosion: “Does the SE fit the set?”

ε B ( X ) = {x | Bx ⊆ X } : Eroding set X with SE B

ε B ( X ) = 3 X −b
b∈B

εB(X ) = X − B

3/31/2008 15
Erosion: Implementation

B f
ε B ( f ) = ∧ f −b
b∈B

⇒ [ε B ( f )]( x) = min f ( x + b)
b∈B

f +1

εB( f )

f −1

3/31/2008 16
Erosion: “Does the SE fit the set?”
Grey-level image

ε B [ SG ( f )] = {( x, t ) | B( x ,t ) ⊆ SG ( f )}

3/31/2008 17
Dilation: “Does the SE hit the set?”

δ B ( X ) = {x | Bx ∩ X ≠ φ } : Dilating set X with SE B

δ B ( X ) = 2 X −b
b∈B

δB(X ) = X ⊕ B

3/31/2008 18
Dilation: Implementation
f
δ B ( f ) = ∨ f −b B
b∈B

⇒ [δ B ( f )]( x) = max f ( x + b)
b∈B

f +1

δB( f )

f −1

3/31/2008 19
Dilation: “Does the SE hit the set?”
Grey-level image

δ B [ SG ( f )] = {( x, t ) | B( x ,t ) 3 SG ( f ) ≠ φ}

3/31/2008 20
Erosion and Dilation: Examples

Dilation

Erosion
then
Dilation

3/31/2008 21
Erosion and Dilation:
Example

3/31/2008
Basic morphological operations in Matlab 22
Properties of Erosion and Dilation

Duality ε B = Cδ B C δ B ( f c ) = ∨ b∈B [t max − f −b ]


= t max − ∧ b∈B [ f −b ]
= t max − ε B ( f )
= [ε B ( f )]c
• Erosion and Dilation are irreversible operations
• Homotopy is not preserved under either one

3/31/2008 23
Properties of Erosion and Dilation

Increasingness
ε ( f ) ≤ ε ( g )
f ≤g ⇒ 
δ ( f ) ≤ δ ( g )

Distributivity
δ (∨ f i ) = ∨ δ ( f i )
i i

ε (∧ f i ) = ∧ ε ( f i )
i i

3/31/2008 24
Properties of Erosion and Dilation

Composition Break down operations using large SE


with multiple operations with small SE.
δ B δ B ( f ) = δ (δ
2 1 ∨ ( B1 )) (f)
B2

ε B ε B ( f ) = ε (δ
2 1 ∨ ( B1 )) (f)
B2
B1 B2 δ B ( B1 )
2

δ nB = δ B (n )

Making a circular disk

3/31/2008 25
Opening –
“If SE fits image then keep all SE!”

γ B ( f ) = δ [ε B ( f )]

B

γ B ( X ) = 2{Bx | Bx ⊆ X }
x

3/31/2008 26
Opening –
“If SE fits the image then keep all SE!”

εB( f ) γB( f )

3/31/2008 27
Closing –
“If SE fits the background then all points in
SE belong to the complement of closing!”

φB ( f ) = ε [δ B ( f )]

B

φB ( X ) = 3{Bxc | X ⊆ Bxc }
x

3/31/2008 28
Closing
δB( f ) φB ( f )

3/31/2008 29
Properties of Opening and Closing

Duality γ B = CφB C

γ ( f ) ≤ γ ( g )
Increasingness f ≤g ⇒ 
φ ( f ) ≤ φ ( g )

Idempotence γ (n ) = γ Sieving process:


same sieve is not
φ (n ) = φ helpful using it
more than once

3/31/2008 30
Opening and Closing: Example

3/31/2008 31
Opening and Closing: Example

3/31/2008 32
Top Hat transform
WTH ( f ) = f − γ ( f )
γB( f )
WTH ( f )

BTH ( f ) = φ ( f ) − f
φB ( f ) BTH ( f )

3/31/2008 33
Top Hat transform

3/31/2008 34
Hit-or-Miss

HMTB ( X ) = {x | ( BFG ) x ⊆ X , ( BBG ) x ⊆ X c }

HMTB ( X ) = ε BFG ( X ) 3 ε BBG ( X c )

• Property: HMTB ( X ) = HMTB c ( X c )

where, B = ( B1 , B2 )
B c = ( B2 , B1 )
3/31/2008 35
Thinning and Thickening

THIN B ( f ) = f − HMTB ( f )
THICK B ( f ) = f + HMTB ( f )

3/31/2008 36
Example Applications:
Boundary Extraction

β( f ) = f −εB( f )

3/31/2008 37
Example Applications:
Region Filling

X k = δ B ( X k −1 ) 3 Ac k = 1,2,3,4

• start with X0=p


• stop when Xk=Xk-1

3/31/2008 38
Example Applications:
Connected component extraction

X k = δ B ( X k −1 ) 3 A k = 1,2,3, 4

3/31/2008 39
Example Applications:
Convex Hull
X ki = HMTB i ( X k −1 ) 2 A i = 1,2,3,4 k = 1,2,3,4

X 0i = A
D i = X ki
4
C ( A) = 2 D i
i =1

3/31/2008 40
Skeletonization

K
S ( A) = 2 S k ( A)
k =0

S k ( A) = ε kB ( A) − φB (ε kB ( A) )

K = max{k | ε kB ( A) ≠ null }
K
A = 2 (δ kB ( S k ( A)))
k =0

3/31/2008 41
Skeletonization (Medial Axis Transform)

Notion of “Maximal Disc”


B is a “Maximal Disc” in set X if there are no
other discs included in X and containing B

Skeleton is the loci of the centers of all


“maximal discs”

S ( X ) = 2 {ε kB ( X ) \ γ B [ε kB ( X )]}
k ≥0

3/31/2008 42
Skeletonization

K
S ( X ) = 2 Sk ( X ) Notion of “Maximal Disc”
k =0

S k ( X ) = ε kB ( X ) − γ B (ε kB ( X ))
ε kB ( X ) = ε B (ε B (4 (ε B ( X )))
K = max{k | ε kB ( X ) ≠ φ }

Reconstruction
K
X = 2 δ kB ( S k ( X )) Skeleton is the loci of the
k =0
centers of all “maximal discs”
δ kB ( X ) = δ B (δ B (4 (δ B ( S k ( X ))))

3/31/2008 43
Matlab examples - dilation
originalBW = imread('text.png');
se = strel('line',11,90);
dilatedBW = imdilate(originalBW,se);
figure, imshow(originalBW), figure, imshow(dilatedBW)

originalI = imread('cameraman.tif');
se = strel('ball',5,5);
dilatedI = imdilate(originalI,se);
figure, imshow(originalI), figure, imshow(dilatedI)

se1 = strel('line',3,0);
se2 = strel('line',3,90);
composition = imdilate(1,[se1 se2],'full')

3/31/2008 44
Matlab examples - erosion

originalBW = imread('text.png');
se = strel('line',11,90);
erodedBW = imerode(originalBW,se);
figure, imshow(originalBW)
figure, imshow(erodedBW)

originalI = imread('cameraman.tif');
se = strel('ball',5,5);
erodedI = imerode(originalI,se);
figure, imshow(originalI), figure, imshow(erodedI)

3/31/2008 45
Matlab examples - closing

originalBW = imread('circles.png');
figure, imshow(originalBW);
se = strel('disk',10);
closeBW = imclose(originalBW,se);
figure, imshow(closeBW);

3/31/2008 46
Matlab examples - opening

original = imread('snowflakes.png');
se = strel('disk',5);
afterOpening = imopen(original,se);
figure, imshow(original), figure, imshow(afterOpening)

3/31/2008 47
Matlab examples - HMT

bw=[0 0 0 0 0 0
001100
011110
011110
001100
0 0 1 0 0 0]

interval = [0 -1 -1
1 1 -1
0 1 0];

bw2 = bwhitmiss(bw,interval)

3/31/2008 48

You might also like