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

Last change on this file since 1726 was 1161, checked in by ansari, 25 years ago

Modifs programmes test - Reza 29/8/2000

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