latest version v1.9 - last update 10 Apr 2010 |
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