Xmipp  v3.23.11-Nereus
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
MeanShiftFilter Class Reference

#include <mean_shift.h>

Inheritance diagram for MeanShiftFilter:
Inheritance graph
[legend]
Collaboration diagram for MeanShiftFilter:
Collaboration graph
[legend]

Public Member Functions

void readParams (XmippProgram *program)
 
void apply (MultidimArray< double > &img)
 
- Public Member Functions inherited from XmippFilter
virtual ~XmippFilter ()
 
virtual void show ()
 

Static Public Member Functions

static void defineParams (XmippProgram *program)
 

Public Attributes

double sigma_r
 
double sigma_s
 
int iters
 
int numThreads
 
bool fast
 
bool save_iters
 
int verbose
 

Detailed Description

Parameters for denoise program

Definition at line 37 of file mean_shift.h.

Member Function Documentation

◆ apply()

void MeanShiftFilter::apply ( MultidimArray< double > &  img)
virtual

Apply the filter

Implements XmippFilter.

Definition at line 313 of file mean_shift.cpp.

314 {
315  MultidimArray<double> output(input);
316 
317  auto * th_ids = new pthread_t[numThreads];
318  auto * th_args = new ThreadProcessPlaneArgs[numThreads];
319 
320  for( int iter = 0 ; iter < iters ; ++iter )
321  {
322  if (verbose)
323  std::cout << formatString("Running iteration %d/%d", iter+1, iters) << std::endl;
324 
325  for( int nt = 0; nt < numThreads ; nt++ )
326  {
327  th_args[nt].myID = nt;
328  th_args[nt].numThreads = numThreads;
329  th_args[nt].sigma_s = sigma_s;
330  th_args[nt].sigma_r = sigma_r;
331  th_args[nt].input = &input;
332  th_args[nt].output = &output;
333  th_args[nt].fast = fast;
334 
335  pthread_create( (th_ids+nt), nullptr, thread_process_plane, (void *)(th_args+nt));
336  }
337 
338  for( int nt = 0; nt < numThreads ; nt++ )
339  {
340  pthread_join( *(th_ids+nt), nullptr);
341  }
342 
343  if( save_iters )
344  {
345  FileName fn_aux = "xxx"; //fixme
346  fn_aux = fn_aux.insertBeforeExtension( std::string("_iter_") + integerToString(iter) );
347 
348  if (verbose)
349  std::cout << "Saving intermidiate file: " << fn_aux << std::endl;
350 
351  output.write( fn_aux );
352  }
353 
354  //update input for next iteration
355  input = output;
356  }
357  delete[] th_ids;
358  delete[] th_args;
359 }
FileName insertBeforeExtension(const String &str) const
void * thread_process_plane(void *args)
Definition: mean_shift.cpp:41
double sigma_r
Definition: mean_shift.h:40
String integerToString(int I, int _width, char fill_with)
glob_prnt iter
String formatString(const char *format,...)
double sigma_s
Definition: mean_shift.h:40

◆ defineParams()

void MeanShiftFilter::defineParams ( XmippProgram program)
static

Definition at line 288 of file mean_shift.cpp.

289 {
290  program->addParamsLine("== Mean shift ==");
291  program->addParamsLine("[--mean_shift <hr> <hs> <iter=1>] : Filter based on the mean-shift algorithm");
292  program->addParamsLine(" :+ hs: Sigma for the range domain");
293  program->addParamsLine(" :+ hr: Sigma for the spatial domain");
294  program->addParamsLine(" :+ iter: Number of iterations to be used");
295  program->addParamsLine(" alias -t;");
296  program->addParamsLine("[--thr <n=1>] : Number of processing threads");
297  program->addParamsLine("[--fast] : Use faster processing (avoid gaussian calculations)");
298  program->addParamsLine("[--save_iters] : Save result image/volume for each iteration");
299 
300 }
void addParamsLine(const String &line)

◆ readParams()

void MeanShiftFilter::readParams ( XmippProgram program)
virtual

Read params from a program

Reimplemented from XmippFilter.

Definition at line 302 of file mean_shift.cpp.

303 {
304  sigma_r = program->getDoubleParam("--mean_shift", 0);//hr
305  sigma_s = program->getDoubleParam("--mean_shift", 1);//hs
306  iters = program->getIntParam("--mean_shift", 2);//iters
307  fast = program->checkParam("--fast");
308  numThreads = program->getIntParam("--thr");
309  save_iters = program->checkParam("--save_iters");
310  verbose = program->verbose;
311 }
double getDoubleParam(const char *param, int arg=0)
double sigma_r
Definition: mean_shift.h:40
int verbose
Verbosity level.
bool checkParam(const char *param)
double sigma_s
Definition: mean_shift.h:40
int getIntParam(const char *param, int arg=0)

Member Data Documentation

◆ fast

bool MeanShiftFilter::fast

Definition at line 42 of file mean_shift.h.

◆ iters

int MeanShiftFilter::iters

Definition at line 41 of file mean_shift.h.

◆ numThreads

int MeanShiftFilter::numThreads

Definition at line 41 of file mean_shift.h.

◆ save_iters

bool MeanShiftFilter::save_iters

Definition at line 42 of file mean_shift.h.

◆ sigma_r

double MeanShiftFilter::sigma_r

Definition at line 40 of file mean_shift.h.

◆ sigma_s

double MeanShiftFilter::sigma_s

Definition at line 40 of file mean_shift.h.

◆ verbose

int MeanShiftFilter::verbose

Verbosity used by denoiser. By default will be 0, programs using denoiser should set this

Definition at line 46 of file mean_shift.h.


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