source: Sophya/trunk/SophyaPI/PIext/pimgadapter.h@ 3551

Last change on this file since 3551 was 3520, checked in by ansari, 17 years ago

Ajout/codage methode P2DArrayAdapter::MeanVal() pour les classes adapter heritant de P2DArrayAdapter, Reza 11/09/2008

File size: 1.5 KB
Line 
1#ifndef PIMGADAPTER_SEEN
2#define PIMGADAPTER_SEEN
3
4#include "cimage.h"
5#include "parradapter.h"
6
7#ifdef SANS_EVOLPLANCK
8class RzImageAdapter : public P2DArrayAdapter {
9public:
10 RzImageAdapter(RzImage* rzi, bool ad=false) :
11 P2DArrayAdapter(rzi->XSize(), rzi->YSize())
12 { aDel = ad; mImg = rzi;
13 DefineXYCoordinates(rzi->XOrg(), rzi->YOrg(), 1., 1. ); }
14
15 virtual ~RzImageAdapter() { if (aDel) delete mImg; }
16 virtual double Value(int ix, int iy) { return mImg->FValue(ix, iy); }
17
18protected :
19 bool aDel;
20 RzImage* mImg;
21};
22#endif
23
24template <class T>
25class ImageAdapter : public P2DArrayAdapter {
26public:
27 ImageAdapter(Image<T>* img, bool ad=false) :
28 P2DArrayAdapter(img->XSize(), img->YSize())
29 { aDel = ad; mImg = img;
30 DefineXYCoordinates(img->XOrg(), img->YOrg(), 1., 1. ); }
31
32 virtual ~ImageAdapter() { if (aDel) delete mImg; }
33 virtual double Value(int ix, int iy) { return((*mImg)(ix, iy)); }
34 virtual double MeanVal(int ix1, int ix2, int jy1, int jy2)
35 {
36 int ec;
37 if (ix1>ix2) { ec=ix1; ix1=ix2; ix2=ec; }
38 if (jy1>jy2) { ec=jy1; jy1=jy2; jy2=ec; }
39 double ss = 0.;
40 for(int j=jy1; j<=jy2; j++)
41 for(int i=ix1; i<=ix2; i++) ss += (double)((*mImg)(i, j));
42 ss /= (double)((jy2-jy1+1)*(ix2-ix1+1));
43 return ss;
44 }
45
46protected :
47 bool aDel;
48 Image<T>* mImg;
49};
50
51#endif
Note: See TracBrowser for help on using the repository browser.