00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef CMRPTImageFloat_H
00029 #define CMRPTImageFloat_H
00030
00031 #include <mrpt/utils/utils_defs.h>
00032 #include <mrpt/utils/CSerializable.h>
00033 #include <mrpt/utils/CMRPTCanvas.h>
00034 #include <mrpt/math/CMatrixTemplateNumeric.h>
00035
00036 namespace mrpt
00037 {
00038 namespace utils
00039 {
00040
00041
00042 DEFINE_SERIALIZABLE_PRE( CMRPTImageFloat )
00043
00044
00057 class MRPTDLLIMPEXP CMRPTImageFloat : public mrpt::utils::CSerializable, public CMRPTCanvas
00058 {
00059 friend class CMRPTImage;
00060
00061 DEFINE_SERIALIZABLE( CMRPTImageFloat )
00062
00063 protected:
00066 float *m_img;
00067
00070 size_t m_width,m_height;
00071
00072 public:
00080 void setPixel(int x, int y, size_t color);
00081
00084 void resize(
00085 size_t width,
00086 size_t height);
00087
00092 void setSize(
00093 size_t width,
00094 size_t height);
00095
00098 CMRPTImageFloat( size_t width = 1,
00099 size_t height = 1 );
00100
00103 CMRPTImageFloat( const CMRPTImageFloat &o );
00104
00107 CMRPTImageFloat( const math::CMatrixFloat &o );
00108
00111 CMRPTImageFloat( const math::CMatrixDouble &o );
00112
00115 CMRPTImageFloat( const CMRPTImage &o );
00116
00119 void operator = (const CMRPTImageFloat& o);
00120
00123 void operator = (const CMRPTImage& o);
00124
00126 void operator = (const math::CMatrixFloat& o);
00127
00129 void operator = (const math::CMatrixDouble& o);
00130
00133 virtual ~CMRPTImageFloat( );
00134
00137 size_t getWidth() const;
00138
00141 size_t getHeight() const;
00142
00147 void getAsMatrix( math::CMatrixFloat &outMatrix ) const;
00148
00153 bool loadFromFile( const std::string& fileName );
00154
00160 bool saveToFile(const std::string &fileName, bool verticalFlip = false) const;
00161
00164 void saveToTextFile(const std::string &fileName) const;
00165
00168 void adjustImageRange(float min=0.0f, float max=1.0f);
00169
00174 float* operator()(size_t col, size_t row) const;
00175
00179 CMRPTImageFloat operator*( const CMRPTImageFloat &im2 );
00183 CMRPTImageFloat operator+( const CMRPTImageFloat &im2 );
00187 CMRPTImageFloat operator-( const CMRPTImageFloat &im2 );
00191 CMRPTImageFloat operator^( int exp );
00192
00195 void scaleHalf();
00196
00197
00198 };
00199
00200
00201 }
00202 }
00203
00204 #endif