packages icon



 morph(1)                                                           morph(1)
 Richard Alan Peters II                               Richard Alan Peters II

                                 10 May 1993



 NAME morph - 2D image morphology


 SYNOPSIS
      morph <In >Out -m e|d|o|c|r|t|b|l|m|n|p|q [-i g|b] [-s g|b]
             [-o s|f] [-t nnn [mmm] ] [-l kkk lll ] [-r med |nnn]
             [-z] [-n] [-v]
             -k SEFile | 3x3 | 5x5 | plus | auto xxx yyy [zzz]

 AVAILABILITY
      The software was written by

           Richard Alan Peters II, Ph. D.
           Department of Electrical Engineering
           Vanderbilt University School of Engineering
           Nashville, TN 37235
           rap2@vuse.vanderbilt.edu

      It is available directly from the author.

 DESCRIPTION
      This program performs many (if not all) possible 2D morphological
      operations on grayscale or binary images. This includes hit-or-miss
      transforms, order-statistic filters, lower-upper-middle filters,
      function-processing or set-processing erosion, dilation, opening and
      closing, tophat (image minus opening), bothat (closing minus image),
      and isolated delete functions.  For an excellent tutorial on image
      morphology, see Haralick, R.M, S.R. Sternberg, and X. Zhuang, "Image
      analysis using mathematical morphology," IEEE Trans. PAMI, vol.
      PAMI-9, No. 4, July 1987, pp. 532-550. Or see Maragos, P. and R.
      Shaffer, "Morphological systems for multidimensional Signal
      Processing", Proc. IEEE, vol. 78, no. 4, April 1990. For additional
      info on the hit-or-miss transform, see J. Serra, Image Analysis and
      Mathematical Morphology, Academic Press, London, 1982. For additional
      info on the lower-upper-middle filter, see R. C., and C. G. Boncelet,
      "LUM filters: A class of rank-order-based filters for smoothing and
      sharpening," IEEE Trans. Signal Processing, vol. SP-41, No. 3, March
      1993.  Program morph performs morphological operations on Sun
      RasterFiles using the subroutine morph_sub(1).  Program morph is a
      user interface that decodes the user specified options, sets up the
      arguments for morph_sub, and reads and writes rasterfiles.  Subroutine
      morph_sub actually perfoms all the morphology. Users wanting to do
      morphology on image formats other than Sun raster files, are
      encouraged to write a program, like morph, that calls morph_sub.

 OPTIONS
      Options may appear in any order.  In is the path name of the Sun
      rasterfile input image. (Type <In so the file is read in through
      stdin.) Out is the pathname of the Sun rasterfile output image.  (Type



                                    - 1 -         Formatted:  March 28, 2024






 morph(1)                                                           morph(1)
 Richard Alan Peters II                               Richard Alan Peters II

                                 10 May 1993



      >Out so the file is output through stdout.) Program morph extracts and
      operates on the luminance component of the image. Hence, the output is
      grayscale, even if the input is an 8-bit color rasterfile.  morph does
      not operate on 1-bit binary nor 24-bit true-color rasterfiles.  The
      letter following -m indicates the morphological operation:
           e  - erode
           d  - dilate
           o  - open
           c  - close
           r  - rank filter
           t  - top hat transform (image minus opening)
           b  - bot hat transform (closing minus image)
           l  - general LUM (lower-upper-middle) filter
           m  - LUM smoothing filter
           n  - LUM sharpening filter
           p  - I && !E (pixelwise)  where I = original image;
                   E = eroded image;
           q  - D && !I (pixelwise) D = dilated image;
      one of these letters must be specified; there is no default.
           l is the lower-upper-middle filter as defined by Hardie and
           Boncelet, (reference given above). m is the LUM smoothing filter
           defined therein, and n is the LUM sharpening filter. These
           filters compare the center pixel in a neighborhood defined by an
           SE to upper and lower order statistics in the neighborhood.
           Depending on the ordering either the center pixel or one of the
           order stats is output. Note that we define order statistics
           opposite Hardie and Boncelet Whereas OS(1) is the minimum for
           them OS(1) is the maximum in these routines. p with a binary
           hit-or-miss structuring element (SE) will delete in a binary
           image, white features with the shape of the "hit" portion of the
           SE.  (e.g. one can easily devise a SE to delete isolated pixels).
           p with a grayscale SE will delete the "interiors" from sets of
           white pixels in a binary image.  q with a binary hit-or-miss
           structuring element will delete in a binary image, black features
           with the shape of the "hit" portion of the SE.  (e.g. one can
           easily devise a SE to delete isolated pixels).  q with a
           grayscale SE will delete the "interiors" from sets of black
           pixels in a binary image.
      Switch -i indicates that the next letter tells the image type: either
      g for a grayscale image or b for a binary image. If -i is not
      included, the default is grayscale.  Switch -s indicates that the next
      letter tells the structuring element (SE) type: either b for a binary
      SE or g for a grayscale SE. If -s is not included, the default is
      grayscale.  The letter following -o , either s or f , indicates that
      the operation is either a set operation or a function operation.  (See
      reference.) If -o is not included, the default is set op.  -t nnn
      [mmm] indicates that a threshold of value nnn from below (and mmm from
      above; if unspecified mmm == 255 ) will be used on the input if the
      following 2 criteria are true: the input is a grayscale image AND the



                                    - 2 -         Formatted:  March 28, 2024






 morph(1)                                                           morph(1)
 Richard Alan Peters II                               Richard Alan Peters II

                                 10 May 1993



      operation is a set operation. If the two criteria are true and -t nnn
      [mmm] is not included, the operation is treated as a function and set
      processing (FSP) operation (See the Maragos paper).  If the criteria
      are not true and -t nnn is specified anyway, it is ignored.  Note that
      you can do a simple threshold at 128 of a grayscale image with: morph
      < in.ras > out.ras  -m e -t 128 -k auto 1 1 Switch -r is meaningful
      only if -m r is specified. Then the field following -r indicates the
      order of the filter. If the letters " med " are in the field, a median
      filter is used. If the field contains a number, nnn , then that value
      is used. If -m r is specified and -r med | nnn is not, the rank filter
      defaults to a median filter.  Switch -l is meaningful only if -m l, -m
      m, or -m n is specified.  then kkk and lll are integers that
      correspond to the the values in Hardie and Boncelet (referenced
      above).  If -m l is specified, the general LUM filter is selected,
      then integers kkk and lll in the statement -l kkk lll must satisfy 1
      <= kkk <= lll <= med == int(SESupport / 2) + 1, where SESupport is the
      number of active pixels in the structuring element specified by the
      argument(s) following the -k flag.  If -m m is specified, the LUM
      smoothing filter is selected, then integer kkk in the statement -l kkk
      lll must satisfy 1 <= kkk <= med == int(SESupport / 2) + 1. The value
      of lll is ignored.  If -m n is specified, the LUM sharpening filter is
      selected, then integer lll in the statement -l kkk lll must satisfy 1
      <= lll <= med == int(SESupport / 2) + 1. The value of kkk is ignored.
      To have morph tell you the value of int(SESupport / 2) + 1, execute
      the program with -l 0 0 as well as the -k SE specification.


      The presence of switch -z tells the program NOT to zero-pad the
      boundary of the image. With this option, the output image has a border
      of zeros inside it the width and height of the SE. That is, the
      transformed area of the output image is smaller than the actual image
      dimensions. This is, in a sense, a more accurate result than the zero
      padded default. To zero pad the input permits the program to transform
      the border region, but it does this on the assumption that the
      original scene was black outside the image. This, of course, is almost
      never true. Thus, the border region is inaccurately transformed. Use
      this switch if accuracy is more important than having an image that is
      "colored in" out to the boundary.  Switch -n tells the program NOT to
      scale the output of the operation.  Such scaling happens by default
      for a function operation (-o f) on a gray-scale image (-i g) with a
      gray-scale SE (-s g).  This switch is ignored by other operations.
      Switch -v tells the program to display some info as it computes.  The
      parameters following switch -k specify the structuring element (SE) in
      one of 5 ways:
           (1) 3x3 - specifies the structuring element to be a 3 by 3 square
           of pixels. (2) plus -  specifies the SE to be a 3 by 3 "+" shaped
           set of pixels.  (3) 5x5 -  specifies the SE to be a 5x5 quasi
           disk (square without corners) of pixels.  (4) auto x y [z] -  the
           program makes an SE. The self-made SE is a disk with support



                                    - 3 -         Formatted:  March 28, 2024






 morph(1)                                                           morph(1)
 Richard Alan Peters II                               Richard Alan Peters II

                                 10 May 1993



           covering x pixels horizontally and y pixels vertically. x and y
           may be odd or even. (There is no restriction.) If specified, z is
           the gray level of the center pixel. If z is not given, the level
           defaults to BLACK (0).  If auto is specified the SE type is set
           to gray.  (5) If the field following -k is not one of the above,
           then the string, called SEFILE in the usage example, is taken as
           the pathname of a structuring element file. If the user has an
           environment variable called SEPATH, the program appends SEFILE to
           it for the complete pathname.
      If any of the program-generated structuring elments, 3x3, plus, 5x5,
      or auto is requested, the structuring element type is set to grayscale
      and the -s flag is ignored. Similarly, if 3x3, plus, or 5x5 is
      requested the operation type is forced to be set processing and the -o
      flag is ignored.  If auto is requested, the operation type is taken as
      set processing if option z is not specified or specified to be zero,
      and the operation type is taken as function processing if a nonzero z
      is specified.  A structuring element file is an ASCII file of integers
      separated by spaces. The first two numbers, x, y, are the horizontal
      and vertical dimensions in pixels of the smallest rectangle that will
      cover the structuring element. Both x and y must be > 0.  The next two
      numbers, i, j are the horizontal and vertical coordinates,
      respectively, of the SE origin. IMPORTANT: The origin is expected to
      be in the covering rectangle. The upper left hand corner of  the
      rectangle has coordinates (0,0); the lower right is (x-1,y-1).
      Following the first four integers are x*y integers separated by spaces
      and or returns. These numbers are the SE elements. Their
      interpretation depends on the morphological operation being performed.
      Negative SE elements are ALWAYS treated as logical DON'T CAREs. That
      is, when the operation is in progress, image pixels under negative SE
      elements are ignored. Thus, the support of the SE is limited to those
      elments that are nonnegative. This permits the creation of odd-shaped
      and multiply connected SE's, or an SE whose origin is outside its
      active pixel area.  If the input image is flagged binary, -i b, (i.e.
      pixels grouped as zero and not zero), and the SE is flaged binary, -s
      b, then the SE is used to perform a hit-or-miss transform. In this
      case, zero SE elements cover the "miss" support and nonzero (positive)
      elements cover the "hit" support. The gray-levels other than this are
      ignored.  If the input image is flagged -i b and the SE is flagged
      gray (-s g) then the nonnegative (both zero and greater than zero) SE
      elements determine the support of a "hit-only" transform.  That is,
      the nonnegative suport is used as a standard "set"-type SE for set
      (binary) morphology. (Of course, the other gray-level info is
      ignored.) Note: If the input is flagged -i b, then the flag [-o s|f]
      is ignored.  Here are the possible gray-level image flags and the
      resulting interpretation of the SE elements:
           -i g -s b -o s Function-set morphology on support of strictly
           greater than zero SE elements.  -i g -s b -o f Same as above.  -i
           g -s g -o s Function-set morphology on support of nonnegative
           (greater than or equal to zero) SE elements.  -i g -s g -o f



                                    - 4 -         Formatted:  March 28, 2024






 morph(1)                                                           morph(1)
 Richard Alan Peters II                               Richard Alan Peters II

                                 10 May 1993



           Function-function morphology on support of nonnegative SE
           elements.  If one of the canned SE's (3x3, plus, or 5x5) is
           chosen, the -s and -o flags are forced to be -s g and -o s.  If
           -k auto is selected, -s is forced to -s g.  If along with -k
           auto, the optional z value is set to a number greater than 0, -o
           is forced to -o f; if z is either zero or left out, -o is forced
           to -o s.













































                                    - 5 -         Formatted:  March 28, 2024