Xmipp  v3.23.11-Nereus
Functions
program_image_ssnr.cpp File Reference
#include <algorithm>
#include "program_image_ssnr.h"
#include "data/mask.h"
#include "core/xmipp_fftw.h"
#include "core/metadata_extension.h"
Include dependency graph for program_image_ssnr.cpp:

Go to the source code of this file.

Functions

void thresholdSSNR (MetaData &mdOut, double ssnrcut)
 
void normalizeSSNR (MetaData &mdOut)
 

Function Documentation

◆ normalizeSSNR()

void normalizeSSNR ( MetaData mdOut)

Definition at line 130 of file program_image_ssnr.cpp.

131 {
132  double maxSSNR=-1e38;
133  for (size_t objId : mdOut.ids())
134  {
135  double ssnr;
136  mdOut.getValue(MDL_CUMULATIVE_SSNR,ssnr,objId);
137  if (ssnr>maxSSNR)
138  maxSSNR=ssnr;
139  }
140 
141  if (maxSSNR>0)
142  {
143  double imaxSSNR=1/maxSSNR;
144  for (size_t objId : mdOut.ids())
145  {
146  double ssnr;
147  mdOut.getValue(MDL_CUMULATIVE_SSNR,ssnr,objId);
148  mdOut.setValue(MDL_WEIGHT_SSNR,ssnr*imaxSSNR,objId);
149  }
150  }
151 }
virtual IdIteratorProxy< false > ids()
virtual bool getValue(MDObject &mdValueOut, size_t id) const =0
Cumulative SSNR (double)
Weight due to SSNR.
bool setValue(const MDLabel label, const T &valueIn, size_t id)

◆ thresholdSSNR()

void thresholdSSNR ( MetaData mdOut,
double  ssnrcut 
)

Definition at line 119 of file program_image_ssnr.cpp.

120 {
121  for (size_t objId : mdOut.ids())
122  {
123  double ssnr;
124  mdOut.getValue(MDL_CUMULATIVE_SSNR,ssnr,objId);
125  if (ssnr<ssnrcut)
126  mdOut.setValue(MDL_ENABLED,-1,objId);
127  }
128 }
virtual IdIteratorProxy< false > ids()
virtual bool getValue(MDObject &mdValueOut, size_t id) const =0
Is this image enabled? (int [-1 or 1])
Cumulative SSNR (double)
bool setValue(const MDLabel label, const T &valueIn, size_t id)