libeblearntools
/home/rex/ebltrunk/tools/libeblearntools/include/pascal_xml.h
00001 /***************************************************************************
00002  *   Copyright (C) 2012 by Pierre Sermanet   *
00003  *   pierre.sermanet@gmail.com   *
00004  *   All rights reserved.
00005  *
00006  * Redistribution and use in source and binary forms, with or without
00007  * modification, are permitted provided that the following conditions are met:
00008  *     * Redistributions of source code must retain the above copyright
00009  *       notice, this list of conditions and the following disclaimer.
00010  *     * Redistributions in binary form must reproduce the above copyright
00011  *       notice, this list of conditions and the following disclaimer in the
00012  *       documentation and/or other materials provided with the distribution.
00013  *     * Redistribution under a license not approved by the Open Source 
00014  *       Initiative (http://www.opensource.org) must display the 
00015  *       following acknowledgement in all advertising material:
00016  *        This product includes software developed at the Courant
00017  *        Institute of Mathematical Sciences (http://cims.nyu.edu).
00018  *     * The names of the authors may not be used to endorse or promote products
00019  *       derived from this software without specific prior written permission.
00020  *
00021  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 
00022  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00023  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00024  * DISCLAIMED. IN NO EVENT SHALL ThE AUTHORS BE LIABLE FOR ANY
00025  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00026  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00027  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00028  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00029  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00030  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00031  ***************************************************************************/
00032 
00033 #ifndef PASCAL_XML_H_
00034 #define PASCAL_XML_H_
00035 
00036 #include "dataset.h"
00037 #include "xml_utils.h"
00038 #include "bbox.h"
00039 
00040 #define XML_PATTERN ".*[.]xml"
00041 
00042 namespace ebl {
00043   
00045   class pascal_xml {
00046   public:
00047     pascal_xml();
00048     virtual ~pascal_xml();
00049 
00050     // bboxes extraction ///////////////////////////////////////////////////////
00051 
00053     static bboxes get_bboxes(const string &xml_fname);
00057     static bboxes get_filtered_bboxes
00058       (const string &xml_fname, float minvisibility, float min_aspect_ratio,
00059        float max_aspect_ratio, idxdim &mindims, idxdim &minborders,
00060        vector<string> &included, bboxes &filtered);
00061     
00062     // xml extraction //////////////////////////////////////////////////////////
00063     
00068     static bool get_properties(const string &imgroot,
00069                                const string &xmlfile, string &image_filename,
00070                                string &image_fullname, string &folder,
00071                                int &height, int &width, int &depth,
00072                                vector<object*> &objs, rect<int> **cropr,
00073                                bool ignored = false);
00074 #ifdef __XML__
00075 
00076 
00077 
00078 
00079     static void get_objects(Node::NodeList &l, vector<object*> &objs,
00080                             rect<int> *cropr = NULL, bool ignore = false);
00081 #endif /* __XML__ */ 
00082   };
00083 
00084 } // end namespace ebl
00085 
00086 #endif /* PASCAL_XML_H_ */