TPCCLIB
Loading...
Searching...
No Matches
imgcbv.c File Reference

Subtracts or simulates the contribution of vascular radioactivity to dynamic PET image. More...

Go to the source code of this file.

Functions

int ecat7CopyHeadersNoQuant (const char *file1, const char *file2, int verbose)

Detailed Description

Subtracts or simulates the contribution of vascular radioactivity to dynamic PET image.

Author
Vesa Oikonen

Definition in file imgcbv.c.

Function Documentation

◆ ecat7CopyHeadersNoQuant()

int ecat7CopyHeadersNoQuant ( const char * file1,
const char * file2,
int verbose )

Copy ECAT7 header information from one file to another. Quantitative information is not copied. This function should be kept local to application imgcalc, but this may be useful in other programs, if copied/not copied fields are edited.

Returns
Returns 0 when successful, otherwise >0.
Parameters
file1ECAT file FROM which header information is copied
file2ECAT file IN which header information is copied to
verboseVerbose level

Definition at line 76 of file imgcbv.c.

83 {
84 int ii, mi, ret;
85 char tmp[1024];
86 ECAT_HEADERS ehdr;
87
88 if(verbose>1) printf("ecatCopyHeaders(%s, %s)\n", file1, file2);
89 if(file1==NULL || file2==NULL) return(1);
90
91
92 /* Read headers */
93 ehdrInitiate(&ehdr);
94 ret=ecat7ReadHeaders(file1, &ehdr, verbose-1); if(ret!=0) return(10);
95 /* Remove main header information that should NOT be copied */
96 strcpy(tmp, "user_process_code");
97 ii=iftGet(&ehdr.mh, tmp, 0); iftDeleteItem(&ehdr.mh, ii, 0);
98 strcpy(tmp, "ecat_calibration_factor");
99 ii=iftGet(&ehdr.mh, tmp, 0); iftDeleteItem(&ehdr.mh, ii, 0);
100
101 /* Remove subheader information that should NOT be copied */
102 for(mi=0; mi<ehdr.nr; mi++) {
103 strcpy(tmp, "scale_factor");
104 ii=iftGet(&ehdr.m[mi].sh, tmp, 0); iftDeleteItem(&ehdr.m[mi].sh, ii, 0);
105 strcpy(tmp, "image_min");
106 ii=iftGet(&ehdr.m[mi].sh, tmp, 0); iftDeleteItem(&ehdr.m[mi].sh, ii, 0);
107 strcpy(tmp, "image_max");
108 ii=iftGet(&ehdr.m[mi].sh, tmp, 0); iftDeleteItem(&ehdr.m[mi].sh, ii, 0);
109 strcpy(tmp, "scan_min");
110 ii=iftGet(&ehdr.m[mi].sh, tmp, 0); iftDeleteItem(&ehdr.m[mi].sh, ii, 0);
111 strcpy(tmp, "scan_max");
112 ii=iftGet(&ehdr.m[mi].sh, tmp, 0); iftDeleteItem(&ehdr.m[mi].sh, ii, 0);
113 }
114
115 /* Write headers */
116 ret=ecat7WriteHeaders(file2, &ehdr, verbose-1);
117 ehdrEmpty(&ehdr);
118 if(ret!=0) return(10+ret);
119
120 return 0;
121}
void ehdrEmpty(ECAT_HEADERS *ehdr)
Definition ecat7ift.c:47
int ecat7WriteHeaders(const char *fname, ECAT_HEADERS *ehdr, int verbose)
Definition ecat7ift.c:755
void ehdrInitiate(ECAT_HEADERS *ehdr)
Definition ecat7ift.c:21
int ecat7ReadHeaders(const char *fname, ECAT_HEADERS *ehdr, int verbose)
Definition ecat7ift.c:687
int iftDeleteItem(IFT *ift, int item, int verbose)
Definition ift.c:169
int iftGet(IFT *ift, char *key, int verbose)
Definition iftsrch.c:15
ECAT_MATRIX * m