Xmipp  v3.23.11-Nereus
Classes | Public Types | Public Member Functions | Public Attributes | Friends | List of all members

#include <tomo_align_tilt_series.h>

Collaboration diagram for Alignment:
Collaboration graph
[legend]

Classes

struct  AlignmentEstimation
 
class  AProgAlignSignificant
 
class  ARotationEstimator
 
class  AShiftCorrEstimator
 
class  AShiftEstimator
 
class  CudaRotPolarEstimator
 
class  CudaShiftCorrEstimator
 
class  IterativeAlignmentEstimator
 
class  PolarRotationEstimator
 
class  ProgAlignSignificantGPU
 
class  RotationEstimationSetting
 
class  ShiftCorrEstimator
 

Public Types

enum  AlignType { AlignType::None, AlignType::OneToN, AlignType::MToN, AlignType::Consecutive }
 

Public Member Functions

 Alignment (const ProgTomographAlignment *_prm)
 
void clear ()
 
Alignmentoperator= (const Alignment &op)
 
double optimizeGivenAxisDirection ()
 
void computeGeometryDependentOfAxis ()
 
void computeGeometryDependentOfRotation ()
 
double computeError () const
 
void computeErrorForLandmarks ()
 
void updateModel ()
 

Public Attributes

const ProgTomographAlignmentprm
 
std::vector< Matrix1D< double > > di
 
std::vector< Matrix1D< double > > rj
 
Matrix1D< double > psi
 
double rot
 
double tilt
 
Matrix1D< double > raxis
 
int Nimg
 
int Nlandmark
 
std::vector< Matrix2D< double > > Ai
 
std::vector< Matrix2D< double > > Ait
 
std::vector< Matrix2D< double > > Aip
 
std::vector< Matrix2D< double > > Aipt
 
std::vector< Matrix1D< double > > barri
 
std::vector< Matrix1D< double > > diaxis
 
std::vector< Matrix2D< double > > B1i
 
std::vector< Matrix2D< double > > B2i
 
Matrix2D< double > Binvraxis
 
Matrix2D< double > allLandmarksPredictedX
 
Matrix2D< double > allLandmarksPredictedY
 
MultidimArray< double > errorLandmark
 

Friends

std::ostream & operator<< (std::ostream &out, Alignment &alignment)
 

Detailed Description

Definition at line 295 of file tomo_align_tilt_series.h.

Member Enumeration Documentation

◆ AlignType

enum Alignment::AlignType
strong
Enumerator
None 
OneToN 
MToN 
Consecutive 

Definition at line 31 of file align_type.h.

31 { None, OneToN, MToN, Consecutive };

Constructor & Destructor Documentation

◆ Alignment()

Alignment::Alignment ( const ProgTomographAlignment _prm)
inline

Definition at line 307 of file tomo_align_tilt_series.h.

308  {
309  prm=_prm;
312  clear();
313  }
#define MAT_YSIZE(m)
Definition: matrix2d.h:124
const ProgTomographAlignment * prm
Matrix2D< double > allLandmarksX
#define MAT_XSIZE(m)
Definition: matrix2d.h:120

Member Function Documentation

◆ clear()

void Alignment::clear ( )
inline

Clear

Definition at line 316 of file tomo_align_tilt_series.h.

317  {
318  psi.initZeros(Nimg);
319  rot=90;
320  tilt=90;
321  raxis.initZeros(3);
322 
323  Ai.clear();
324  Ait.clear();
325  Aip.clear();
326  Aipt.clear();
327  di.clear();
328  diaxis.clear();
329  B1i.clear();
330  B2i.clear();
331  barri.clear();
332  Matrix2D<double> dummy23(2,3);
333  Matrix2D<double> dummy32(3,2);
334  Matrix2D<double> dummy33(3,3);
335  Matrix2D<double> dummy22(2,2);
336  Matrix1D<double> dummy2(2);
337  Matrix1D<double> dummy3(3);
338  for (int i=0; i<Nimg; i++)
339  {
340  Ai.push_back(dummy23);
341  Ait.push_back(dummy32);
342  Aip.push_back(dummy23);
343  Aipt.push_back(dummy32);
344  di.push_back(dummy2);
345  diaxis.push_back(dummy2);
346  B1i.push_back(dummy33);
347  B2i.push_back(dummy33);
348  barri.push_back(dummy3);
349  }
353 
354  rj.clear();
355  for (int j=0; j<Nlandmark; j++)
356  rj.push_back(dummy3);
357  }
std::vector< Matrix1D< double > > di
std::vector< Matrix1D< double > > rj
MultidimArray< double > errorLandmark
std::vector< Matrix2D< double > > Ait
std::vector< Matrix2D< double > > Ai
#define i
std::vector< Matrix1D< double > > diaxis
Matrix1D< double > psi
std::vector< Matrix2D< double > > B2i
std::vector< Matrix2D< double > > Aip
void initZeros()
Definition: matrix1d.h:592
std::vector< Matrix2D< double > > B1i
#define j
Matrix1D< double > raxis
std::vector< Matrix2D< double > > Aipt
Matrix2D< double > allLandmarksPredictedX
void initZeros()
Definition: matrix2d.h:626
Matrix2D< double > allLandmarksPredictedY
std::vector< Matrix1D< double > > barri
void initZeros(const MultidimArray< T1 > &op)

◆ computeError()

double Alignment::computeError ( ) const

Compute error

Definition at line 2712 of file tomo_align_tilt_series.cpp.

2713 {
2714  Matrix1D<double> pijp;
2715  double error=0;
2716  double N=0;
2717  for (int i=0; i<Nimg; i++)
2718  {
2719  int jjmax=prm->Vseti[i].size();
2720  for (int jj=0; jj<jjmax; jj++)
2721  {
2722  int j=prm->Vseti[i][jj];
2723  pijp=Ai[i]*rj[j]+di[i]+diaxis[i];
2726  double diffx=MAT_ELEM(prm->allLandmarksX,j,i)-XX(pijp);
2727  double diffy=MAT_ELEM(prm->allLandmarksY,j,i)-YY(pijp);
2728  error+=diffx*diffx+diffy*diffy;
2729  N++;
2730  }
2731  }
2732  return sqrt(error/N);
2733 }
std::vector< Matrix1D< double > > di
const ProgTomographAlignment * prm
std::vector< Matrix1D< double > > rj
Matrix2D< double > allLandmarksY
void sqrt(Image< double > &op)
Matrix2D< double > allLandmarksX
std::vector< Matrix2D< double > > Ai
#define i
#define MAT_ELEM(m, i, j)
Definition: matrix2d.h:116
std::vector< Matrix1D< double > > diaxis
#define XX(v)
Definition: matrix1d.h:85
std::vector< std::vector< int > > Vseti
#define j
#define YY(v)
Definition: matrix1d.h:93
Matrix2D< double > allLandmarksPredictedX
Matrix2D< double > allLandmarksPredictedY

◆ computeErrorForLandmarks()

void Alignment::computeErrorForLandmarks ( )

Compute error for landmarks

Definition at line 2735 of file tomo_align_tilt_series.cpp.

2736 {
2739  for (int j=0; j<Nlandmark; j++)
2740  {
2741  int counterj=0;
2742  for (int i=0; i<Nimg; i++)
2743  {
2744  if (prm->allLandmarksX(j,i)!=XSIZE(*(prm->img[0])))
2745  {
2746  double diffx=MAT_ELEM(prm->allLandmarksX,j,i)-
2748  double diffy=MAT_ELEM(prm->allLandmarksY,j,i)-
2750  errorLandmark(j)+=sqrt(diffx*diffx+diffy*diffy);
2751  counterj++;
2752  }
2753  }
2754  errorLandmark(j)/=counterj;
2755  }
2756 }
#define MAT_YSIZE(m)
Definition: matrix2d.h:124
const ProgTomographAlignment * prm
Matrix2D< double > allLandmarksY
MultidimArray< double > errorLandmark
void sqrt(Image< double > &op)
Matrix2D< double > allLandmarksX
#define i
#define MAT_ELEM(m, i, j)
Definition: matrix2d.h:116
#define XSIZE(v)
std::vector< MultidimArray< unsigned char > * > img
#define j
Matrix2D< double > allLandmarksPredictedX
Matrix2D< double > allLandmarksPredictedY
void initZeros(const MultidimArray< T1 > &op)

◆ computeGeometryDependentOfAxis()

void Alignment::computeGeometryDependentOfAxis ( )

Compute Aip, and its transpose

Definition at line 2647 of file tomo_align_tilt_series.cpp.

2648 {
2650  Euler_direction(rot, tilt, 0, axis);
2651 
2652  // Compute Aip, Aipt
2653  Matrix2D<double> Raxis, I, Ip, B;
2654  Binvraxis.initZeros(3,3);
2655  I.initIdentity(3);
2656  Ip=I;
2657  Ip(2,2)=0;
2658  for (int i=0; i<Nimg; i++)
2659  {
2660  rotation3DMatrix(prm->tiltList[i],axis,Raxis,false);
2661  Aipt[i](0,0)=Aip[i](0,0)=Raxis(0,0);
2662  Aipt[i](1,0)=Aip[i](0,1)=Raxis(0,1);
2663  Aipt[i](2,0)=Aip[i](0,2)=Raxis(0,2);
2664  Aipt[i](0,1)=Aip[i](1,0)=Raxis(1,0);
2665  Aipt[i](1,1)=Aip[i](1,1)=Raxis(1,1);
2666  Aipt[i](2,1)=Aip[i](1,2)=Raxis(1,2);
2667 
2668  B=I-Raxis;
2669  B=B.transpose()*Ip*B;
2670  Binvraxis+=((double)prm->ni(i))*(B+B.transpose());
2671 
2672  B1i[i]=I-Raxis.transpose();
2673  B2i[i]=B1i[i]*Ip*Raxis;
2674  /*COSS:
2675  std::cout << "Dependent on axis i=" << i << std::endl
2676  << "tilt[i]=" << prm->tiltList[i] << std::endl
2677  << "Raxis=\n" << Raxis
2678  << "Aip[i]=\n" << Aip[i]
2679  << "B1i[i]=\n" << B1i[i] << std::endl
2680  << "B2i[i]=\n" << B2i[i] << std::endl;
2681  */
2682  }
2684 }
const ProgTomographAlignment * prm
std::vector< double > tiltList
void Euler_direction(double alpha, double beta, double gamma, Matrix1D< double > &v)
Definition: geometry.cpp:721
Matrix2D< double > Binvraxis
void inv(Matrix2D< T > &result) const
Definition: matrix2d.cpp:663
Matrix2D< T > transpose() const
Definition: matrix2d.cpp:1314
#define i
void rotation3DMatrix(double ang, char axis, Matrix2D< double > &result, bool homogeneous)
char axis
std::vector< Matrix2D< double > > B2i
std::vector< Matrix2D< double > > Aip
std::vector< Matrix2D< double > > B1i
std::vector< Matrix2D< double > > Aipt
void initZeros()
Definition: matrix2d.h:626
void initIdentity()
Definition: matrix2d.h:673

◆ computeGeometryDependentOfRotation()

void Alignment::computeGeometryDependentOfRotation ( )

Compute Ai, and its transposes

Definition at line 2687 of file tomo_align_tilt_series.cpp.

2688 {
2689  // Compute Ai, Ait
2690  Matrix2D<double> Rinplane, I(2,3);
2691  I(0,0)=I(1,1)=1;
2692  for (int i=0; i<Nimg; i++)
2693  {
2694  rotation3DMatrix(-psi(i),'Z',Rinplane,false);
2695  B1i[i]=B1i[i]*Rinplane.transpose();
2696 
2697  Rinplane.resize(2,2);
2698  Ai[i]=Rinplane*Aip[i];
2699  Ait[i]=Ai[i].transpose();
2700  diaxis[i]=Rinplane*(I-Aip[i])*raxis;
2701  /* COSS:
2702  std::cout << "Dependent on rotation i=" << i << std::endl
2703  << "B1i[i]=\n" << B1i[i] << std::endl
2704  << "I-Raxis=\n" << (I-Aip[i])
2705  << "raxis=" << raxis.transpose() << std::endl;
2706  std::cout << "diaxis[" << i << "]=" << diaxis[i].transpose() << std::endl;
2707  */
2708  }
2709 }
std::vector< Matrix2D< double > > Ait
Matrix2D< T > transpose() const
Definition: matrix2d.cpp:1314
std::vector< Matrix2D< double > > Ai
#define i
void rotation3DMatrix(double ang, char axis, Matrix2D< double > &result, bool homogeneous)
std::vector< Matrix1D< double > > diaxis
Matrix1D< double > psi
std::vector< Matrix2D< double > > Aip
std::vector< Matrix2D< double > > B1i
Matrix1D< double > raxis
void resize(size_t Ydim, size_t Xdim, bool noCopy=false)
Definition: matrix2d.cpp:1022

◆ operator=()

Alignment& Alignment::operator= ( const Alignment op)
inline

Assignment operator

Definition at line 360 of file tomo_align_tilt_series.h.

361  {
362  if (this!=&op)
363  {
364  prm=op.prm;
365  Nimg=op.Nimg;
366  Nlandmark=op.Nlandmark;
367  psi=op.psi;
368  rot=op.rot;
369  tilt=op.tilt;
370  Ai=op.Ai;
371  Ait=op.Ait;
372  Aip=op.Aip;
373  Aipt=op.Aipt;
374  diaxis=op.diaxis;
375  B1i=op.B1i;
376  B2i=op.B2i;
377  raxis=op.raxis;
378  di=op.di;
379  rj=op.rj;
380  barri=op.barri;
384  }
385  return *this;
386  }
std::vector< Matrix1D< double > > di
const ProgTomographAlignment * prm
std::vector< Matrix1D< double > > rj
MultidimArray< double > errorLandmark
std::vector< Matrix2D< double > > Ait
std::vector< Matrix2D< double > > Ai
std::vector< Matrix1D< double > > diaxis
Matrix1D< double > psi
std::vector< Matrix2D< double > > B2i
std::vector< Matrix2D< double > > Aip
std::vector< Matrix2D< double > > B1i
Matrix1D< double > raxis
std::vector< Matrix2D< double > > Aipt
Matrix2D< double > allLandmarksPredictedX
Matrix2D< double > allLandmarksPredictedY
std::vector< Matrix1D< double > > barri

◆ optimizeGivenAxisDirection()

double Alignment::optimizeGivenAxisDirection ( )

Optimize for rot

Definition at line 2610 of file tomo_align_tilt_series.cpp.

2611 {
2612  double bestError=1e38;
2613  bool firstIteration=true, finish=false;
2614  int Niterations=0;
2616  do
2617  {
2619  double error=computeError();
2620 #ifdef DEBUG
2621 
2622  std::cout << "it=" << Niterations << " Error= " << error
2623  << " raxis=" << raxis.transpose() << std::endl;
2624 #endif
2625 
2626  updateModel();
2627  Niterations++;
2628  if (firstIteration)
2629  {
2630  bestError=error;
2631  firstIteration=false;
2632  }
2633  else
2634  {
2635  finish=((error>bestError) || (Niterations>1000) ||
2636  (ABS(error-bestError)/bestError<0.001)) && Niterations>20;
2637  if (error<bestError)
2638  bestError=error;
2639  }
2640  }
2641  while (!finish);
2642  return bestError;
2643 }
void computeGeometryDependentOfAxis()
Matrix1D< T > transpose() const
Definition: matrix1d.cpp:644
void computeGeometryDependentOfRotation()
#define ABS(x)
Definition: xmipp_macros.h:142
double computeError() const
Matrix1D< double > raxis
void error(char *s)
Definition: tools.cpp:107

◆ updateModel()

void Alignment::updateModel ( )

Update 3D model

Definition at line 2761 of file tomo_align_tilt_series.cpp.

2762 {
2763  Matrix1D<double> pij(2), piN(2);
2764  Matrix2D<double> A(3,3), AitAi;
2765  Matrix1D<double> b(3);
2766 
2767 #ifdef DEBUG
2768 
2769  std::cout << "Step 0: error=" << computeError() << std::endl;
2770 #endif
2771 
2772  // Update the 3D positions of the landmarks
2773  for (int j=0; j<Nlandmark; j++)
2774  {
2775  A.initZeros();
2776  b.initZeros();
2777  // Compute the part corresponding to Vj
2778  int iimax=prm->Vsetj[j].size();
2779  for (int ii=0; ii<iimax; ii++)
2780  {
2781  int i=prm->Vsetj[j][ii];
2782  XX(pij)=MAT_ELEM(prm->allLandmarksX,j,i);
2783  YY(pij)=MAT_ELEM(prm->allLandmarksY,j,i);
2784  A+=Ait[i]*Ai[i];
2785  b+=Ait[i]*(pij-(di[i]+diaxis[i]));
2786  }
2787 
2788  // Update rj[j]
2789  rj[j]=A.inv()*b;
2790  }
2791 #ifdef DEBUG
2792  std::cout << "Step 1: error=" << computeError() << std::endl;
2793 #endif
2794 
2795  // Compute the average landmarks seen in each image
2796  for (int i=0; i<Nimg; i++)
2797  {
2798  barri[i].initZeros();
2799  for (int jj=0; jj<prm->ni(i); jj++)
2800  {
2801  int j=prm->Vseti[i][jj];
2802  barri[i]+=rj[j];
2803  }
2804  barri[i]/=prm->ni(i);
2805  }
2806 
2807  // Update shifts
2808  if (prm->isCapillar)
2809  {
2810  // Update the raxis
2811  Matrix1D<double> tmp2(3), Pij(3);
2812  for (int i=0; i<Nimg; i++)
2813  {
2814  for (int jj=0; jj<prm->ni(i); jj++)
2815  {
2816  int j=prm->Vseti[i][jj];
2817  XX(Pij)=MAT_ELEM(prm->allLandmarksX,j,i);
2818  YY(Pij)=MAT_ELEM(prm->allLandmarksY,j,i);
2819  tmp2+=B1i[i]*Pij-B2i[i]*rj[j];
2820  }
2821  }
2822  tmp2*=2.0;
2823  tmp2=Binvraxis*tmp2;
2824  XX(raxis)=XX(tmp2);
2825  YY(raxis)=YY(tmp2);
2827  }
2828  else
2829  {
2830  // Update the individual di
2831  for (int i=0; i<Nimg; i++)
2832  if (i!=prm->iMinTilt)
2833  {
2834  di[i] = prm->barpi[i]-Ai[i]*barri[i]-diaxis[i];
2835 
2836  if (di[i].isAnyNaN())
2837  di[i].initZeros();
2838  }
2839  }
2840 #ifdef DEBUG
2841  std::cout << "Step 2: error=" << computeError() << std::endl;
2842 #endif
2843 
2844  // Update rotations
2845  if (prm->psiMax>0)
2846  {
2847  Matrix2D<double> Ri(2,2);
2848  Matrix2D<double> Aiprj(2,1), Aiprjt(1,2), dim(2,1), Pij(2,1);
2849  for (int i=0; i<Nimg; i++)
2850  {
2851  Ri.initZeros();
2852  dim.fromVector(di[i]+diaxis[i]);
2853  for (int jj=0; jj<prm->ni(i); jj++)
2854  {
2855  int j=prm->Vseti[i][jj];
2856  Aiprj.fromVector(Aip[i]*rj[j]);
2857  Aiprjt=Aiprj.transpose();
2858 
2859  MAT_ELEM(Pij,0,0)=MAT_ELEM(prm->allLandmarksX,j,i);
2860  MAT_ELEM(Pij,1,0)=MAT_ELEM(prm->allLandmarksY,j,i);
2861  Ri+=(dim-Pij)*Aiprjt;
2862  }
2863  psi(i)=CLIP(RAD2DEG(atan(((Ri(0,1)-Ri(1,0))/(Ri(0,0)+Ri(1,1))))),
2864  -(prm->psiMax),prm->psiMax);
2865  Matrix2D<double> Rinplane;
2866  rotation3DMatrix(-psi(i),'Z',Rinplane,false);
2867  }
2868  }
2869 #ifdef DEBUG
2870  std::cout << "Step 3: error=" << computeError() << std::endl;
2871 #endif
2872 
2873  // Update the rotation dependent part
2875 }
std::vector< Matrix1D< double > > di
const ProgTomographAlignment * prm
std::vector< Matrix1D< double > > rj
Matrix2D< double > allLandmarksY
Matrix2D< double > Binvraxis
std::vector< Matrix1D< double > > barpi
std::vector< Matrix2D< double > > Ait
Matrix2D< double > allLandmarksX
std::vector< Matrix2D< double > > Ai
#define i
void rotation3DMatrix(double ang, char axis, Matrix2D< double > &result, bool homogeneous)
#define CLIP(x, x0, xF)
Definition: xmipp_macros.h:260
#define MAT_ELEM(m, i, j)
Definition: matrix2d.h:116
doublereal * b
std::vector< Matrix1D< double > > diaxis
#define XX(v)
Definition: matrix1d.h:85
Matrix1D< double > psi
void computeGeometryDependentOfRotation()
std::vector< std::vector< int > > Vseti
std::vector< Matrix2D< double > > B2i
std::vector< Matrix2D< double > > Aip
double computeError() const
std::vector< Matrix2D< double > > B1i
#define j
#define YY(v)
Definition: matrix1d.h:93
Matrix1D< double > raxis
std::vector< std::vector< int > > Vsetj
#define RAD2DEG(r)
Definition: xmipp_macros.h:320
bool isCapillar
This tilt series comes from a capillar.
double psiMax
Maximum rotation.
std::vector< Matrix1D< double > > barri

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  out,
Alignment alignment 
)
friend

Print an alignment

Definition at line 2879 of file tomo_align_tilt_series.cpp.

2880 {
2881  out << "Alignment parameters ===========================================\n"
2882  << "rot=" << alignment.rot << " tilt=" << alignment.tilt << std::endl
2883  << "raxis=" << alignment.raxis.transpose() << std::endl;
2884  out << "Images ---------------------------------------------------------\n";
2885  for (int i=0; i<alignment.Nimg; i++)
2886  out << "Image " << i << " psi= " << alignment.psi(i)
2887  << " di= " << alignment.di[i].transpose()
2888  << " diaxis= " << alignment.diaxis[i].transpose()
2889  << " (" << alignment.prm->ni(i) << ")\n";
2890  out << "Landmarks ------------------------------------------------------\n";
2891  alignment.computeErrorForLandmarks();
2892  for (int j=0; j<alignment.Nlandmark; j++)
2893  out << "Landmark " << j << " rj= " << alignment.rj[j].transpose()
2894  << " " << alignment.errorLandmark(j) << std::endl;
2895  return out;
2896 }
std::vector< Matrix1D< double > > di
const ProgTomographAlignment * prm
std::vector< Matrix1D< double > > rj
MultidimArray< double > errorLandmark
#define i
Matrix1D< T > transpose() const
Definition: matrix1d.cpp:644
std::vector< Matrix1D< double > > diaxis
Matrix1D< double > psi
#define j
Matrix1D< double > raxis

Member Data Documentation

◆ Ai

std::vector< Matrix2D<double> > Alignment::Ai

Definition at line 418 of file tomo_align_tilt_series.h.

◆ Aip

std::vector< Matrix2D<double> > Alignment::Aip

Definition at line 424 of file tomo_align_tilt_series.h.

◆ Aipt

std::vector< Matrix2D<double> > Alignment::Aipt

Definition at line 427 of file tomo_align_tilt_series.h.

◆ Ait

std::vector< Matrix2D<double> > Alignment::Ait

Definition at line 421 of file tomo_align_tilt_series.h.

◆ allLandmarksPredictedX

Matrix2D<double> Alignment::allLandmarksPredictedX

Definition at line 445 of file tomo_align_tilt_series.h.

◆ allLandmarksPredictedY

Matrix2D<double> Alignment::allLandmarksPredictedY

Definition at line 448 of file tomo_align_tilt_series.h.

◆ B1i

std::vector< Matrix2D<double> > Alignment::B1i

Definition at line 436 of file tomo_align_tilt_series.h.

◆ B2i

std::vector< Matrix2D<double> > Alignment::B2i

Definition at line 439 of file tomo_align_tilt_series.h.

◆ barri

std::vector< Matrix1D<double> > Alignment::barri

Definition at line 430 of file tomo_align_tilt_series.h.

◆ Binvraxis

Matrix2D<double> Alignment::Binvraxis

Definition at line 442 of file tomo_align_tilt_series.h.

◆ di

std::vector< Matrix1D<double> > Alignment::di

Definition at line 299 of file tomo_align_tilt_series.h.

◆ diaxis

std::vector< Matrix1D<double> > Alignment::diaxis

Definition at line 433 of file tomo_align_tilt_series.h.

◆ errorLandmark

MultidimArray<double> Alignment::errorLandmark

Definition at line 451 of file tomo_align_tilt_series.h.

◆ Nimg

int Alignment::Nimg

Definition at line 412 of file tomo_align_tilt_series.h.

◆ Nlandmark

int Alignment::Nlandmark

Definition at line 415 of file tomo_align_tilt_series.h.

◆ prm

const ProgTomographAlignment* Alignment::prm

Definition at line 298 of file tomo_align_tilt_series.h.

◆ psi

Matrix1D<double> Alignment::psi

Definition at line 301 of file tomo_align_tilt_series.h.

◆ raxis

Matrix1D<double> Alignment::raxis

Definition at line 304 of file tomo_align_tilt_series.h.

◆ rj

std::vector< Matrix1D<double> > Alignment::rj

Definition at line 300 of file tomo_align_tilt_series.h.

◆ rot

double Alignment::rot

Definition at line 302 of file tomo_align_tilt_series.h.

◆ tilt

double Alignment::tilt

Definition at line 303 of file tomo_align_tilt_series.h.


The documentation for this class was generated from the following files: