00001 /*************************************************************************** 00002 * Copyright (C) 2005 by Robot Group Leipzig * 00003 * martius@informatik.uni-leipzig.de * 00004 * der@informatik.uni-leipzig.de * 00005 * * 00006 * This program is free software; you can redistribute it and/or modify * 00007 * it under the terms of the GNU General Public License as published by * 00008 * the Free Software Foundation; either version 2 of the License, or * 00009 * (at your option) any later version. * 00010 * * 00011 * This program is distributed in the hope that it will be useful, * 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00014 * GNU General Public License for more details. * 00015 * * 00016 * You should have received a copy of the GNU General Public License * 00017 * along with this program; if not, write to the * 00018 * Free Software Foundation, Inc., * 00019 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 00020 * * 00021 * 00022 *******************************************`********************************/ 00023 #ifndef __IMAGEPROCESSOR 00024 #define __IMAGEPROCESSOR 00025 00026 #include <osg/Image> 00027 #include "camera.h" 00028 00029 namespace lpzrobots { 00030 00031 /** 00032 Base class for image processing units. 00033 The result of a processing is an image (returned by init) 00034 The source for processing can be any image from previous 00035 units. An implemenation must store the pointers to the source(s) 00036 and must also hold a destination image. 00037 */ 00038 struct ImageProcessor { 00039 ImageProcessor() {}; 00040 virtual ~ImageProcessor() {}; 00041 00042 /** 00043 initialization with all images so far. The last image in the list 00044 is probably the one to use for processing. (output from last processor) 00045 @return result image structure of this processor 00046 */ 00047 virtual Camera::CameraImage init(const Camera::CameraImages& imgs) = 0; 00048 00049 /// perform the image calculation here 00050 virtual void process() = 0; 00051 00052 }; 00053 00054 } 00055 00056 #endif