Skip to content

Commit ace04f0

Browse files
committed
2 parents 344f324 + 5938966 commit ace04f0

File tree

9 files changed

+125
-36
lines changed

9 files changed

+125
-36
lines changed

Diff for: src/uti_image/ImVis/Vino_Geom.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ void cAppli_Vino::ShowSPC(const Pt2dr & aPClW)
330330
std::cout << "\n";
331331

332332
{
333-
Im2D_INT1 aImLogT = aNearest->ImRad();
333+
Im2D_INT1 aImLogT = aNearest->ImLogPol();
334334
int aZoom=10;
335335
Pt2di aSz = aImLogT.sz();
336336

Diff for: src/uti_image/NewRechPH/NH_InvarRad.cpp

+65-10
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,14 @@ Header-MicMac-eLiSe-25/06/2007*/
4040

4141
#include "NewRechPH.h"
4242

43-
Pt2di cAppli_NewRechPH::SzInvRad()
43+
Pt2di cAppli_NewRechPH::SzInvRadUse()
4444
{
45-
return Pt2di(mNbSR, mNbTetaInv);
45+
return Pt2di(mNbSR2Use, mNbTetaInv);
46+
}
47+
48+
Pt2di cAppli_NewRechPH::SzInvRadCalc()
49+
{
50+
return Pt2di(mNbSR2Calc, mNbTetaInv);
4651
}
4752

4853
/*
@@ -169,6 +174,23 @@ class cRadInvStat
169174
double mS3;
170175
};
171176

177+
// return Pt2di(mNbSR2Use, mNbTetaInv);
178+
void Normalise(tImNRPH aImBuf,tImNRPH aImOut,int aX0In,int aX1In,int aSzXOut)
179+
{
180+
int aSzY = aImBuf.sz().y;
181+
double aS0,aS1,aS2;
182+
ELISE_COPY
183+
(
184+
rectangle(Pt2di(aX0In,0),Pt2di(aX1In,aSzY)),
185+
Virgule(1,aImBuf.in(),Square(aImBuf.in())),
186+
Virgule(sigma(aS0),sigma(aS1),sigma(aS2))
187+
);
188+
aS1 /= aS0;
189+
aS2 /= aS0;
190+
aS2 -= ElSquare(aS1);
191+
aS2 = sqrt(ElMax(1e-10,aS2));
192+
ELISE_COPY(rectangle(Pt2di(aX0In,0),Pt2di(aX0In+aSzXOut,aSzY)),(aImBuf.in()-aS1)/aS2, aImBuf.out());
193+
}
172194

173195

174196
bool cAppli_NewRechPH::CalvInvariantRot(cOnePCarac & aPt)
@@ -182,7 +204,7 @@ bool cAppli_NewRechPH::CalvInvariantRot(cOnePCarac & aPt)
182204
}
183205

184206
// Buf[KTeta][KRho] pour KRho=0, duplication de la valeur centrale
185-
tImNRPH aImBuf(SzInvRad().x,SzInvRad().y);
207+
tImNRPH aImBuf(SzInvRadCalc().x,SzInvRadCalc().y);
186208
tTImNRPH aTBuf(aImBuf);
187209

188210
std::vector<cOneScaleImRechPH *> aVIm;
@@ -194,7 +216,7 @@ bool cAppli_NewRechPH::CalvInvariantRot(cOnePCarac & aPt)
194216

195217
int aN0 = aPt.NivScale();
196218
// aVIm.push_back(mVI1.at(aN0));
197-
for (int aKRho=0 ; aKRho <mNbSR ; aKRho++)
219+
for (int aKRho=0 ; aKRho <mNbSR2Calc ; aKRho++)
198220
{
199221
aVIm.push_back(mVI1.at(aN0 + aKRho * mDeltaSR));
200222
}
@@ -238,6 +260,36 @@ bool cAppli_NewRechPH::CalvInvariantRot(cOnePCarac & aPt)
238260
}
239261
}
240262

263+
// Normalisation a priori, pour l'instant sans rolling
264+
if (mRollNorm)
265+
{
266+
for (int aX= 0 ; aX<mNbSR2Use ; aX++)
267+
{
268+
Normalise(aImBuf,aImBuf,aX,aX+mNbSR2Use,1);
269+
}
270+
}
271+
else
272+
{
273+
Normalise(aImBuf,aImBuf,0,mNbSR2Use,mNbSR2Use);
274+
}
275+
276+
/*
277+
{
278+
double aS0,aS1,aS2;
279+
ELISE_COPY
280+
(
281+
rectangle(Pt2di(0,0),SzInvRadUse()),
282+
Virgule(1,aImBuf.in(),Square(aImBuf.in())),
283+
Virgule(sigma(aS0),sigma(aS1),sigma(aS2))
284+
);
285+
aS1 /= aS0;
286+
aS2 /= aS0;
287+
aS2 -= ElSquare(aS1);
288+
aS2 = sqrt(ElMax(1e-10,aS2));
289+
ELISE_COPY(aImBuf.all_pts(),(aImBuf.in()-aS1)/aS2, aImBuf.out());
290+
}
291+
*/
292+
241293
if (BUG)
242294
{
243295
std::cout << "PTBBUGGGGG 111\n";
@@ -247,7 +299,7 @@ bool cAppli_NewRechPH::CalvInvariantRot(cOnePCarac & aPt)
247299
int aKPS2 = mNbTetaInv /4 ;
248300
int aKPi = mNbTetaInv /2 ;
249301
int aNbGrand = ((int) eTIR_NoLabel) / 3;
250-
for (int aKRho=0 ; aKRho<int(aVIm.size()) ; aKRho++)
302+
for (int aKRho=0 ; aKRho<mNbSR2Use ; aKRho++)
251303
{
252304
double aRealDTeta = aVDeltaRad[aKRho] / aVDeltaTang[aKRho];
253305
int aDTeta = round_ni(aRealDTeta); // Delta correspondant a 1 rho
@@ -340,11 +392,11 @@ bool cAppli_NewRechPH::CalvInvariantRot(cOnePCarac & aPt)
340392
std::string aName= aDir + "InvRad" + aNamePt + ".tif";
341393

342394
L_Arg_Opt_Tiff aLarg;
343-
aLarg = aLarg + Arg_Tiff(Tiff_Im::AStrip( arrondi_sup(SzInvRad().x,8)));
395+
aLarg = aLarg + Arg_Tiff(Tiff_Im::AStrip( arrondi_sup(SzInvRadCalc().x,8)));
344396
Tiff_Im aSaveBuf
345397
(
346398
aName.c_str(),
347-
SzInvRad(),
399+
SzInvRadCalc(),
348400
GenIm::real4,
349401
Tiff_Im::No_Compr,
350402
Tiff_Im::BlackIsZero,
@@ -357,10 +409,11 @@ bool cAppli_NewRechPH::CalvInvariantRot(cOnePCarac & aPt)
357409

358410
// Pour l'export xml
359411
{
412+
/*
360413
double aS0,aS1,aS2;
361414
ELISE_COPY
362415
(
363-
aImBuf.all_pts(),
416+
rectangle(Pt2di(0,0),SzInvRadUse()),
364417
Virgule(1,aImBuf.in(),Square(aImBuf.in())),
365418
Virgule(sigma(aS0),sigma(aS1),sigma(aS2))
366419
);
@@ -369,8 +422,10 @@ bool cAppli_NewRechPH::CalvInvariantRot(cOnePCarac & aPt)
369422
aS2 -= ElSquare(aS1);
370423
aS2 = sqrt(ElMax(1e-10,aS2));
371424
ELISE_COPY(aImBuf.all_pts(),(aImBuf.in()-aS1)/aS2, aImBuf.out());
372-
aPt.ImRad() = Im2D_INT1(aImBuf.sz().x,aImBuf.sz().y);
373-
ELISE_COPY(aImBuf.all_pts(),Max(-128,Min(127,round_ni(aImBuf.in()*32))),aPt.ImRad().out());
425+
*/
426+
427+
aPt.ImLogPol() = Im2D_INT1(SzInvRadUse().x,SzInvRadUse().y);
428+
ELISE_COPY(aPt.ImLogPol().all_pts(),Max(-128,Min(127,round_ni(aImBuf.in()*32))),aPt.ImLogPol().out());
374429
aPt.VectRho() = aVRho;
375430

376431
if (BUG)

Diff for: src/uti_image/NewRechPH/NewRechPH.cpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,9 @@ cAppli_NewRechPH::cAppli_NewRechPH(int argc,char ** argv,bool ModeTest) :
124124
mNbS (30),
125125
mISF (-1,1e10),
126126
mStepSR (1.0),
127-
mNbSR (10),
127+
mNbSR2Use (10),
128128
mDeltaSR (1),
129-
mMaxLevR (mNbS - (mNbSR-1) * mDeltaSR),
129+
mRollNorm (true),
130130
mNbTetaIm (16),
131131
mMulNbTetaInv (4),
132132
mNbTetaInv (mNbTetaIm*mMulNbTetaInv),
@@ -202,6 +202,10 @@ cAppli_NewRechPH::cAppli_NewRechPH(int argc,char ** argv,bool ModeTest) :
202202
<< EAM(mISF, "ISF",true,"Interval scale forced")
203203
);
204204

205+
mNbSR2Calc = mRollNorm ? (mNbSR2Use * 2 - 1) : mNbSR2Use;
206+
mMaxLevR = mNbS - (mNbSR2Calc-1) * mDeltaSR;
207+
208+
205209
if (! EAMIsInit(&mExtSave))
206210
{
207211
mExtSave = mBasic ? "Basic" : "Std";

Diff for: src/uti_image/NewRechPH/NewRechPH.h

+5-2
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,8 @@ class cOneScaleImRechPH
162162
class cAppli_NewRechPH
163163
{
164164
public :
165-
Pt2di SzInvRad();
165+
Pt2di SzInvRadUse();
166+
Pt2di SzInvRadCalc();
166167

167168
cAppli_NewRechPH(int argc,char ** argv,bool ModeTest);
168169

@@ -221,7 +222,9 @@ class cAppli_NewRechPH
221222
Invariant Rotation
222223
*/
223224
double mStepSR; // Pas entre les pixel de reechantillonage pour les desc
224-
int mNbSR; // Nbre de niveau radial (entre
225+
bool mRollNorm; // si true , normalisation par fenetre glissante, :
226+
int mNbSR2Use; // Nbre de niveau pour utilisation
227+
int mNbSR2Calc; // Nbre de niveau a calculer, different si rolling
225228
int mDeltaSR; // Delta entre deux niveau radiaux, genre 1 ou 2 ?
226229
int mMaxLevR; // Niv max permettant le calcul (calcule a partir des autres)
227230

Diff for: src/uti_image/NewRechPH/ParamNewRechPH.xml

+10-1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,14 @@
8888
<!-- Code Binaire : devrait etre 1D, mais flemme modifier xml_init et autres ... -->
8989
<CodeBinaire Nb="1" Type="Im2D_U_INT2"> </CodeBinaire>
9090
</OneInvRad>
91+
92+
<ProfilRad Nb="1" Class="true" ToReference="true">
93+
<!-- y : NumVect , x : Rho -->
94+
<ImProfil Nb="1" Type="Im2D_INT1"> </ImProfil>
95+
<!-- Code Binaire : devrait etre 1D, mais flemme modifier xml_init et autres ... -->
96+
</OneInvRad>
97+
98+
9199
<OnePCarac Nb="1" Class="true" ToReference="true">
92100
<Kind Nb="1" Type="eTypePtRemark"> </Kind>
93101
<Pt Nb="1" Type="Pt2dr"> </Pt>
@@ -105,8 +113,9 @@
105113
<!-- codage binaire -->
106114
<!-- Pour visu -->
107115
<InvR Nb="1" RefType="OneInvRad"> </InvR>
108-
<ImRad Nb="1" Type="Im2D_INT1"> </ImRad>
116+
<ImLogPol Nb="1" Type="Im2D_INT1"> </ImLogPol>
109117
<VectRho Nb="1" Type="std::vector<double>"> </VectRho>
118+
<ProfR Nb="1" RefType="ProfilRad"> </ProfR>
110119
</OnePCarac>
111120

112121
<SetPCarac Nb="1" Class="true">

Diff for: src/uti_image/NewRechPH/StatPHom.cpp

+7-4
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,9 @@ void cOneImSPH::TestMatch(cOneImSPH & aI2)
179179
if ((!aV1.empty()) && (!aV2.empty()))
180180
{
181181
aI2.mVNearest.clear();
182-
std::cout << "===========================================================\n";
182+
std::cout << "*************===========================================================*************\n";
183+
std::cout << "*************===========================================================*************\n";
184+
std::cout << "*************===========================================================*************\n";
183185
std::cout << "For " << eToString(aLab) << " sz=" << aV1.size() << " " << aV2.size() << "\n";
184186

185187
std::vector<double> aVD22;
@@ -190,7 +192,7 @@ void cOneImSPH::TestMatch(cOneImSPH & aI2)
190192
aI2.mVNearest.push_back(aP);
191193
aVD22.push_back(aDist);
192194
}
193-
mAppli.ShowStat("Nearest D for ",20,aVD22);
195+
mAppli.ShowStat("Distribution du point le plus proche avec meme carac",20,aVD22);
194196

195197

196198
std::vector<double> aVD12;
@@ -336,8 +338,9 @@ void cAppliStatPHom::TestHom()
336338
}
337339
}
338340
}
339-
ShowStat("ECAR EPIP",20,aVREpi);
340-
ShowStat("ECAR COMPL",20,aVRComp);
341+
// La, on test la qualite des references , epipolaire et nuages
342+
ShowStat("ECAR EPIP pour les points SIFT",20,aVREpi);
343+
ShowStat("ECAR COMPLET pour les points SIFT",20,aVRComp);
341344
/*
342345
int aNB= 20;
343346
std::cout << "========= ECAR EPIP ==========\n";

Diff for: src/uti_image/NewRechPH/cParamNewRechPH.cpp

+12-12
Original file line numberDiff line numberDiff line change
@@ -508,14 +508,14 @@ const cOneInvRad & cOnePCarac::InvR()const
508508
}
509509

510510

511-
Im2D_INT1 & cOnePCarac::ImRad()
511+
Im2D_INT1 & cOnePCarac::ImLogPol()
512512
{
513-
return mImRad;
513+
return mImLogPol;
514514
}
515515

516-
const Im2D_INT1 & cOnePCarac::ImRad()const
516+
const Im2D_INT1 & cOnePCarac::ImLogPol()const
517517
{
518-
return mImRad;
518+
return mImLogPol;
519519
}
520520

521521

@@ -545,7 +545,7 @@ void BinaryUnDumpFromFile(cOnePCarac & anObj,ELISE_fp & aFp)
545545
BinaryUnDumpFromFile(anObj.AutoCorrel(),aFp);
546546
BinaryUnDumpFromFile(anObj.OK(),aFp);
547547
BinaryUnDumpFromFile(anObj.InvR(),aFp);
548-
BinaryUnDumpFromFile(anObj.ImRad(),aFp);
548+
BinaryUnDumpFromFile(anObj.ImLogPol(),aFp);
549549
BinaryUnDumpFromFile(anObj.VectRho(),aFp);
550550
}
551551

@@ -565,7 +565,7 @@ void BinaryDumpInFile(ELISE_fp & aFp,const cOnePCarac & anObj)
565565
BinaryDumpInFile(aFp,anObj.AutoCorrel());
566566
BinaryDumpInFile(aFp,anObj.OK());
567567
BinaryDumpInFile(aFp,anObj.InvR());
568-
BinaryDumpInFile(aFp,anObj.ImRad());
568+
BinaryDumpInFile(aFp,anObj.ImLogPol());
569569
BinaryDumpInFile(aFp,anObj.VectRho());
570570
}
571571

@@ -587,7 +587,7 @@ cElXMLTree * ToXMLTree(const cOnePCarac & anObj)
587587
aRes->AddFils(::ToXMLTree(std::string("AutoCorrel"),anObj.AutoCorrel())->ReTagThis("AutoCorrel"));
588588
aRes->AddFils(::ToXMLTree(std::string("OK"),anObj.OK())->ReTagThis("OK"));
589589
aRes->AddFils(ToXMLTree(anObj.InvR())->ReTagThis("InvR"));
590-
aRes->AddFils(::ToXMLTree(std::string("ImRad"),anObj.ImRad())->ReTagThis("ImRad"));
590+
aRes->AddFils(::ToXMLTree(std::string("ImLogPol"),anObj.ImLogPol())->ReTagThis("ImLogPol"));
591591
aRes->AddFils(::ToXMLTree(std::string("VectRho"),anObj.VectRho())->ReTagThis("VectRho"));
592592
aRes->mGXml = anObj.mGXml;
593593
XMLPopContext(anObj.mGXml);
@@ -627,12 +627,12 @@ void xml_init(cOnePCarac & anObj,cElXMLTree * aTree)
627627

628628
xml_init(anObj.InvR(),aTree->Get("InvR",1)); //tototo
629629

630-
xml_init(anObj.ImRad(),aTree->Get("ImRad",1)); //tototo
630+
xml_init(anObj.ImLogPol(),aTree->Get("ImLogPol",1)); //tototo
631631

632632
xml_init(anObj.VectRho(),aTree->Get("VectRho",1)); //tototo
633633
}
634634

635-
std::string Mangling( cOnePCarac *) {return "A1E622235CA23AC9FD3F";};
635+
std::string Mangling( cOnePCarac *) {return "E0CF3BC532583685FE3F";};
636636

637637

638638
std::vector< cOnePCarac > & cSetPCarac::OnePCarac()
@@ -691,7 +691,7 @@ void xml_init(cSetPCarac & anObj,cElXMLTree * aTree)
691691
xml_init(anObj.OnePCarac(),aTree->GetAll("OnePCarac",false,1));
692692
}
693693

694-
std::string Mangling( cSetPCarac *) {return "00FB91C136438280FE3F";};
694+
std::string Mangling( cSetPCarac *) {return "55544900B54811F1FE3F";};
695695

696696

697697
cOnePCarac & cSRPC_Truth::P1()
@@ -748,7 +748,7 @@ void xml_init(cSRPC_Truth & anObj,cElXMLTree * aTree)
748748
xml_init(anObj.P2(),aTree->Get("P2",1)); //tototo
749749
}
750750

751-
std::string Mangling( cSRPC_Truth *) {return "208C32A1E44ECED3FBBF";};
751+
std::string Mangling( cSRPC_Truth *) {return "605FA27E9728E3ABFBBF";};
752752

753753

754754
std::vector< cSRPC_Truth > & cSetRefPCarac::SRPC_Truth()
@@ -841,7 +841,7 @@ void xml_init(cSetRefPCarac & anObj,cElXMLTree * aTree)
841841
xml_init(anObj.SRPC_Rand(),aTree->GetAll("SRPC_Rand",false,1));
842842
}
843843

844-
std::string Mangling( cSetRefPCarac *) {return "86C0DAE397FC78B5FD3F";};
844+
std::string Mangling( cSetRefPCarac *) {return "D1AF655A5B3CE59CFE3F";};
845845

846846

847847
std::vector<double> & cCBOneBit::Coeff()

Diff for: src/uti_image/NewRechPH/cParamNewRechPH.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,8 @@ class cOnePCarac
179179
cOneInvRad & InvR();
180180
const cOneInvRad & InvR()const ;
181181

182-
Im2D_INT1 & ImRad();
183-
const Im2D_INT1 & ImRad()const ;
182+
Im2D_INT1 & ImLogPol();
183+
const Im2D_INT1 & ImLogPol()const ;
184184

185185
std::vector<double> & VectRho();
186186
const std::vector<double> & VectRho()const ;
@@ -199,7 +199,7 @@ class cOnePCarac
199199
double mAutoCorrel;
200200
bool mOK;
201201
cOneInvRad mInvR;
202-
Im2D_INT1 mImRad;
202+
Im2D_INT1 mImLogPol;
203203
std::vector<double> mVectRho;
204204
};
205205
cElXMLTree * ToXMLTree(const cOnePCarac &);

0 commit comments

Comments
 (0)