/home/oan/prosjekt/gotools/segmentation/gpl_distro/lsseg_1.0_gpl/include/Histogram.h

Go to the documentation of this file.
00001 //===========================================================================
00002 // The Level-Set Segmentation Library (LSSEG)
00003 //
00004 //
00005 // Copyright (C) 2000-2005 SINTEF ICT, Applied Mathematics, Norway.
00006 //
00007 // This program is free software; you can redistribute it and/or          
00008 // modify it under the terms of the GNU General Public License            
00009 // as published by the Free Software Foundation version 2 of the License. 
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 Free Software            
00018 // Foundation, Inc.,                                                      
00019 // 59 Temple Place - Suite 330,                                           
00020 // Boston, MA  02111-1307, USA.                                           
00021 //
00022 // Contact information: e-mail: tor.dokken@sintef.no                      
00023 // SINTEF ICT, Department of Applied Mathematics,                         
00024 // P.O. Box 124 Blindern,                                                 
00025 // 0314 Oslo, Norway.                                                     
00026 // 
00027 //
00028 // Other licenses are also available for this software, notably licenses
00029 // for:
00030 // - Building commercial software.                                        
00031 // - Building software whose source code you wish to keep private.        
00032 //
00033 //===========================================================================
00034 //===========================================================================
00035 //                                                                           
00036 // File: Histogram.h                                                         
00037 //                                                                           
00038 // Created: Fri Mar 31 16:41:35 2006                                         
00039 //                                                                           
00040 // Author: Odd A. Andersen <Odd.Andersen@sintef.no>
00041 //                                                                           
00042 // Revision: $Id: Histogram.h,v 1.5 2006/11/13 02:29:25 oan Exp $
00043 //                                                                           
00044 // Description:
00048 //                                                                           
00049 //===========================================================================
00050 
00051 #ifndef _HISTOGRAM_H
00052 #define _HISTOGRAM_H
00053 
00054 #include <vector>
00055 #include <iostream>
00056 
00057 namespace lsseg {
00058 
00059 //===========================================================================
00065 class Histogram
00066 //===========================================================================
00067 {
00068 public:
00073     Histogram() {} 
00074 
00084     Histogram(double min, double max, int num_bins) 
00085     {
00086         init(min, max, num_bins); 
00087     }
00088     
00097     void init (double min, double max, int num_bins) 
00098     {
00099         range_min_ = min;
00100         range_max_ = max;
00101         dist_ = std::vector<double>(num_bins, 0);
00102         bin_factor_ = double(num_bins) / (max - min);
00103     }
00104 
00106     int numBins() const { return dist_.size(); }
00107 
00109     double rangeMin() const { return range_min_; }
00110 
00112     double rangeMax() const { return range_max_; }
00113     std::vector<double>& binValues() { return dist_; }
00114     
00120     void blur(double sigma);
00121 
00128     int getBin(double val) const ;
00129     
00136     double valueFor(double val) const ;
00137 
00139     void write(std::ostream& os) const;
00140 
00142     void read(std::istream& is);
00143 
00144 private:
00145 
00147     double range_min_;
00149     double range_max_;
00150     
00152     double bin_factor_;
00153 
00155     std::vector<double> dist_;
00156 };
00157 
00158 }; // end namespace lsseg
00159 
00160 #endif // _HISTOGRAM_H
00161 

Generated on Tue Nov 28 18:35:47 2006 for lsseg by  doxygen 1.4.7