File: filter_shift.cpp

package info (click to toggle)
odin 2.0.5-8
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 9,196 kB
  • sloc: cpp: 62,638; sh: 4,541; makefile: 779
file content (44 lines) | stat: -rw-r--r-- 1,256 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "filter_shift.h"


void FilterShift::init(){

  for(int idir=0; idir<n_directions; idir++) {
    shift[idir].set_description(STD_string(directionLabel[idir])+" shift").set_unit("pixel");
    append_arg(shift[idir],"shift"+itos(idir));
  }
}

bool FilterShift::process(Data<float,4>& data, Protocol& prot) const {

  TinyVector<float,4> subpixel_shift(0.0,shift[sliceDirection],shift[phaseDirection],shift[readDirection]);

  data.congrid(data.shape(), &subpixel_shift);

  for(int idir=0; idir<n_directions; idir++) {
    prot.geometry.set_offset(direction(idir),prot.geometry.get_offset(direction(idir))-shift[idir]);
  }

  return true;
}


////////////////////////////////////////////////////

void FilterTimeShift::init(){
  shiftframes.set_description("time shift").set_unit("frames");
  append_arg(shiftframes,"shiftframes");
}

bool FilterTimeShift::process(Data<float,4>& data, Protocol& prot) const {
  Log<Filter> odinlog(c_label(),"process");

  TinyVector<float,4> subpixel_shift(shiftframes,0.0,0.0,0.0);

  ODINLOG(odinlog,normalDebug) << "subpixel_shift=" << subpixel_shift << STD_endl;
  ODINLOG(odinlog,normalDebug) << "data.shape()=" << data.shape() << STD_endl;

  data.congrid(data.shape(), &subpixel_shift);

  return true;
}