plastimatch
Loading...
Searching...
No Matches
Macros | Functions
bspline_macros.h File Reference
#include "plmbase_config.h"
#include "bspline_xform.h"
#include "plm_int.h"
#include "volume_macros.h"

Go to the source code of this file.

Macros

#define LOOP_THRU_ROI_X(roi_ijk, vol_ijk, bxf)    for (roi_ijk[0] = 0, vol_ijk[0] = bxf->roi_offset[0]; roi_ijk[0] < bxf->roi_dim[0]; roi_ijk[0]++, vol_ijk[0]++)
 
#define LOOP_THRU_ROI_Y(roi_ijk, vol_ijk, bxf)    for (roi_ijk[1] = 0, vol_ijk[1] = bxf->roi_offset[1]; roi_ijk[1] < bxf->roi_dim[1]; roi_ijk[1]++, vol_ijk[1]++)
 
#define LOOP_THRU_ROI_Z(roi_ijk, vol_ijk, bxf)    for (roi_ijk[2] = 0, vol_ijk[2] = bxf->roi_offset[2]; roi_ijk[2] < bxf->roi_dim[2]; roi_ijk[2]++, vol_ijk[2]++)
 
#define REGION_INDEX_X(ijk, bxf)    (ijk[0] / bxf->vox_per_rgn[0])
 
#define REGION_INDEX_Y(ijk, bxf)    (ijk[1] / bxf->vox_per_rgn[1])
 
#define REGION_INDEX_Z(ijk, bxf)    (ijk[2] / bxf->vox_per_rgn[2])
 
#define REGION_OFFSET_X(ijk, bxf)    (ijk[0] % bxf->vox_per_rgn[0])
 
#define REGION_OFFSET_Y(ijk, bxf)    (ijk[1] % bxf->vox_per_rgn[1])
 
#define REGION_OFFSET_Z(ijk, bxf)    (ijk[2] % bxf->vox_per_rgn[2])
 
#define GET_WORLD_COORD_X_NO_DCOS(ijk_vol, bxf)    (bxf->img_origin[0] + bxf->img_spacing[0] * ijk_vol[0])
 
#define GET_WORLD_COORD_Y_NO_DCOS(ijk_vol, bxf)    (bxf->img_origin[1] + bxf->img_spacing[1] * ijk_vol[1])
 
#define GET_WORLD_COORD_Z_NO_DCOS(ijk_vol, bxf)    (bxf->img_origin[2] + bxf->img_spacing[2] * ijk_vol[2])
 
#define GET_WORLD_COORD_X(ijk_vol, vol, bxf)
 
#define GET_WORLD_COORD_Y(ijk_vol, vol, bxf)
 
#define GET_WORLD_COORD_Z(ijk_vol, vol, bxf)
 
#define LOOP_THRU_VOL_TILES(idx_tile, bxf)    for (idx_tile = 0; idx_tile < (bxf->rdims[0] * bxf->rdims[1] * bxf->rdims[2]); idx_tile++)
 
#define LOOP_THRU_TILE_X(ijk_local, bxf)    for (ijk_local[0]=0; ijk_local[0] < bxf->vox_per_rgn[0]; ijk_local[0]++)
 
#define LOOP_THRU_TILE_Y(ijk_local, bxf)    for (ijk_local[1]=0; ijk_local[1] < bxf->vox_per_rgn[1]; ijk_local[1]++)
 
#define LOOP_THRU_TILE_Z(ijk_local, bxf)    for (ijk_local[2]=0; ijk_local[2] < bxf->vox_per_rgn[2]; ijk_local[2]++)
 
#define GET_VOL_COORDS(ijk_vol, ijk_tile, ijk_local, bxf)
 
#define GET_REAL_SPACE_COORDS(xyz_vol, ijk_vol, bxf)
 
#define GET_VOXEL_INDICES(xyz_vol, ijk_vol, bxf)
 

Functions

static void get_region_index_3 (int p[3], const int ijk[3], const Bspline_xform *bxf)
 
static void get_region_index_3 (int p[3], int i, int j, int k, const Bspline_xform *bxf)
 
static plm_long get_region_index (const plm_long ijk[3], const Bspline_xform *bxf)
 
static plm_long get_region_index (plm_long i, plm_long j, plm_long k, const Bspline_xform *bxf)
 
static void get_region_offset (int q[3], const int ijk[3], const Bspline_xform *bxf)
 
static void get_region_offset (int q[3], int i, int j, int k, const Bspline_xform *bxf)
 
static plm_long get_region_offset (const plm_long ijk[3], const Bspline_xform *bxf)
 
static plm_long get_region_offset (plm_long i, plm_long j, plm_long k, const Bspline_xform *bxf)
 

Macro Definition Documentation

◆ GET_REAL_SPACE_COORDS

#define GET_REAL_SPACE_COORDS (   xyz_vol,
  ijk_vol,
  bxf 
)
Value:
do { \
xyz_vol[0] = bxf->img_origin[0] + bxf->img_spacing[0] * ijk_vol[0]; \
xyz_vol[1] = bxf->img_origin[1] + bxf->img_spacing[1] * ijk_vol[1]; \
xyz_vol[2] = bxf->img_origin[2] + bxf->img_spacing[2] * ijk_vol[2]; \
} while (0);

◆ GET_VOL_COORDS

#define GET_VOL_COORDS (   ijk_vol,
  ijk_tile,
  ijk_local,
  bxf 
)
Value:
do { \
ijk_vol[0] = bxf->roi_offset[0] + bxf->vox_per_rgn[0] * ijk_tile[0] + ijk_local[0]; \
ijk_vol[1] = bxf->roi_offset[1] + bxf->vox_per_rgn[1] * ijk_tile[1] + ijk_local[1]; \
ijk_vol[2] = bxf->roi_offset[2] + bxf->vox_per_rgn[2] * ijk_tile[2] + ijk_local[2]; \
} while (0);

◆ GET_VOXEL_INDICES

#define GET_VOXEL_INDICES (   xyz_vol,
  ijk_vol,
  bxf 
)
Value:
do { \
xyz_vol[0] = ROUND_INT((ijk_vol[0] - bxf->img_origin[0])/ bxf->img_spacing[0]) ; \
xyz_vol[1] = ROUND_INT((ijk_vol[1] - bxf->img_origin[1])/ bxf->img_spacing[1]) ; \
xyz_vol[2] = ROUND_INT((ijk_vol[2] - bxf->img_origin[2])/ bxf->img_spacing[2]) ; \
} while (0);
#define ROUND_INT(x)
Definition: plm_math.h:49

◆ GET_WORLD_COORD_X

#define GET_WORLD_COORD_X (   ijk_vol,
  vol,
  bxf 
)
Value:
(bxf->img_origin[0] \
+ ijk_vol[0]*vol->step[0*3+0] \
+ ijk_vol[1]*vol->step[0*3+1] \
+ ijk_vol[2]*vol->step[0*3+2])

◆ GET_WORLD_COORD_X_NO_DCOS

#define GET_WORLD_COORD_X_NO_DCOS (   ijk_vol,
  bxf 
)     (bxf->img_origin[0] + bxf->img_spacing[0] * ijk_vol[0])

◆ GET_WORLD_COORD_Y

#define GET_WORLD_COORD_Y (   ijk_vol,
  vol,
  bxf 
)
Value:
(bxf->img_origin[1] \
+ ijk_vol[0]*vol->step[1*3+0] \
+ ijk_vol[1]*vol->step[1*3+1] \
+ ijk_vol[2]*vol->step[1*3+2])

◆ GET_WORLD_COORD_Y_NO_DCOS

#define GET_WORLD_COORD_Y_NO_DCOS (   ijk_vol,
  bxf 
)     (bxf->img_origin[1] + bxf->img_spacing[1] * ijk_vol[1])

◆ GET_WORLD_COORD_Z

#define GET_WORLD_COORD_Z (   ijk_vol,
  vol,
  bxf 
)
Value:
(bxf->img_origin[2] \
+ ijk_vol[0]*vol->step[2*3+0] \
+ ijk_vol[1]*vol->step[2*3+1] \
+ ijk_vol[2]*vol->step[2*3+2])

◆ GET_WORLD_COORD_Z_NO_DCOS

#define GET_WORLD_COORD_Z_NO_DCOS (   ijk_vol,
  bxf 
)     (bxf->img_origin[2] + bxf->img_spacing[2] * ijk_vol[2])

◆ LOOP_THRU_ROI_X

#define LOOP_THRU_ROI_X (   roi_ijk,
  vol_ijk,
  bxf 
)     for (roi_ijk[0] = 0, vol_ijk[0] = bxf->roi_offset[0]; roi_ijk[0] < bxf->roi_dim[0]; roi_ijk[0]++, vol_ijk[0]++)

◆ LOOP_THRU_ROI_Y

#define LOOP_THRU_ROI_Y (   roi_ijk,
  vol_ijk,
  bxf 
)     for (roi_ijk[1] = 0, vol_ijk[1] = bxf->roi_offset[1]; roi_ijk[1] < bxf->roi_dim[1]; roi_ijk[1]++, vol_ijk[1]++)

◆ LOOP_THRU_ROI_Z

#define LOOP_THRU_ROI_Z (   roi_ijk,
  vol_ijk,
  bxf 
)     for (roi_ijk[2] = 0, vol_ijk[2] = bxf->roi_offset[2]; roi_ijk[2] < bxf->roi_dim[2]; roi_ijk[2]++, vol_ijk[2]++)

◆ LOOP_THRU_TILE_X

#define LOOP_THRU_TILE_X (   ijk_local,
  bxf 
)     for (ijk_local[0]=0; ijk_local[0] < bxf->vox_per_rgn[0]; ijk_local[0]++)

◆ LOOP_THRU_TILE_Y

#define LOOP_THRU_TILE_Y (   ijk_local,
  bxf 
)     for (ijk_local[1]=0; ijk_local[1] < bxf->vox_per_rgn[1]; ijk_local[1]++)

◆ LOOP_THRU_TILE_Z

#define LOOP_THRU_TILE_Z (   ijk_local,
  bxf 
)     for (ijk_local[2]=0; ijk_local[2] < bxf->vox_per_rgn[2]; ijk_local[2]++)

◆ LOOP_THRU_VOL_TILES

#define LOOP_THRU_VOL_TILES (   idx_tile,
  bxf 
)     for (idx_tile = 0; idx_tile < (bxf->rdims[0] * bxf->rdims[1] * bxf->rdims[2]); idx_tile++)

◆ REGION_INDEX_X

#define REGION_INDEX_X (   ijk,
  bxf 
)     (ijk[0] / bxf->vox_per_rgn[0])

◆ REGION_INDEX_Y

#define REGION_INDEX_Y (   ijk,
  bxf 
)     (ijk[1] / bxf->vox_per_rgn[1])

◆ REGION_INDEX_Z

#define REGION_INDEX_Z (   ijk,
  bxf 
)     (ijk[2] / bxf->vox_per_rgn[2])

◆ REGION_OFFSET_X

#define REGION_OFFSET_X (   ijk,
  bxf 
)     (ijk[0] % bxf->vox_per_rgn[0])

◆ REGION_OFFSET_Y

#define REGION_OFFSET_Y (   ijk,
  bxf 
)     (ijk[1] % bxf->vox_per_rgn[1])

◆ REGION_OFFSET_Z

#define REGION_OFFSET_Z (   ijk,
  bxf 
)     (ijk[2] % bxf->vox_per_rgn[2])

Function Documentation

◆ get_region_index() [1/2]

static plm_long get_region_index ( const plm_long  ijk[3],
const Bspline_xform bxf 
)
inlinestatic

◆ get_region_index() [2/2]

static plm_long get_region_index ( plm_long  i,
plm_long  j,
plm_long  k,
const Bspline_xform bxf 
)
inlinestatic

◆ get_region_index_3() [1/2]

static void get_region_index_3 ( int  p[3],
const int  ijk[3],
const Bspline_xform bxf 
)
inlinestatic

◆ get_region_index_3() [2/2]

static void get_region_index_3 ( int  p[3],
int  i,
int  j,
int  k,
const Bspline_xform bxf 
)
inlinestatic

◆ get_region_offset() [1/4]

static plm_long get_region_offset ( const plm_long  ijk[3],
const Bspline_xform bxf 
)
inlinestatic

◆ get_region_offset() [2/4]

static void get_region_offset ( int  q[3],
const int  ijk[3],
const Bspline_xform bxf 
)
inlinestatic

◆ get_region_offset() [3/4]

static void get_region_offset ( int  q[3],
int  i,
int  j,
int  k,
const Bspline_xform bxf 
)
inlinestatic

◆ get_region_offset() [4/4]

static plm_long get_region_offset ( plm_long  i,
plm_long  j,
plm_long  k,
const Bspline_xform bxf 
)
inlinestatic