source: Sophya/trunk/SophyaProg/Tests/timg.cc@ 2900

Last change on this file since 2900 was 2615, checked in by cmv, 21 years ago

using namespace sophya enleve de machdefs.h, nouveau sopnamsp.h cmv 10/09/2004

File size: 4.1 KB
Line 
1// Utilisation des flots d'entree-sortie C++
2#include <iostream>
3// Utilisation de la classe Image<T>
4#include "sopnamsp.h"
5#include "ntoolsinit.h"
6#include "array.h"
7#include "cimage.h"
8// Utilisation des generateurs aleatoires
9#include "nbrandom.h"
10
11// Test des NDataBlock
12#include "ndatablock.h"
13#include "fiondblock.h"
14#include <complex>
15
16
17// -------- Le programme principal ---------
18
19main(int narg, char *arg[])
20{
21int i,j;
22double mean,sig;
23
24try {
25// ----- ATTENTION -------
26// Initialisation de Sophya
27// A faire au debut de main()
28SophyaInit();
29
30cout << " ........ Debut de timg.cc ....... " << endl;
31// declaration et creation d'une image de type flottant 300x200
32ImageR4 img(300, 200);
33ImageR4 imgo(300, 200);
34// Remplissage de l'image Tirage aleatoire plat entre 1000-2000
35for(i=0; i<300; i++)
36 for(j=0; j<200; j++) img(i,j) = imgo(i,j) = frand01()*1000.+1000.;
37// Verification de la dynamique de l'image
38MeanSigma(img, mean, sig);
39cout << " img: Mean= " << mean << " Sigma= " << sig << endl;
40cout << img ;
41
42// On sauve l'image ds img.ppf (fichier format PPersist)
43{
44POutPersist po("img.ppf");
45po << img;
46}
47
48// On rajoute du bruit a l'image (Gaussienne de sigma=3)
49for(i=0; i<300; i++)
50 for(j=0; j<200; j++) img(i,j) += NorRand()*3. ;
51
52// Verification de la dynamique de l'image
53MeanSigma(img, mean, sig);
54cout << "ApresNoise img: Mean= " << mean << " Sigma= " << sig << endl;
55
56// On verifie la date de creation du fichier .ppf
57 {
58 string ppfname = "img.ppf";
59 PInPersist pin(ppfname, false);
60 cout << "Fichier PPF: " << ppfname << " Version= " << pin.Version()
61 << " Created: " << pin.CreationDate() << endl;
62 }
63
64// On cree une nouvelle image
65ImageR4 img2;
66// On lit le contenu du fichier imgin.ppf
67{
68PInPersist pi("img.ppf");
69pi >> img2;
70}
71
72// On calcule la difference entre les images img et img2
73// Avant ajout de bruit
74cout << "\n imgo(sansbruit) - img2 (fromfile) == 0 ? " << endl;
75imgo -= img2;
76// Verification de la dynamique de l'image soustraite
77r_4 min,max;
78imgo.MinMax(min, max);
79cout << " Min(imgo) = " << min << " Max(imgo) = " << max << endl;
80
81// Apres ajout de bruit
82cout << " img(avecbruit) - img2 (fromfile) == Noise, sigma=3 ? " << endl;
83img -= img2;
84// Verification de la dynamique de l'image soustraite
85imgo.MinMax(min, max);
86cout << " Min(img) = " << min << " Max(img) = " << max << endl;
87MeanSigma(img, mean, sig);
88cout << "Apres img -= img2 img: Mean= " << mean << " Sigma= " << sig << endl;
89
90// ---- Test des NDataBlock
91cout << "\n ----------> Test des NDataBlock <r_8>" << endl;
92NDataBlock<r_8> db(20);
93for(i=0; i<20; i++) db(i) = i*5.;
94cout << " DataBlock<r_8> i*5 : (db)" << endl;
95cout << db << endl;
96NDataBlock<r_8> db2(db,false);
97cout << " DataBlock<r_8> (db2=db) - db" << endl;
98cout << db2-db << endl;
99
100FIO_NDataBlock<r_8> fdb(db);
101fdb.Write("db_r8.ppf");
102cout << " DataBlock<r_8> db -> File db_r8.ppf" << endl;
103FIO_NDataBlock<r_8> fdb2("db_r8.ppf");
104cout << " DataBlock<r_8> Frome file(db_r8.ppf) - db" << endl;
105cout << (NDataBlock<r_8>)fdb2-db << endl;
106
107cout << "\n\n ----------> Test des NDataBlock <complex<double>>" << endl;
108NDataBlock< complex<double> > zb(20);
109for(i=0; i<20; i++) {complex<double> z(i*10., 0.1*i); zb(i) = z; }
110cout << " DataBlock<complex<double>> (zb) = " << endl;
111cout << zb << endl;
112FIO_NDataBlock< complex<double> > fzb(zb);
113fzb.Write("zb_z8.ppf");
114FIO_NDataBlock< complex<double> > fzb2("zb_z8.ppf");
115cout << " DataBlock<complex<double>> Frome file(zb_z8.ppf) - db" << endl;
116cout << (NDataBlock< complex<double> >)(fzb2) ;
117
118cout << "\n -------> Test de typeinfo : " << endl;
119string st;
120ImageR4 ir;
121ImageU2* irp;
122
123st = typeid(NDataBlock<r_8>).name();
124cout << "typeid(NDataBlock<r_8>).name() = " << st << endl;
125st = typeid(ir).name();
126cout << "typeid(ir).name() - " << st << endl;
127st = typeid(irp).name();
128cout << "typeid(irp).name() - " << st << endl;
129}
130
131catch (PThrowable & exc) {
132 cerr << "timg/Error Catched Exception " << (string)typeid(exc).name()
133 << " - Msg= " << exc.Msg() << endl;
134}
135catch (...) {
136 cerr << "timg/Error some other exception was caught ! " << endl;
137}
138
139cout << "\n ========= Fin de timg.cc ======== " << endl;
140exit(0);
141}
Note: See TracBrowser for help on using the repository browser.