[Next] [Up] [Previous]
Next: Exercises Up: Appendix: Recognizing an Underground Previous: Appendix: Recognizing an Underground

A POP-11 Procedure to Find Regions

In the second part of this chapter, a region finding procedure is described which takes a list of ranges and labels each pixel of an image according to which of the ranges the corresponding grey-level is contained within or 0 if it is not contained within any of the ranges.

The following procedure performs this labelling for a given image and list of ranges:

define findregions(image, ranges) -> regionmap;

  vars a, b, table, i, label, xsize, ysize, x, y;



  /* build a table mapping grey-levels to labels   */

  /* (2nd arg. to newarray initializes cells to 0) */

  newarray([0 99],0) -> table;

  0 -> label;

  foreach [?a ?b] in ranges do

    label + 1 -> label;

    for i from a to b do

      label -> table(i)

    endfor

  endforeach;



  /* construct a region map from image by assigning label

     from table to each pixel according to grey-level */



  boundslist(image) --> [1 ?xsize 1 ?ysize];

  newarray([1 ^xsize 1 ^ysize]) -> regionmap;

  for y from 1 to ysize do

    for x from 1 to xsize do

      table(image(x,y)) -> regionmap(x,y)

    endfor

  endfor;



enddefine;



Cogsweb Project: luisgh@cogs.susx.ac.uk