feature

Outputs

 which are mapped to avs parameters, inputs, and outputs, are for the
khoros library routine.
************************************************************************************
Documentation for avs module vfractal

Input

     img            xvimage structure
     region         region window size argument
     lo_size        starting size of sliding window
     step           step size or increment of sliding window
OUTPUT
      img           holds the resulting  feature  of  the  image.
                    img is used for both the input xvimage struc-
                    ture and the resulting output xvimage  struc-
                    ture.

Description

     vfractal performs a fractal feature extraction of  an  image
     via  calculation  of the fractal dimension "D".  The fractal
     dimension is computed based on a calculation  of  the  Hurst
     coefficient  within  a  selected  window  size  or  "fractal
     region" of the image.  The Hurst coefficient is a measure of
     the  slope  of  the line relating the window size vs average
     range of image intensity.  The Hurst coefficient is  related
     to the fractal dimension as follows,
                          D = 3 - H
        where,
                 D  -  is the resulting fractal dimension
                 H  -  is the computed Hurst coefficient
                 3  -  constant related to the Euclidian geometry
     The fractal dimension operation is computed, using  overlap-
     ping  windows,  over  the  entire  image.  A range of window
     sizes up to one third of the size of the fractal region  are
     used  to  compute the fractal dimension. The center pixel in
     each fractal region is updated based on  the  Hurst  coeffi-
     cient  and subsequent fractal dimension calculation for that
     region.
     The input image, which MUST be of data storage  type  FLOAT,
     corresponds  to  the  -i  argument.  The output image, which
     corresponds to the -o  argument,  is  stored  as  data  type
     FLOAT.   The  resulting  output  image will be a single band
     image, and will have a border consisting of pixels of  value
     0,  since the window operation does not calculate values for
     border pixels.
     The size of the window for the "fractal region" is specified
     by  the  -r  region size argument.  The region size argument
     cannot be an even number.  This means that the region dimen-
     sions must be odd (ie. 15x15, 17x17, etc.), since the center
     pixel is replaced with the  computed  value  of  the  window
     data.  The default region size is 15x15.
     The initial size of the sliding window in the fractal region
     is specified by the -w initial sliding window size argument.
     The size of the sliding window cannot be  less  than  2  and
     cannot exceed 2 minus the upper window size.  The upper win-
     dow size is determined by the region size, and cannot exceed
     one-third  of the region size.  The size of the lower window
     cannot exceed 2 minus the  upper  window  size,  because  at
     least  two  points  are needed to calculate the slope of the
     best fit line.
     The step size specifies the increment to use when increment-
     ing  the sliding window size from the initial size (-w argu-
     ment) to the upper window size (determined from  the  region
     size).   The  step  size  cannot  exceed  a value that would
     prevent at least two points from being used to calculate the
     slope  of  the best fit line.  The step size is specified by
     the -s step size argument.
     Each pixel in the image is updated  with  a  computed  value
     except  the  border pixels.  A 15x15 window will result in a
     border of seven pixels, a 17x17  window  will  result  in  a
     border of eight pixels, etc.
     The resulting feature vector will contain one band of  data,
     which  contains  the  computed  fractal dimension "D" of the
     image  intensity  data  for  the  particular   region   size
     selected.   Note  that  different results may be obtained by
     varying the region size and initial size of the sliding win-
     dow.
     Comments - To calculate the overall fractal dimension of  an
     image,  set the region size to be the same size as the image
     (Note: region size must be odd), and use an initial  sliding
     window  size  about  one-fourth  to  one-third of the region
     size.  This  will  result  in  one  value  for  the  fractal
     dimension  of  the image, which can be obtained from running
     vstats.
     When running this algorithm on a large image  using  a  wide
     range  of  sliding  window sizes, it may be helpful to use a
     generous step size to speed up the processing of the  image.
     For example, if a 256 by 256 image is being processed with a
     region size of 65 and an initial sliding window size  of  3,
     it  may  be  helpful  to select a step size of about 6.  The
     following window sizes would be used in the  calculation  of
     the  Hurst  coefficient  (slope  of  best fit line):  window
     sizes --> 3  9  15  21
     If finer resolution is needed, a smaller step size should be
     used at the expense of processing time.
     To view the resulting fractal dimension image  in  3-D,  use
     Xprism3 to plot the image as a surface plot.
     The input image MUST be of data storage type FLOAT.
     The output image is of data storage type FLOAT.
     img            the "img" argument specifies the input image,
                    which must be of data storage type FLOAT. The
                    output image is stored as  data  type  FLOAT.
                    The  resulting  output image will be a single
                    band image, and will have a border consisting
                    of pixels of value 0, since the window opera-
                    tion does not  calculate  values  for  border
                    pixels.
     region         the "region" size argument specifies the size
                    of  the  window  for the fractal region.  The
                    region  size  argument  cannot  be  an   even
                    number.   This  means  that the region dimen-
                    sions must be odd (ie. 15x15,  17x17,  etc.),
                    since  the  center pixel is replaced with the
                    computed value of the window data.  The  rou-
                    tine checks to make sure that the region size
                    does not exceed the image size.
     lo_size        the "lo_size" argument specifies the  initial
                    size  of  the  sliding  window in the fractal
                    region.  The size of the sliding window  can-
                    not  be less than 2 and cannot exceed 2 minus
                    the upper window size.  The upper window size
                    is  determined by the region size, and cannot
                    exceed one-third of  the  region  size.   The
                    size  of  the  lower  window  cannot exceed 2
                    minus the upper window size, because at least
                    two  points are needed to calculate the slope
                    of the best fit line.  The proper  bounds  of
                    the window sizes are checked in this routine.
     step           the "step" size specifies  the  increment  to
                    use when incrementing the sliding window size
                    from the initial size  to  the  upper  window
                    size  (determined from the region size).  The
                    step size cannot exceed a  value  that  would
                    prevent  at  least two points from being used
                    to calculate the slope of the best fit  line.
                    The  step  size  is checked to ensure that at
                    least two points are generated for the calcu-
                    lation of the slope.

See also

     vfractal(1), intro(3), vipl(3), verror(3), vutils(3)
RESTRICTIONS
     vfractal will only operate on images of data  storage  type
     FLOAT.
     The output image is of data storage type FLOAT.

Author

     Charlie Gage
COPYRIGHT
     Copyright  1991,  University  of  New  Mexico.   All  rights
     reserved.
*************************************************************************************
Documentation for avs module vpml
INPUT
     img            input image structure
     lower          specifies the initial  size  of  the  sliding
                    window.
     upper          specifies the upper size of the sliding  win-
                    dow.
     step           specifies the step size  or  interval  for  a
                    range of window sizes.
     range_q        specifies the range of moments  to  base  the
                    P(m,L) calculations on.
OUTPUT
     img1           output image structure, may be multiband.
     fd_img         fractal dimension image, represents the frac-
                    tal dimension vectors.
     printdev       ASCII output file for the image information.
DESCRIPTION
     vpml estimates the fractal dimension of an  image  based  on
     the  probability  that there are m pixels within a window of
     size L centered on a pixel from a particular class.   For  a
     selected  range  of window sizes (L), the window is centered
     on the first occurrence of the pixel belonging to a particu-
     lar  class.  The number of pixels within a window of size L,
     belonging to a specific class  are  counted  (including  the
     center  pixel of the window), and a "histogram" is formed as
     the window  is  moved  over  the  image.   This  "histogram"
     represents the total number of occurrences, m, of a class of
     pixels in a window of  size  L.   From  this,  a  normalized
     histogram  is formed, which yields an estimate of the proba-
     bility density function, P(m,L), for each window size L.
     All selected moments (q) of  the  P(m,L)  distributions  for
     each  of  the  desired  window  sizes  are determined, and a
     linear regression or "best fit line" is found for the moment
     generating  function,  log(M(L))^1/q,  versus the log of the
     window size, log(L).  The slope of the "best fit line"  pro-
     vides an estimate for the fractal dimension, D.
     The center pixel of the largest window,  Lmax,  is  replaced
     with the computed fractal dimension based on the probability
     density function, P(m,L).  The largest  window  size,  Lmax,
     determines  the  resulting  size  of  the  fractal dimension
     image.  This results in a border of size (Lmax /  2)  around
     the image, which is set to zero.
     The input image  MUST  be  of  data  storage  type  BYTE  or
     INTEGER.
     The input arguments are described as follows:
     img            specifies the input image, which must  be  of
                    data  type  BYTE  or INTEGER. The input image
                    must be a single band image.
     img1           specifies the output image, which will  be  a
                    multiband   image  representing  the  fractal
                    dimension of the input image for each of  the
                    specified   moments.   The  resulting  output
                    image will be of data storage type FLOAT, and
                    will  have  a border of pixels of value zero.
                    The size of the border will be determined  by
                    the  size  of  the  largest window specified.
                    This can be  determined  from  the  following
                    formulation,  (Lmax  -1)  /  2 = border size.
                    Where Lmax is the size of the largest  window
                    used.   For  example,  if  the largest window
                    size is 9, then the border size will be (9  -
                    1) / 2 = 4 pixels.
     fd_img         specifies fractal dimension image, represent-
                    ing  the  fractal  dimension vectors for each
                    class and moment.   This  image  will  always
                    have a row size of 1 and a column size deter-
                    mined by the number of classes in  the  input
                    image.   The  number  of  data  bands will be
                    equal to the number of moments  used  in  the
                    estimation of the fractal dimension.
     printdev       uses an ASCII file as output  for  the  image
                    information  specifying the size of the input
                    image, number of classes in the input  image,
                    and  the range of moments used in the estima-
                    tion of the fractal dimension.  Also included
                    is  a  listing  of the fractal dimensions for
                    each class and moment.
     lower          specifies the initial or lower  size  of  the
                    sliding  window.   This MUST be an odd number
                    resulting in a window with  a  center  pixel.
                    This means that the minimum size of the slid-
                    ing window is 3 x 3.  The default value is 3,
                    resulting in an initial window size of 3 x 3.
     upper          specifies the final  or  upper  size  of  the
                    sliding  window.   This  MUST  also be an odd
                    number resulting in a window  with  a  center
                    pixel.   The size of the upper window MUST be
                    at least one step greater than the lower win-
                    dow  size.  That is, if the lower window is 3
                    x 3, then the minimum size of the upper  win-
                    dow  must  be 5 x 5, or one step greater than
                    the lower window.  This is  necessary,  since
                    there  must be at least two points for a best
                    fit line to be formed determining  the  slope
                    and ultimately the fractal dimension.
     step           specifies the step size or interval used when
                    specifying  a  range  of  window  sizes.  The
                    default value is two,  corresponding  to  the
                    next  odd  window  size  with a center pixel.
                    This may be helpful when a wide range of win-
                    dow  sizes is required, as it will reduce the
                    number of points generated for the  best  fit
                    line and hence the number of calculations.
     range_q        specifies the range of moments  to  base  the
                    P(m,L)  fractal  dimension  calculations  on.
                    This must be an odd number, corresponding  to
                    the  number of moments centered on zero.  For

Example

a value of 5  would  result  in  the
                    computation  of the fractal dimension for the
                    range of moments,  -2,  -1,  0,  1,  2.   The
                    default value is 3, resulting in the range of
                    -1, 0, 1.
     The input image  MUST  be  of  data  storage  type  BYTE  or
     INTEGER.
SEE ALSO
     vpml(1), intro(3), vipl(3), verror(3), vutils(3)
RESTRICTIONS
     The input image  MUST  be  of  data  storage  type  BYTE  or
     INTEGER. The output images are of data storage type FLOAT.
AUTHOR
     Charlie Gage
COPYRIGHT
     Copyright  1991,  University  of  New  Mexico.   All  rights
     reserved.
************************************************************************************
Documentation for avs module vpolygon
INPUT
          image -- xvimage structure of edge image (input image)
          seuil -- double of threshold  value  for  approximation
          error.
          coef --  double  of  percentage  line  length  that  is
          rejected.
          longmin -- integer of minimal length for skipping  over
          too small straigth lines.
OUTPUT
          image -- xvimage structure of 2D image to  display  the
          result of linear approximation.
          vector -- xvimage structure of output vector image.
DESCRIPTION
     vpolygon will create a vector image resulting of  a  linear
     approximation.   image  is  a pointer to a xvimage structure
     that contains the edge image to process. Note that image  is
     used  for both the input xvimage structure and the resulting
     output xvimage structure for displaying.  This  is  done  to
     save  space, but you must be careful not to overwrite impor-
     tant data.
SEE ALSO
     vpolygon(1), intro(3), vipl(3), verror(3), vutils(3)
RESTRICTIONS
     vpolygon will operate on VFF_TYP_4_BYTE data storage  types
     and with edge points set to 255.
AUTHOR
     Jean-Pierre COCQUEREZ, Marc VIALA, Pascal ADAM
COPYRIGHT
     Copyright  1992,  University  of  New  Mexico.   All  rights
     reserved.
*************************************************************************************
Documentation for avs module vrmatch
INPUT
          ima1 _ xvimage structure :  First  Input  Image  to  be
          matched.
          ima2 _ xvimage structure : Second  Input  Image  to  be
          matched.
OUTPUT
          image holds the result (matched regions).
DESCRIPTION
     WARNING: This is a temporary algorithm which has  been  used
     for  stereo  application prototyping. It can't be considered
     as the result of deep research on the topic.
     vrmatch analyses two input images supposed to  be  similar.
     The  input images can either be the left and right images of
     a stereo image data base or successive images from an  image
     data flow process.
     These images have to be previously preprocessed in the  fol-
     lowing manner:
     Region_segmentation:
          This segmentation should give an image  in  which  each
          connex  region  is  labelled with its own label number.
          Also,  this  image  has  to   be   an   integer   image
          (VFF_TYP_4_BYTE).
     The matching  principle  could  be  modified  for  different
     application  purposes but this first try will use a computa-
     tion of the probability for  the  region  number  Ni  (first
     image) being region number Mj (second image).
          P(Ni = Mj) =  1 - Surface( SXOR (Ni , Mj))  /  (Surface
          (Ni) + Surface(Nj))
          SXOR is computed by translating Ni by a vector  V  such
          that the new centroid of Ni and the Mj's one coincide.
          If SXOR(Ni,Mj) is small (surface of Ni matches with Mj)
          the probability of Ni being Mj is close to 1.
          On the contrary if SXOR(Ni,Mj) is relatively  big  (the
          two  surfaces  don't  match  : different shape or size,
          etc) then the probability of Ni being Mj is close  from
          0.
     In stereo or optical flow there is some differences of shape
     between  two  regions  representing the same thing. If these
     differences are too important (due to the segmentation algo-
     rithm  like  vlabel  ,etc, or simply to the fact that images
     are really different) then the probability for these regions
     being  the same object won't be as good as expected. In that
     case a heuristic approach will try to match them relying  on
     the distance between the two centroids.
     The final result is an  image  containing  both  image1  and
     image2  on  the  left  and right side, in which the label of
     each connex matched region will be the same for the left and
     right  part  making it possible for one to see what has been
     recognized.
SEE ALSO
     vrmatch(1), intro(3), vipl(3), verror(3), vutils(3)
AUTHOR
     Pascal Adam
COPYRIGHT
     Copyright  1991,  University  of  New  Mexico.   All  rights
     reserved.
*************************************************************************************
Documentation for avs module vshape
INPUT
          image -- xvimage structure
          image_type  --  if  0,  image  containing  clusters  or
          labelled objs. if 1, grey level image.
          axis_flg  --  if  1,  generates  the  image  with  axis
          representation.
          outline_flg -- if 1, generates the image with  outlines
          representation.
          file_flg --  if 1, generates the ASCII file  with  objs
          or image information.
          input_file -- name of input file being analyzed
          printdev --  output device for printing
          print_flg -- print to printdev if set.
          standard: if 1, computes and prints standard moments.
          central: if 1, computes and prints central moments.
          invariants:  if  1,  computes  and   prints   invariant
          moments.
OUTPUT
          image -- xvimage structure, holds the resulting image.
          axis -- xvimage structure, axis image.
          outline -- xvimage structure, outline image.
DESCRIPTION
     vshape performs a shape analysis on two different types  of
     images,  by  extracting  features  like  moments, area, cen-
     troids, etc.
     The input "image" is a pointer to an INT  xvimage  that  can
     be:
     1.   A grey level  image.   In  this  particular  case,  the
          features  will  be computed for the entire image.  Some
          of  these  features  may  not  appear  to  make  sense,
          nevertheless  they  will  still  contribute significant
          information to the regions.
     2.   A labeled or clustered image. The grey level of a pixel
          in a labeled or clustered image is specifically used to
          assign a pixel to a particular labeled region.   For  a
          labeled  image  (output  of  vlabel  ipl  routine), the
          classes or regions are connected, however this  is  not
          true  for  a  cluster  number  image (output of vquant,
          vkmeans or visodata).  This difference  can  confuse  a
          novice  user,  because  vshape  will  not differentiate
          between connected or non-connected regions.
     General Description of vshape.
     The features listed below are computed for  each  region  or
     for the entire image, depending on the input image.
          - Centroid on x and y axis.
          - Variances on x and y.
          - Area or weighted area.
          - Orientation of the principal axis.
          - Eccentricity of the shape.
          - Bounded box coordinates.
     Theses features are optional.
          - Standard Moments.
          - Central Moments and Normalized Central Moments.
          - Invariant Moments.
     These features are provided in an optional ASCII file.
     As mentioned above, the centroid  coordinates  of  the  grey
     level input image provides more information than the general
     sense of the centroid of a region.
     In addition to the ASCII file, three other output files  can
     be generated.
     1.   The Axis Image. This image contains a representation of
          the  moments  of  the  regions  contained  in the input
          image. It can only be generated when the input image is
          a  not a grey level image.  There are two possibilities
          for representing the moment.
          The first one is an image containing a cross  for  each
          region.  The cross center is located at the centroid of
          the region and the horizontal and  vertical  axes  stop
          outside of the bounded box of the region.
          The second one is an image still containing a cross for
          each  region  but this time the cross is representative
          of the moment value in the principal axis  system.  The
          principal  axis  is  the coordinate system in which the
          cross moment, m11 (cf reference for  theory  on  moment
          below),  is  equal to zero. Therefore, this cross forms
          an angle (theta) with the x axis,  and  its  length  in
          both directions are proportional to the "length" of the
          shape is that direction.
     2.   The Outline Image.  This image contains the outlines of
          all  the  regions  contained in this image. Again, this
          can only be generated if this input image is not a grey
          level image.
     3.   The VIFF Image.  The image contains all of the  statis-
          tics.   The  VIFF output file has 61 (number of statis-
          tics) bands and the number  of  vectors  in  this  file
          depends on the number of regions specified in the input
          image.  If  the  statistics  flags  are  not  set,  the
          corresponding statistics will default to zero.
     For these three output images there is a final  possibility,
     which  is  to assign all outlines or crosses a grey level of
     255, or their previous region number.  This enables the user
     to  visualize  the  input  image, the outline image, and the
     axis image using pseudo color to assign a different color to
     each  region.   This  aids  in interpreting the regions, and
     yields an artistic view of the image.

References


     1.   Vision In Man And Machine  by Martin D. Levine. Chapter
          10. "Shape". Page 480.
     2.   Digital Image Processing by R.C. Gonzales &  P.  Wintz.
          Chapter "Representation and description".  Page 418.
     3.   IRE Transactions on  information  theory,vol  IT-8,1962
          "Visual  Pattern  Recognition  by Moment Invariants" by
          Ming_Kuei Hu. Page 179.
SEE ALSO
     vshape(1), intro(3), vipl(3), verror(3), vutils(3)
RESTRICTIONS
     For the x and y representation, x  represents  the  vertical
     axis  and  y the horizontal axis. This routine implies a lot
     of mathematical computation in a direct coordinate system, I
     didn't use the conventional x and y.
AUTHOR
     Pascal ADAM, Shirley Lee
COPYRIGHT
     Copyright  1991,  University  of  New  Mexico.   All  rights
     reserved.
**************************************************************************************
Documentation for avs module vspatial
INPUT
     img            xvimage structure
     wsize          window width argument
     hsize          window height argument
     m              mean operator argument
     v              variance operator argument
     c              contrast operator argument
     s              angular 2nd moment argument
     e              entropy operator argument
     d              dispersion operator argument
OUTPUT
     img            holds the resulting  feature  of  the  image.
                    img is used for both the input xvimage struc-
                    ture and the output result xvimage structure.
DESCRIPTION
     vspatial performs a spatial feature extraction on  an  image
     using  a  selected  statistical  operation.  The statistical
     operation is computed, using overlapping windows,  over  the
     entire  image.   The  center pixel is updated in each window
     based on the calculated statistics of that window.
     The input image, which must be of data  storage  type  BYTE,
     corresponds  to  the  -i  argument.  The output image, which
     corresponds to the -o  argument,  is  stored  as  data  type
     FLOAT.   The output image may be a multiband image depending
     on how many spatial operators were selected.  The  resulting
     image  will  have  a  border of pixels of value 0, since the
     window operation does not calculate values for  border  pix-
     els.
     The width and height of the window is specified  by  the  -w
     and  -h  window  width  and height arguments.  The width and
     height arguments cannot  be  an  even  number.   The  window
     dimensions  must be odd (ie. 3x3, 5x5, 7x7, etc.), since the
     center pixel is replaced with the computed value of the win-
     dow data.  The default window size is 3x3.
     Each pixel in the image is updated  with  a  computed  value
     except  the  border  pixels.   A 3x3 window will result in a
     border of one pixel, a 5x5 window will result in a border of
     two pixels, etc.
     There are six statistical operations that may  be  selected.
     Any   combination  of  the  statistical  operations  may  be
     selected by toggeling the desired argument on (ie.  argument
     followed  by  a  1).   The  default  for  each  argument  is
     unselected (ie. argument followed by a 0).  The six possible
     statistical operations and their arguments are:
       -m  --  calculates the mean of the image.
       -v  --  calculates the variance of the image.
       -c  --  calculates the contrast of the image.
       -s  --  calculates the angular second moment of the image.
       -e  --  calculates the entropy of the image.
       -d  --  calculates the dispersion of the image.
     The resulting feature vector may contain  from  one  to  six
     bands  of  data,  depending  upon  the  number  of arguments
     selected.
     All input images must be of data storage type BYTE.
     All output images are of data storage type FLOAT.
     The spatial feature operations were based on the definitions
     presented  in: "Fundamentals of Digital Image Processing" by
     A.K. Jain, Prentice-Hall, 1989.
     o+    img - pointer  to  input  image  and  resulting  output
          image.
     o+    xsize - (int):  size  of  window  in  x-direction  (ie.
          number of rows in window).
     o+    ysize - (int):  size  of  window  in  y-direction  (ie.
          number of cols in window).
     o+    m - (int): command line switch to include  mean  opera-
          tion.
     o+    v - (int): command  line  switch  to  include  variance
          operation.
     o+    c - (int): command  line  switch  to  include  contrast
          operation.
     o+    s - (int): command line  switch  to  include  ang.  2nd
          moment operation.
     o+    e - (int):  command  line  switch  to  include  entropy
          operation.
     o+    d - (int): command line switch  to  include  dispersion
          operation.
     vspatial returns a 1 upon success and a 0 upon failure.
SEE ALSO
     vspatial(1), intro(3), vipl(3), verror(3), vutils(3)
RESTRICTIONS
     All input images must be of data storage type BYTE.
     All output images are of data storage type FLOAT.
AUTHOR
     Charlie Gage
COPYRIGHT
     Copyright  1991,  University  of  New  Mexico.   All  rights
     reserved.
**************************************************************************************
Documentation for avs module vstereo
INPUT
OUTPUT
DESCRIPTION
     vstereo analyzes an image produced by  the  routine  vrmatch
     and produces an image in which the pixel value correspond to
     its distance from the camera
     Vstereo needs to know the following parameters:
          The Focal Length of the Camera.
          The Length of the image inside the camera (CCD matrix)
          The Height of the image inside the camera (CCD matrix).
          The distance of the two camera (left and right).
          The distance that can be considered as the background.
     The Algorithm works this way:
     First of all, the input image contains region based  segmen-
     tated images with the image from the left camera on the left
     side and the right one on the right side.
     In both the left and right images,  the  regions  that  have
     been  matched  have the same label (label number starting at
     1).
     Then the process will compute the centroid of these  regions
     then computes the depth from the left and right centroid (cf
     Stereo formulas at the end of this description).
     The principle remains simple and gives accurate  results  if
     the labelling process gives a precise location of the border
     of the region in both left and right images.
     A problem can happened if the region if not entirely in  the
     image  because then the position of the centroid will not be
     accurate.
     Another problem that happened is that sometimes, the  result
     obtained  are not accurate enough to keep them. In this case
     the distance of the object from the camera will be set to 0.
     This  way  we can give the original image and the result one
     to another stereo algorithm based on  a  different  approach
     (contour  matching  or  point  to  point correspondance) and
     improved the information in the entire distance image.
     The last comment will be about the background distance  that
     the  user  has  to  give  in the command line or the graphic
     interface. This value defines the distance  over  which  the
     result  doesn't  matter  anymore.   Whatever will be further
     than this limit will automatically be set to the background.
     In  robotics for example, you want to be abble to say to the
     robot that something is at a distance  less  then  2  meters
     from  the  camera,  but you don't care about things that are
     further than that distance.
     STEREO formulas.
          x (left image)/focal length = X (real world) / Z  (real
          world)
          x (right image) / focal  =(X  -  distance  cameras)/  Z
          (real world)
          Z (real world) = /x_left - x_right / distance_cameras *
          focal_length Copyright 1990, University of New Mexico.
SEE ALSO
     vstereo(1), intro(3), vipl(3), verror(3), vutils(3)
AUTHOR
     Pascal Adam
COPYRIGHT
     Copyright  1991,  University  of  New  Mexico.   All  rights
     reserved.
*************************************************************************************
Documentation for avs module vtexture
INPUT
     image          the input xvimage image structure.
OUTPUT
     image          the resulting output image structure.
DESCRIPTION
     vtexture will extract texture features from an image by con-
     volving  the original image with a spatial filter.  The spa-
     tial filters are comprised of 5 x  5  kernals  derived  from
     center-weighted vectors defined by the LAWS texture measure.
     The five center-weighted vectors are:
              L5 = [ 1  4  6  4  1]
              E5 = [-1 -2  0  2  1]
              S5 = [-1  0  2  0 -1]
              W5 = [-1  2  0 -2  1]
              R5 = [ 1 -4  6 -4  1]
     Each 5 x 5 kernal is derived from multiplying  a  particular
     combination of two of the above vectors.  This results in 25
     possible 5 x 5 kernals.  The 25 possible kernals are defined
     in  the  vtexture.h include file as 1-D vectors.  Createim-
     age() is called to transform  the  selected  kernal(s)  into
     VIFF  images.   Once  the  kernal  is  transformed to a VIFF
     image, vconvolve() is called to convolve  the  input  image
     with  the kernal.  The result is stored as a texture band in
     the output image structure.
     The arguments to vtexture() are:
     img1           the input image structure, and the  resulting
                    output image structure.  The input image data
                    is replaced by the resulting texture data for
                    each  band.   The  image header is updated to
                    reflect the  number  of  data  bands  in  the
                    resulting image.
     L5L5           an integer  specifiying  whether  a  specific
                    kernal is to be used.  A value of 1 indicates
                    that the kernal is to be used, and a value of
                    0  indicates  that  the  kernal  is not to be
                    used.  There are  25  possible  command  line
                    arguments of this type.
SEE ALSO
     vtexture(1), intro(3), vipl(3), verror(3), vutils(3)  lvcon-
     vert(3), lvconvolve(3).
RESTRICTIONS
     vtexture will operate on images of data storage type BYTE or
     FLOAT.   The output image will be either an INTEGER or FLOAT
     image, depending on the data type of the  input  image.   If
     the  input  image  is of data type BYTE or SHORT, then it is
     converted up to an INTEGER image.  If the input image is  of
     data  type FLOAT, then the resulting output image will be of
     data type FLOAT.
AUTHOR
     Charlie Gage
COPYRIGHT
     Copyright  1991,  University  of  New  Mexico.   All  rights
     reserved.
*************************************************************************************
5/91                    Last change: 03/                        2
Sun Release 4.1       Last change: 12/14/9                      3
5/91                    Last change: 03/                        3
University of New MexicoLast change: 03/26/91                     5
Sun Release 4.1       Last change: 12/14/9                      2
Sun Release 4.1       Last change: 03/12/9                      2
5/91                    Last change: 03/                        4
5/91                    Last change: 03/                        4
7/9                     Last change: 11/                        2
5/91                    Last change: 03/                        1
Sun Release 4.1       Last change: 02/23/9                      3
 
INPUT
     img            xvimage structure
     region         region window size argument
     lo_size        starting size of sliding window
     step           step size or increment of sliding window
OUTPUT
      img           holds the resulting  feature  of  the  image.
                    img is used for both the input xvimage struc-
                    ture and the resulting output xvimage  struc-
                    ture.
DESCRIPTION
     vfractal performs a fractal feature extraction of  an  image
     via  calculation  of the fractal dimension "D".  The fractal
     dimension is computed based on a calculation  of  the  Hurst
     coefficient  within  a  selected  window  size  or  "fractal
     region" of the image.  The Hurst coefficient is a measure of
     the  slope  of  the line relating the window size vs average
     range of image intensity.  The Hurst coefficient is  related
     to the fractal dimension as follows,
                          D = 3 - H
        where,
                 D  -  is the resulting fractal dimension
                 H  -  is the computed Hurst coefficient
                 3  -  constant related to the Euclidian geometry
     The fractal dimension operation is computed, using  overlap-
     ping  windows,  over  the  entire  image.  A range of window
     sizes up to one third of the size of the fractal region  are
     used  to  compute the fractal dimension. The center pixel in
     each fractal region is updated based on  the  Hurst  coeffi-
     cient  and subsequent fractal dimension calculation for that
     region.
     The input image, which MUST be of data storage  type  FLOAT,
     corresponds  to  the  -i  argument.  The output image, which
     corresponds to the -o  argument,  is  stored  as  data  type
     FLOAT.   The  resulting  output  image will be a single band
     image, and will have a border consisting of pixels of  value
     0,  since the window operation does not calculate values for
     border pixels.
     The size of the window for the "fractal region" is specified
     by  the  -r  region size argument.  The region size argument
     cannot be an even number.  This means that the region dimen-
     sions must be odd (ie. 15x15, 17x17, etc.), since the center
     pixel is replaced with the  computed  value  of  the  window
     data.  The default region size is 15x15.
     The initial size of the sliding window in the fractal region
     is specified by the -w initial sliding window size argument.
     The size of the sliding window cannot be  less  than  2  and
     cannot exceed 2 minus the upper window size.  The upper win-
     dow size is determined by the region size, and cannot exceed
     one-third  of the region size.  The size of the lower window
     cannot exceed 2 minus the  upper  window  size,  because  at
     least  two  points  are needed to calculate the slope of the
     best fit line.
     The step size specifies the increment to use when increment-
     ing  the sliding window size from the initial size (-w argu-
     ment) to the upper window size (determined from  the  region
     size).   The  step  size  cannot  exceed  a value that would
     prevent at least two points from being used to calculate the
     slope  of  the best fit line.  The step size is specified by
     the -s step size argument.
     Each pixel in the image is updated  with  a  computed  value
     except  the  border pixels.  A 15x15 window will result in a
     border of seven pixels, a 17x17  window  will  result  in  a
     border of eight pixels, etc.
     The resulting feature vector will contain one band of  data,
     which  contains  the  computed  fractal dimension "D" of the
     image  intensity  data  for  the  particular   region   size
     selected.   Note  that  different results may be obtained by
     varying the region size and initial size of the sliding win-
     dow.
     Comments - To calculate the overall fractal dimension of  an
     image,  set the region size to be the same size as the image
     (Note: region size must be odd), and use an initial  sliding
     window  size  about  one-fourth  to  one-third of the region
     size.  This  will  result  in  one  value  for  the  fractal
     dimension  of  the image, which can be obtained from running
     vstats.
     When running this algorithm on a large image  using  a  wide
     range  of  sliding  window sizes, it may be helpful to use a
     generous step size to speed up the processing of the  image.
     For example, if a 256 by 256 image is being processed with a
     region size of 65 and an initial sliding window size  of  3,
     it  may  be  helpful  to select a step size of about 6.  The
     following window sizes would be used in the  calculation  of
     the  Hurst  coefficient  (slope  of  best fit line):  window
     sizes --> 3  9  15  21
     If finer resolution is needed, a smaller step size should be
     used at the expense of processing time.
     To view the resulting fractal dimension image  in  3-D,  use
     Xprism3 to plot the image as a surface plot.
     The input image MUST be of data storage type FLOAT.
     The output image is of data storage type FLOAT.
     img            the "img" argument specifies the input image,
                    which must be of data storage type FLOAT. The
                    output image is stored as  data  type  FLOAT.
                    The  resulting  output image will be a single
                    band image, and will have a border consisting
                    of pixels of value 0, since the window opera-
                    tion does not  calculate  values  for  border
                    pixels.
     region         the "region" size argument specifies the size
                    of  the  window  for the fractal region.  The
                    region  size  argument  cannot  be  an   even
                    number.   This  means  that the region dimen-
                    sions must be odd (ie. 15x15,  17x17,  etc.),
                    since  the  center pixel is replaced with the
                    computed value of the window data.  The  rou-
                    tine checks to make sure that the region size
                    does not exceed the image size.
     lo_size        the "lo_size" argument specifies the  initial
                    size  of  the  sliding  window in the fractal
                    region.  The size of the sliding window  can-
                    not  be less than 2 and cannot exceed 2 minus
                    the upper window size.  The upper window size
                    is  determined by the region size, and cannot
                    exceed one-third of  the  region  size.   The
                    size  of  the  lower  window  cannot exceed 2
                    minus the upper window size, because at least
                    two  points are needed to calculate the slope
                    of the best fit line.  The proper  bounds  of
                    the window sizes are checked in this routine.
     step           the "step" size specifies  the  increment  to
                    use when incrementing the sliding window size
                    from the initial size  to  the  upper  window
                    size  (determined from the region size).  The
                    step size cannot exceed a  value  that  would
                    prevent  at  least two points from being used
                    to calculate the slope of the best fit  line.
                    The  step  size  is checked to ensure that at
                    least two points are generated for the calcu-
                    lation of the slope.
RESTRICTIONS
     vfractal will only operate on images of data  storage  type
     FLOAT.
     The output image is of data storage type FLOAT.
AUTHOR
     Charlie Gage