Image Component Library (ICL)
|
00001 /******************************************************************** 00002 ** Image Component Library (ICL) ** 00003 ** ** 00004 ** Copyright (C) 2006-2013 CITEC, University of Bielefeld ** 00005 ** Neuroinformatics Group ** 00006 ** Website: www.iclcv.org and ** 00007 ** http://opensource.cit-ec.de/projects/icl ** 00008 ** ** 00009 ** File : ICLCV/src/ICLCV/ImageRegionPart.h ** 00010 ** Module : ICLCV ** 00011 ** Authors: Christof Elbrechter, Erik Weitnauer ** 00012 ** ** 00013 ** ** 00014 ** GNU LESSER GENERAL PUBLIC LICENSE ** 00015 ** This file may be used under the terms of the GNU Lesser General ** 00016 ** Public License version 3.0 as published by the ** 00017 ** ** 00018 ** Free Software Foundation and appearing in the file LICENSE.GPL ** 00019 ** included in the packaging of this file. Please review the ** 00020 ** following information to ensure the license requirements will ** 00021 ** be met: http://www.gnu.org/licenses/lgpl-3.0.txt ** 00022 ** ** 00023 ** The development of this software was supported by the ** 00024 ** Excellence Cluster EXC 277 Cognitive Interaction Technology. ** 00025 ** The Excellence Cluster EXC 277 is a grant of the Deutsche ** 00026 ** Forschungsgemeinschaft (DFG) in the context of the German ** 00027 ** Excellence Initiative. ** 00028 ** ** 00029 ********************************************************************/ 00030 #pragma once 00031 00032 #include <ICLCV/WorkingLineSegment.h> 00033 00034 #include <vector> 00035 #include <list> 00036 00037 namespace icl{ 00038 namespace cv{ 00039 00041 struct ImageRegionPart{ 00042 00044 typedef std::vector<ImageRegionPart*> children_container; 00045 00047 typedef std::vector<WorkingLineSegment*> segment_container; 00048 00050 inline ImageRegionPart *init(WorkingLineSegment *s){ 00051 segments.clear(); 00052 segments.resize(1,s); 00053 children.clear(); 00054 flags = 0x1; // top 00055 val = s->val; 00056 return this; 00057 } 00058 00060 children_container children; 00061 00063 segment_container segments; 00064 00066 icl8u flags; 00067 00069 int val; 00070 00072 inline bool is_top() const { return flags & 0x1; } 00073 00075 inline bool is_counted() const { return flags & 0x2; } 00076 00078 inline bool is_collected() const { return flags & 0x4; } 00079 00081 inline void notify_counted() { flags |= 0x2; } 00082 00084 inline void notify_collected() { flags |= 0x4; } 00085 00086 // sets the top bit to false and returns the this-pointer 00087 inline ImageRegionPart *adopt(){ 00088 flags &= 0x6; 00089 return this; 00090 } 00091 }; 00092 00093 } // namespace cv 00094 } 00095