LTI-Lib latest version v1.9 - last update 10 Apr 2010

ltiDocuSegmentation.h

00001 /*
00002  * Copyright (C) 1998, 1999, 2000, 2001
00003  * Lehrstuhl fuer Technische Informatik, RWTH-Aachen, Germany
00004  * 
00005  * This file is part of the LTI-Computer Vision Library (LTI-Lib)
00006  *
00007  * The LTI-Lib is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU Lesser General Public License (LGPL)
00009  * as published by the Free Software Foundation; either version 2.1 of
00010  * the License, or (at your option) any later version.
00011  *
00012  * The LTI-Lib is distributed in the hope that it will be
00013  * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
00014  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  * GNU Lesser General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU Lesser General Public 
00018  * License along with the LTI-Lib; see the file LICENSE.  If
00019  * not, write to the Free Software Foundation, Inc., 59 Temple Place -
00020  * Suite 330, Boston, MA 02111-1307, USA.  
00021  */ 
00022 
00023  
00024 /*----------------------------------------------------------------
00025  * project ....: LTI Digital Image/Signal Processing Library
00026  * file .......: ltiCsPresegmentation.h
00027  * authors ....: Pablo Alvarado
00028  * organization: LTI, RWTH Aachen
00029  * creation ...: 8.11.2001
00030  * revisions ..: $Id: ltiDocuSegmentation.h,v 1.2 2003/07/07 10:01:53 ltilib Exp $
00031  */
00032 
00033 #ifndef _LTI_DOCU_SEGMENTATION
00034 #define _LTI_DOCU_SEGMENTATION
00035 
00036 /** 
00037   \page segmPage Segmentation Overview
00038 
00039   Segmentation is a complex task, and the number of functors in the LTI-lib
00040   that deal with segmentation grows...  A few extra-notes are required.
00041 
00042   There are two sorts of segmentation functors.  Traditional
00043   "complete" algorithms and "blocks", with which you can build your
00044   own segmentation approach.  There are also tools to convert the
00045   results from one representation to another.
00046 
00047   \section completeSeg Complete Algorithms
00048 
00049   The complete algorithms are:
00050 
00051   - Threshold segmentation.  Used to separate background from object 
00052     (two-classes segmentation).  You give a "window" for pixel values that
00053     should be recognized as object.  The rest will be background.  Some
00054     algorithms can choose automatically the threshold values.
00055     (see lti::thresholdSegmentation, lti::optimalThresholding)
00056   - Watershed segmentation.  This sort of algorithms are widely used.  Several 
00057     implementations can be chosen using the functor parameters
00058     (see lti::watershedSegmentation)
00059   - Comaniciu's Mean-Shift algorithm is also implemented.  With it you 
00060     can choose between quantization, oversegmentation and undersegmentation.
00061     (see lti::meanShiftSegmentation)
00062   - Region growing for a two-classes segmentation problem can also be found
00063     here (see lti::regionGrowing)
00064 
00065   \section blockSeg Functional Blocks
00066   
00067   There are several blocks, that can be used as part of a more complex
00068   segmentation approach.
00069   
00070   - A statistical background model per pixel can detect a continuous background
00071     from a moving object or objects.
00072     (see lti::backgroundModel)
00073   - A pre-segmentation approach is implemented, which finds regions
00074     using color quantization and marks as background the colors most
00075     used at the border in lti::csPresegmentation.
00076   - Similar to the pre-segmentation is the lti::kMeansSegmentation, but here
00077     no background is identified, only the color quantization and (optionally)
00078     the smoothing stages are done.
00079   - lti::whiteningSegmentation uses the kMeansSegmentation to segment the
00080     original image and a transformed one, and combines the results of both.
00081   - Given a list of area points, where each object (or region) is represented
00082     by an lti::areaPoints %object, it is possible to generate a so called
00083     similarity matrix using the lti::similarityMatrix functor.  Here a 
00084     similarity measure will be generated for all adjacent objects.
00085   - With a similarity matrix it is possible to merge similar regions using
00086     the lti::regionMerge %functor.
00087   
00088   \section toolsSeg Tools for segmentation
00089 
00090   Segmentation algorithms produce usually so called "masks",
00091   i.e. channels, where each pixel contains a label value.  These masks
00092   can be considered for two classes problems, where only values of
00093   zero and not-zero will be differentiated, and "labeled" masks, where
00094   each value is considered as a different object.  To extract the
00095   position of each single object in the image in an efficient way the
00096   functor \b lti::objectsFromMask should be used.  Sometimes the
00097   \b lti::fastRelabeling %functor provides all functionality required for
00098   this task.
00099 
00100   The lti::boundingBox functor can use one of the pointLists extracted with
00101   lti::objectsFromMask to produce a new image with only one object.  
00102 
00103   It is useful sometimes to generate a color %image, where each label
00104   found in the %segmentation is replaced by its mean color, producing
00105   an color quantized %image.  Here, the functors lti::usePalette and
00106   lti::computePalette are helpful.  
00107 */
00108 
00109 #endif
00110 
00111 
00112 

Generated on Sat Apr 10 15:25:22 2010 for LTI-Lib by Doxygen 1.6.1