Xmipp  v3.23.11-Nereus
Functions
angular_sph_alignment_gpu.cpp File Reference
#include "angular_sph_alignment_gpu.h"
#include "core/transformations.h"
#include "core/xmipp_image_extension.h"
#include "core/xmipp_image_generic.h"
#include "data/projection.h"
#include "data/mask.h"
#include "reconstruction_cuda/gpu.h"
#include "data/fourier_filter.h"
Include dependency graph for angular_sph_alignment_gpu.cpp:

Go to the source code of this file.

Functions

double continuousSphCost (double *x, void *_prm)
 

Function Documentation

◆ continuousSphCost()

double continuousSphCost ( double *  x,
void *  _prm 
)

Definition at line 297 of file angular_sph_alignment_gpu.cpp.

298 {
299  auto *prm=(ProgAngularSphAlignmentGpu *)_prm;
300  int idx = 3*(prm->vecSize);
301  double deltax=x[idx+1];
302  double deltay=x[idx+2];
303  double deltaRot=x[idx+3];
304  double deltaTilt=x[idx+4];
305  double deltaPsi=x[idx+5];
306  double deltaDefocusU=x[idx+6];
307  double deltaDefocusV=x[idx+7];
308  double deltaDefocusAngle=x[idx+8];
309  if (prm->maxShift>0 && deltax*deltax+deltay*deltay>prm->maxShift*prm->maxShift)
310  return 1e38;
311  if (prm->maxAngularChange>0 && (fabs(deltaRot)>prm->maxAngularChange || fabs(deltaTilt)>prm->maxAngularChange || fabs(deltaPsi)>prm->maxAngularChange))
312  return 1e38;
313 
314  MAT_ELEM(prm->A,0,2)=prm->old_shiftX+deltax;
315  MAT_ELEM(prm->A,1,2)=prm->old_shiftY+deltay;
316  MAT_ELEM(prm->A,0,0)=1;
317  MAT_ELEM(prm->A,0,1)=0;
318  MAT_ELEM(prm->A,1,0)=0;
319  MAT_ELEM(prm->A,1,1)=1;
320 
321  return prm->tranformImageSph(x,prm->old_rot+deltaRot, prm->old_tilt+deltaTilt, prm->old_psi+deltaPsi,
322  prm->A, deltaDefocusU, deltaDefocusV, deltaDefocusAngle);
323 }
doublereal * x
#define MAT_ELEM(m, i, j)
Definition: matrix2d.h:116
double maxShift
Maximum shift.
ProgClassifyCL2D * prm