Demo iadflatzone

Flat-zone image simplification by connected filtering.

Description

This experiment illustrates the flat zone extension property of connected filters. The flat zones of an image is the set of the largest connected components with identical intensity values. The main property of the connected filter is that every flat zone of the input image is included in a flat zone of the output image. This example was kindly provided by Prof. Jose Crespo from Facultad de Informatica of Universidad Politecnica de Madrid and adapted from [CSS98].

Script

Reading

The input image is read.

1. a = adreadgray('cameraman.tif')
2. adshow(a)

Flat zone computation

Obtain the flat zones (8-connectivity) and compute its number. The number of flat zones is determined by the maximum labeling value (starting from flat zone one).

1. import ia870 as MT
2. 
3. b = MT.ialabelflat(a,MT.iasebox())
4. nfz = b.max()
5. print 'regions=',nfz
6. adshow(a)
7. adshow(MT.iaglblshow(b))
regions= 43268

Flat zone extension using connected filter

Apply the alternating sequential filter by reconstruction with increasing sizes. They constitute a connected pyramid.

1. t = time.time()
2. c=MT.iaasfrec(a,'CO',MT.iasebox(),MT.iasebox(),2)
3. print 'time:',time.time()-t,'seconds'
4. adshow(c)
time: 4.29671311378 seconds

1. t = time.time()
2. d=MT.iaasfrec(a,'CO',MT.iasebox(),MT.iasebox(),4)
3. print 'time:',time.time()-t,'seconds'
4. adshow(d)
time: 7.61658406258 seconds

1. t = time.time()
2. e=MT.iaasfrec(a,'CO',MT.iasebox(),MT.iasebox(),16)
3. print 'time:',time.time()-t,'seconds'
4. adshow(e)
time: 33.9144129753 seconds

Flat zone visualization and counting

These figures show the image simplification in a connected pyramid. Notice how the shapes are well preserved along the scale space. The number of flat zones at each level of the pyramid are computed to illustrate the flat zone number reduction.

1. c_lab=MT.ialabelflat(c,MT.iasebox())
2. d_lab=MT.ialabelflat(d,MT.iasebox())
3. e_lab=MT.ialabelflat(e,MT.iasebox())
4. print c_lab.max()
5. print d_lab.max()
6. print e_lab.max()
7. adshow(MT.iaglblshow(c_lab))
8. adshow(MT.iaglblshow(d_lab))
9. adshow(MT.iaglblshow(e_lab))
15421
11906
5617

Flat zone inclusion property

In this experiment we select a particular flat zone, the flat zone to which the pixel (90,60) belongs, and display it at each level of the connected pyramid. Notice the flat zone inclusion property.

1. from ia870 import iagshow
2. 
3. c_v=c_lab[89,59]
4. c_flat = (c_lab == c_v)
5. d_v = d_lab[89,59]
6. d_flat = (d_lab == d_v)
7. e_v = e_lab[89,59]
8. e_flat = (e_lab == e_v)
9. adshow(MT.iagshow(a,e_flat,d_flat,c_flat))

See Also

References

  • [CSS98] J. Crespo and R. Schafer and J. Serra and C. Gratin and F. Meyer. The flat zone approach: A general low-level region merging segmentation method. Signal Processing; 62:37-60, 1998.