00001 /** 00002 * @file ImageProcessor.h 00003 * 00004 * This file contains a generic class for ImageProcessor. 00005 * 00006 * @author Matthias Jüngel 00007 * @author Martin Lötzsch 00008 */ 00009 00010 #ifndef __ImageProcessor_h_ 00011 #define __ImageProcessor_h_ 00012 00013 #ifdef _WIN32 00014 #pragma warning(disable:4786) 00015 // the constructor with all it's long parameter type names results in a too 00016 // long debug identifier 00017 #endif 00018 00019 #include "Tools/Module/Module.h" 00020 00021 #include "Representations/Perception/Image.h" 00022 #include "Representations/Perception/CameraMatrix.h" 00023 #include "Representations/Perception/ColorTable.h" 00024 #include "Representations/Perception/LandmarksPercept.h" 00025 #include "Representations/Perception/BallPercept.h" 00026 #include "Representations/Perception/LinesPercept.h" 00027 #include "Representations/Perception/EdgesPercept.h" 00028 #include "Representations/Perception/PlayersPercept.h" 00029 #include "Representations/Perception/ObstaclesPercept.h" 00030 #include "Representations/Perception/SpecialPercept.h" 00031 #include "Representations/Perception/CalibrationRequest.h" 00032 #include "Representations/Cognition/RobotPose.h" 00033 #include "Representations/Cognition/BallModel.h" 00034 #include "Representations/Cognition/PlayerPoseCollection.h" 00035 #include "Representations/Cognition/RobotState.h" 00036 00037 /** 00038 * @class ImageProcessorInterfaces 00039 * 00040 * The interfaces of the ImageProcessor module. 00041 */ 00042 class ImageProcessorInterfaces 00043 { 00044 public: 00045 /** Constructor. */ 00046 ImageProcessorInterfaces( 00047 const Image& image, 00048 const CameraMatrix& cameraMatrix, 00049 ColorTable& colorTable, 00050 const RobotPose& robotPose, 00051 const BallModel& ballModel, 00052 const PlayerPoseCollection& playerPoseCollection, 00053 const RobotState& robotState, 00054 const CalibrationRequest& calibrationRequest, 00055 LandmarksPercept& landmarksPercept, 00056 BallPercept& ballPercept, 00057 LinesPercept& linesPercept, 00058 EdgesPercept& edgesPercept, 00059 PlayersPercept& playersPercept, 00060 ObstaclesPercept& obstaclesPercept, 00061 SpecialPercept& specialPercept) 00062 : image(image), 00063 cameraMatrix(cameraMatrix), 00064 colorTable(colorTable), 00065 robotPose(robotPose), 00066 ballModel(ballModel), 00067 playerPoseCollection(playerPoseCollection), 00068 robotState(robotState), 00069 calibrationRequest(calibrationRequest), 00070 landmarksPercept(landmarksPercept), 00071 ballPercept(ballPercept), 00072 linesPercept(linesPercept), 00073 edgesPercept(edgesPercept), 00074 playersPercept(playersPercept), 00075 obstaclesPercept(obstaclesPercept), 00076 specialPercept(specialPercept) 00077 {} 00078 00079 /** The image to be processed */ 00080 const Image& image; 00081 00082 /** The offset and the rotation of the camera */ 00083 const CameraMatrix& cameraMatrix; 00084 00085 /** The color table */ 00086 ColorTable& colorTable; 00087 00088 /** The last calculated ball robot pose */ 00089 const RobotPose& robotPose; 00090 00091 /** The last calculated ball position */ 00092 const BallModel& ballModel; 00093 00094 /** The last calculated player pose collection */ 00095 const PlayerPoseCollection& playerPoseCollection; 00096 00097 /** The last calculated robot state */ 00098 const RobotState& robotState; 00099 00100 /** The calibration request */ 00101 const CalibrationRequest& calibrationRequest; 00102 00103 /** The landmarks percept to be generated */ 00104 LandmarksPercept& landmarksPercept; 00105 00106 /** The ball percept to be generated */ 00107 BallPercept& ballPercept; 00108 00109 /** The lines percept to be generated */ 00110 LinesPercept& linesPercept; 00111 00112 /** The edges percept to be generated */ 00113 EdgesPercept& edgesPercept; 00114 00115 /** The players percept to be generated */ 00116 PlayersPercept& playersPercept; 00117 00118 /** The obstacles percept to be generated */ 00119 ObstaclesPercept& obstaclesPercept; 00120 00121 /** */ 00122 SpecialPercept& specialPercept; 00123 }; 00124 00125 00126 /** 00127 * @class ImageProcessor 00128 * 00129 * The base class for image processors. 00130 * ImageProcessors calculate percepts. 00131 * 00132 * @author Matthias Jüngel 00133 * @author Martin Lötzsch 00134 */ 00135 class ImageProcessor : public Module, public ImageProcessorInterfaces 00136 { 00137 public: 00138 /* 00139 * Constructor. 00140 * @param interfaces The parameters of the ImageProcessor module. 00141 */ 00142 ImageProcessor(const ImageProcessorInterfaces& interfaces) 00143 : ImageProcessorInterfaces(interfaces) 00144 {} 00145 00146 /** Destructor */ 00147 virtual ~ImageProcessor() {} 00148 }; 00149 00150 #endif // __ImageProcessor_h_ 00151 00152 /* 00153 * Change log : 00154 * 00155 * $Log: ImageProcessor.h,v $ 00156 * Revision 1.3 2004/06/15 10:58:26 thomas 00157 * added edge-specialist, edges-percept, debug-drawings etc. (not yet called from image-processor) 00158 * 00159 * Revision 1.2 2004/05/22 22:52:03 juengel 00160 * Renamed ballP_osition to ballModel. 00161 * 00162 * Revision 1.1.1.1 2004/05/22 17:19:26 cvsadm 00163 * created new repository GT2004_WM 00164 * 00165 * Revision 1.6 2004/03/08 01:38:57 roefer 00166 * Interfaces should be const 00167 * 00168 * Revision 1.5 2004/02/16 18:52:57 tim 00169 * Added BB2004ImageProcessor 00170 * 00171 * Revision 1.4 2004/02/03 13:19:49 spranger 00172 * renamed all references to class BallP_osition to BallModel 00173 * 00174 * Revision 1.3 2003/10/12 20:18:07 juengel 00175 * ColorTable is not const anymore. 00176 * 00177 * Revision 1.2 2003/10/12 11:46:30 juengel 00178 * Added CalibrationRequest. 00179 * 00180 * Revision 1.1 2003/10/06 14:10:13 cvsadm 00181 * Created GT2004 (M.J.) 00182 * 00183 * Revision 1.2 2003/09/26 15:27:49 juengel 00184 * Renamed DataTypes to representations. 00185 * 00186 * Revision 1.1.1.1 2003/07/02 09:40:23 cvsadm 00187 * created new repository for the competitions in Padova from the 00188 * tamara CVS (Tuesday 2:00 pm) 00189 * 00190 * removed unused solutions 00191 * 00192 * Revision 1.9 2003/03/11 18:50:47 loetzsch 00193 * disabled VC warning 4786 00194 * 00195 * Revision 1.8 2003/03/10 13:54:54 juengel 00196 * Added ObstaclesPercept to the GridImageProcessorInterfaces. 00197 * 00198 * Revision 1.7 2003/02/19 14:59:54 roefer 00199 * pColorTable -> colorTable 00200 * 00201 * Revision 1.6 2003/02/18 21:29:17 osterhues 00202 * Changed all instances of ColorTable64 to new base class ColorTable 00203 * 00204 * Revision 1.5 2003/01/30 22:31:48 juengel 00205 * Added LinesPercept to ImageProcessorInterfaces. 00206 * 00207 * Revision 1.4 2002/11/28 14:47:49 jhoffman 00208 * added special percetp for motion detector 00209 * 00210 * Revision 1.3 2002/09/17 23:55:21 loetzsch 00211 * - unraveled several datatypes 00212 * - changed the WATCH macro 00213 * - completed the process restructuring 00214 * 00215 * Revision 1.2 2002/09/12 09:45:58 juengel 00216 * continued change of module/solution mechanisms 00217 * 00218 * Revision 1.1 2002/09/10 15:36:14 cvsadm 00219 * Created new project GT2003 (M.L.) 00220 * - Cleaned up the /Src/DataTypes directory 00221 * - Removed challenge related source code 00222 * - Removed processing of incoming audio data 00223 * - Renamed AcousticMessage to SoundRequest 00224 * 00225 * Revision 1.5 2002/09/07 13:36:55 loetzsch 00226 * unified the vision modules into one module "ImageProcessor" 00227 * - FloodFillRLEImageProcessor, BallPerceptor, LandmarksPerceptor 00228 * and PlayersPerceptor were are combined to the new solution 00229 * "BlobImageProcessor" 00230 * - The GridImageProcessor and the SubPixelGradientCalculator became 00231 * a solution of "ImageProcessor" 00232 * 00233 * Revision 1.4 2002/08/30 13:36:19 dueffert 00234 * removed unused includes 00235 * 00236 * Revision 1.3 2002/07/23 13:33:43 loetzsch 00237 * new streaming classes 00238 * 00239 * removed many #include statements 00240 * 00241 * Revision 1.2 2002/06/02 23:21:09 roefer 00242 * Single color table and progress in LinesSelfLocator 00243 * 00244 * Revision 1.1.1.1 2002/05/10 12:40:14 cvsadm 00245 * Moved GT2002 Project from ute to tamara. 00246 * 00247 * Revision 1.6 2002/04/02 13:10:19 dueffert 00248 * big change: odometryData and cameraMatrix in image now, old logfiles may be obsolete 00249 * 00250 * Revision 1.5 2002/02/05 20:02:16 risler 00251 * handleDebugMessage now returns bool, added debug message handling to ImageProcessor 00252 * 00253 * Revision 1.4 2001/12/21 14:09:39 roefer 00254 * Added several destructors 00255 * 00256 * Revision 1.3 2001/12/10 17:47:06 risler 00257 * change log added 00258 * 00259 */