101 size_t improvementCount=0;
102 double oldCorr=prm.
mdInp[nImg].maxcc;
106 std::cout <<
"Image: " << fnImg <<
" oldCorr=" << oldCorr << std::endl;
108 std::vector< Matrix2D<double> > allM;
109 for (
size_t nGallery=0; nGallery<
XSIZE(allCorrs); ++nGallery)
111 mCurrentImageAligned=mCurrentImage;
116 mdGallery.getValue(
MDL_MAXCC,corr,__iter.objId);
125 std::cout <<
" Matching Gallery: " << fnImg <<
" " << corr << std::endl;
129 improvementFraction=(double)improvementCount/
NSIZE(prm.
gallery());
131 mdGallery.write(
"PPPgallery.xmd");
132 std::cout <<
" oldcorr=" << oldCorr << std::endl;
137 double bestCorr, bestAngleRot, bestAngleTilt, bestAnglePsi, bestShiftX, bestShiftY, bestWeight;
140 double correctionFactor=1;
142 double icurrentT=1.0/currentT;
143 for (
size_t nGallery=0; nGallery<
XSIZE(allCorrs); ++nGallery)
145 bool getThis=(
A1D_ELEM(allCorrs,nGallery)>oldCorr) || (improvementCount==0 &&
A1D_ELEM(scaledCorrs,nGallery)>=0.98);
149 double diff=oldCorr-
A1D_ELEM(allCorrs,nGallery);
151 getThis=(p<exp(-diff*icurrentT));
156 double scale, shiftX, shiftY, anglePsi;
159 double weight=
A1D_ELEM(scaledCorrs,nGallery)*correctionFactor;
160 double corr=
A1D_ELEM(allCorrs,nGallery);
161 double angleRot=prm.
mdGallery[nGallery].rot;
162 double angleTilt=prm.
mdGallery[nGallery].tilt;
165 std::cout <<
" Getting Gallery: " << fnImg <<
" corr=" << corr <<
" cdf=" << weight <<
" rot=" << angleRot
166 <<
" tilt=" << angleTilt << std::endl;
171 size_t recId=mdReconstruction.
addObject();
173 fnImg=prm.
mdInp[nImg].fnImg;
188 bestAngleRot=angleRot;
189 bestAngleTilt=angleTilt;
190 bestAnglePsi=anglePsi;
203 size_t recId=mdReconstruction.
addObject();
205 fnImg=prm.
mdInp[nImg].fnImg;
219 mdReconstruction.
write(
"PPPreconstruction.xmd");
220 std::cout <<
"Press any key" << std::endl;
void cumlativeDensityFunction(MultidimArray< double > &cdf)
std::vector< InputImage > mdInp
Image< double > inputImages
void resizeNoCopy(const MultidimArray< T1 > &v)
void aliasImageInStack(const MultidimArray< T > &m, size_t select_image)
std::vector< GalleryImage > mdGallery
double alignImagesConsideringMirrors(const MultidimArray< double > &Iref, const AlignmentTransforms &IrefTransforms, MultidimArray< double > &I, Matrix2D< double > &M, AlignmentAux &aux, CorrelationAux &aux2, RotationalCorrelationAux &aux3, bool wrap, const MultidimArray< int > *mask)