10#include "tpcclibConfig.h"
26enum {ELLIPSE_STATUS_UNINITIALIZED, ELLIPSE_STATUS_INITIALIZED,
27 ELLIPSE_STATUS_OCCUPIED, ELLIPSE_STATUS_ERROR};
65 ELLIPSE *ell,
int imgDim,
float *semis,
float *cent,
float incli,
float val
82enum {FBP_FILTER_NONE, FBP_FILTER_RAMP, FBP_FILTER_BUTTER, FBP_FILTER_HANN,
83 FBP_FILTER_HAMM, FBP_FILTER_PARZEN, FBP_FILTER_SHEPP
87 float *sinogram,
int rays,
int views,
int dim,
int filter,
float cutoff,
91 IMG *scn,
IMG *img,
int imgDim,
float zoom,
int filter,
float cutoff,
92 float shiftX,
float shiftY,
float rotation,
int verbose
95 float *sinFFT,
float *cosFFT,
float cutoff,
int filter,
int lenFFT,
int views,
96 float *fbpFilter,
int verbose
99 float *real,
float *imag,
int direct,
int n,
float *sine,
float *cosine
102 float *prj,
float *imgCorner,
int imgDim,
int view,
int views,
103 int rays,
float offsX,
float offsY,
float *sinB,
float *sinBrot
106 float *prj,
float *imgOrigin,
int imgDim,
int view,
107 int views,
int rays,
float offsX,
float offsY,
float bpZoom,
108 float *sinB,
float *sinBrot
115 IMG *scn,
IMG *img,
int imgDim,
float zoom,
116 float shiftX,
float shiftY,
float rotation,
117 int maxIterNr,
int skipPriorNr,
118 float beta,
int maskDim,
int osSetNr,
122 float *coef,
float *img,
float *oimg,
int n
125 float *measured,
float *proj,
float *correct,
126 int os_sets,
int rays,
int views
129 float *sinogram,
int rays,
int views,
130 int iter,
int os_sets,
int maskdim,
float zoom,
float beta,
int skip_prior,
131 int dim,
float *image,
int verbose
138 float *img,
float beta,
float *med_coef,
int dim,
float small,
int maskdim,
141extern float med9(
float *inp,
int dim);
142extern float med21(
float *inp,
int dim);
147enum {PRMAT_STATUS_UNINITIALIZED, PRMAT_STATUS_INITIALIZED,
148 PRMAT_STATUS_BS_OCCUPIED, PRMAT_STATUS_LU_OCCUPIED, PRMAT_STATUS_PR_OCCUPIED,
151enum {PRMAT_TYPE_ECAT931, PRMAT_TYPE_GE, PRMAT_TYPE_NA};
152enum {PRMAT_DMODE_01, PRMAT_DMODE_LOI, PRMAT_DMODE_EA, PRMAT_DMODE_NN};
215extern int prmatAllocate(
PRMAT *mat,
int set,
unsigned int rows,
unsigned int *coords);
246enum {RADON_STATUS_UNINITIALIZED, RADON_STATUS_INITIALIZED,
247 RADON_STATUS_OCCUPIED, RADON_STATUS_ERROR
278extern int radonSet(
RADON *radtra,
int mode,
int imgDim,
int viewNr,
int binNr);
290 RADON *radtra,
int set,
int setNr,
float *imgdata,
float *scndata
293 RADON *radtra,
int set,
int setNr,
float *imgdata,
float *scndata
296 RADON *radtra,
int set,
int setNr,
float *imgdata,
float *scndata
299 PRMAT *mat,
int set,
int setNr,
float *imgdata,
float *scndata
302 RADON *radtra,
int set,
int setNr,
float *scndata,
float *imgdata
305 RADON *radtra,
int set,
int setNr,
float *scndata,
float *imgdata
308 RADON *radtra,
int set,
int setNr,
float *imgdata,
float *scndata
311 PRMAT *mat,
int set,
int setNr,
float *scndata,
float *imgdata
323 int views,
float *sinB,
float *sinBrot,
float rotation
326 float *srcsino,
float *newsino,
int srcrays,
int newrays,
int views
329extern void set_os_set(
int os_sets,
int *set_seq);
331 float *buf,
int n,
float *osum,
float *omin,
float *omax,
int skip_zero_mins
339 float *image,
int dim,
int rays,
int views,
float bpzoom,
float *sinogram,
343 float *idata,
float *sdata,
int view,
int dim,
344 int viewNr,
int rayNr,
float *sinB,
float *sinBrot,
345 float offsX,
float offsY,
float bpZoom
351 float *prj,
float *idata,
int dim,
int view,
int viewNr,
int rayNr,
352 float *sinB,
float *sinBrot,
float offsX,
float offsY,
float bpZoom
358 float *bla,
float *tra,
int dim,
float *image,
359 int iter,
int sets,
int rays,
int views,
360 int maskdim,
float zoom,
float beta,
float axial_fov,
361 float sample_distance,
int skip_prior,
int osl,
362 float shiftX,
float shiftY,
float rotation,
int ELLIPSE_VERBOSE
Drive in verbose mode if not 0.
int ELLIPSE_TEST
Drive in test mode if not 0.
Header file for libtpcimgio.
Header file for libtpcmisc.
void recSinTables(int views, float *sinB, float *sinBrot, float rotation)
unsigned int prmatGetNV(PRMAT *mat)
unsigned int prmatGetPIX(PRMAT *mat)
int radonGetMO(RADON *radtra)
unsigned int prmatGetRays(PRMAT *mat, int row)
int radonFwdTransformEA(RADON *radtra, int set, int setNr, float *imgdata, float *scndata)
int radonSet(RADON *radtra, int mode, int imgDim, int viewNr, int binNr)
void reprojectionMed3(float *data, int n)
int ellipseAllocate(ELLIPSE *ell, int imgDim)
void ellipseInfo(ELLIPSE *ell)
int mrp(float *sinogram, int rays, int views, int iter, int os_sets, int maskdim, float zoom, float beta, int skip_prior, int dim, float *image, int verbose)
void viewBackprojection(float *prj, float *idata, int dim, int view, int viewNr, int rayNr, float *sinB, float *sinBrot, float offsX, float offsY, float bpZoom)
void viewReprojection(float *idata, float *sdata, int view, int dim, int viewNr, int rayNr, float *sinB, float *sinBrot, float offsX, float offsY, float bpZoom)
int radonGetID(RADON *radtra)
float prmatGetFactorSum(PRMAT *mat)
int trmrp(float *bla, float *tra, int dim, float *image, int iter, int sets, int rays, int views, int maskdim, float zoom, float beta, float axial_fov, float sample_distance, int skip_prior, int osl, float shiftX, float shiftY, float rotation, int verbose)
void reprojectionAvg3(float *data, int n)
int ellipseReadEllipse(FILE *fp, ELLIPSE *ell)
int radonGetHI(RADON *radtra)
unsigned int prmatGetBinView(PRMAT *mat, int row, int ind)
float ellipseGetInclination(ELLIPSE *ell)
int ellipseGetImgSize(ELLIPSE *ell)
float prmatGetMinor(PRMAT *mat)
int reprojection(float *image, int dim, int rays, int views, float bpzoom, float *sinogram, int verbose)
int radonFwdTransform(RADON *radtra, int set, int setNr, float *imgdata, float *scndata)
int bit_rev_int(int x, int n)
unsigned int prmatGetRows(PRMAT *mat)
void prmatEmpty(PRMAT *mat)
int ellipseSetFromParams(ELLIPSE *ell, int imgDim, float *semis, float *cent, float incli, float val)
void prmatInit(PRMAT *mat)
float ellipseGetMinor(ELLIPSE *ell)
int radonSetBases(RADON *radtra, ELLIPSE *elli, PRMAT *mat)
float prmatGetFactorSqrSum(PRMAT *mat, int row)
unsigned int prmatGetYCoord(PRMAT *mat, int row, int pix)
int fbpMakeFilter(float *sinFFT, float *cosFFT, float cutoff, int filter, int lenFFT, int views, float *fbpFilter, int verbose)
void recInterpolateSinogram(float *srcsino, float *newsino, int srcrays, int newrays, int views)
int imgMRP(IMG *scn, IMG *img, int imgDim, float zoom, float shiftX, float shiftY, float rotation, int maxIterNr, int skipPriorNr, float beta, int maskDim, int osSetNr, int verbose)
int radonFwdTransformSA(RADON *radtra, int set, int setNr, float *imgdata, float *scndata)
int imgReprojection(IMG *img, IMG *scn, int verbose)
int radonGetNB(RADON *radtra)
unsigned int prmatGetXCoord(PRMAT *mat, int row, int pix)
int imgFBP(IMG *scn, IMG *img, int imgDim, float zoom, int filter, float cutoff, float shiftX, float shiftY, float rotation, int verbose)
unsigned int prmatGetPixCoord(PRMAT *mat, int row)
int RADON_VERBOSE
Drive in verbose mode if not 0.
int radonBackTransformPRM(PRMAT *mat, int set, int setNr, float *scndata, float *imgdata)
int radonGetNV(RADON *radtra)
void fbp_back_proj(float *prj, float *imgCorner, int imgDim, int view, int views, int rays, float offsX, float offsY, float *sinB, float *sinBrot)
float med21(float *inp, int dim)
int radonFwdTransformPRM(PRMAT *mat, int set, int setNr, float *imgdata, float *scndata)
float radonGetSin(RADON *radtra, int nr)
int PRMAT_TEST
If not 0 drive in test mode.
void fbp_fft_bidir_complex_radix2(float *real, float *imag, int direct, int n, float *sine, float *cosine)
int PRMAT_VERBOSE
If not 0 drive in verbose mode.
int ellipseGetValue(ELLIPSE *ell)
int radonSetLORS(RADON *radtra, ELLIPSE *elli, PRMAT *mat)
unsigned int prmatGetCoord(PRMAT *mat, int row, int pix)
void set_os_set(int os_sets, int *set_seq)
float ellipseGetCenterY(ELLIPSE *ell)
int prmatSaveMatrix(PRMAT *mat)
int radonGetCB(RADON *radtra)
int RADON_TEST
Drive in test mode if not 0.
void ellipseInit(ELLIPSE *ell)
float med9(float *inp, int dim)
float prmatGetMin(PRMAT *mat)
unsigned int prmatGetID(PRMAT *mat)
void ellipseEmpty(ELLIPSE *ell)
int recGetStatistics(float *buf, int n, float *osum, float *omin, float *omax, int skip_zero_mins)
int ** ellipseGetArray(ELLIPSE *ell)
int radonSetLUT(RADON *radtra, ELLIPSE *elli, PRMAT *mat)
float prmatGetMajor(PRMAT *mat)
void reprojectionAvg5(float *data, int n)
float ellipseGetMajor(ELLIPSE *ell)
int ellipseSaveEllipse(ELLIPSE *ell, FILE *fp)
float ellipseGetCenterX(ELLIPSE *ell)
int ellipseIsInside(ELLIPSE *ell, int row, int col)
int prmatReadMatrix(char *fname, PRMAT *mat)
int prmatAllocate(PRMAT *mat, int set, unsigned int rows, unsigned int *coords)
int radonSetBasesEA(RADON *radtra, ELLIPSE *elli, PRMAT *mat)
void do_prior(float *img, float beta, float *med_coef, int dim, float small, int maskdim, float *maxm)
float radonGetSD(RADON *radtra)
float prmatGetFactor(PRMAT *mat, int row, int pix)
unsigned int prmatGetPixels(PRMAT *mat, int row)
int radonBackTransformEA(RADON *radtra, int set, int setNr, float *scndata, float *imgdata)
void fbp_back_proj_round(float *prj, float *imgOrigin, int imgDim, int view, int views, int rays, float offsX, float offsY, float bpZoom, float *sinB, float *sinBrot)
void radonEmpty(RADON *radtra)
int fbp(float *sinogram, int rays, int views, int dim, int filter, float cutoff, float *image)
int radonBackTransformSA(RADON *radtra, int set, int setNr, float *imgdata, float *scndata)
void mrpProjectionCorrection(float *measured, float *proj, float *correct, int os_sets, int rays, int views)
int radonBackTransform(RADON *radtra, int set, int setNr, float *scndata, float *imgdata)
unsigned int prmatGetNB(PRMAT *mat)
float prmatGetMax(PRMAT *mat)
void mrpUpdate(float *coef, float *img, float *oimg, int n)
Ellipse on two dimensional plane.
float value
Value inside the ellipse.
float inclination
Inclination (degrees).
char status
ellipse status.
int imageDim
Size of the image plane on which the ellipse is defined.
float max
Maximal factor value in the projection matrix.
float min
Minimal factor value in the projection matrix.
char type
Scanner information on the prmat. 0=ECAT931 1=GE Advance.
float * factor_sqr_sum
Square sums of factors in each row in the projection matrix.
unsigned short int *** fact
float scaling_factor
Scaling factor for factors (notice that factors are stored in integers).
unsigned int * dime
Number of pixels hit by a line for every line.
unsigned int imgDim
Scanner geometrics, field imgDim.
float factor_sum
The sum of all factors in the projection matrix.
unsigned int dimr
Dimension of rows (lines of response) in the projection matrix.
unsigned int nrp
Number of pixels inside the fov. i.e. number of rows in the look-up table.
unsigned int viewNr
Scanner geometrics, field viewNr.
unsigned int ** _linesdata
Hidden pointer for the actual data.
int mode
Discretisation model utilised.
unsigned int binNr
Scanner geometrics, field binNr.
unsigned short int *** _factdata
Hidden pointer for the actual data.