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

Simple arithmetic calculations on ECAT files. More...

Go to the source code of this file.

Functions

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

Detailed Description

Simple arithmetic calculations on ECAT files.

Previous application name ecatcalc.

Author
Vesa Oikonen
Test
Test other image formats than ECAT.

Definition in file imgcalc.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 86 of file imgcalc.c.

93 {
94 int ii, mi, ret;
95 char tmp[1024];
96 ECAT_HEADERS ehdr;
97
98 if(verbose>1) printf("ecatCopyHeadersNoQuant(%s, %s)\n", file1, file2);
99 if(file1==NULL || file2==NULL) return(1);
100
101
102 /* Read headers */
103 ehdrInitiate(&ehdr);
104 ret=ecat7ReadHeaders(file1, &ehdr, verbose-1); if(ret!=0) return(10);
105 /* Remove main header information that should NOT be copied */
106 strcpy(tmp, "user_process_code");
107 ii=iftGet(&ehdr.mh, tmp, 0); iftDeleteItem(&ehdr.mh, ii, 0);
108 strcpy(tmp, "ecat_calibration_factor");
109 ii=iftGet(&ehdr.mh, tmp, 0); iftDeleteItem(&ehdr.mh, ii, 0);
110
111 /* Remove subheader information that should NOT be copied */
112 for(mi=0; mi<ehdr.nr; mi++) {
113 strcpy(tmp, "scale_factor");
114 ii=iftGet(&ehdr.m[mi].sh, tmp, 0); iftDeleteItem(&ehdr.m[mi].sh, ii, 0);
115 strcpy(tmp, "image_min");
116 ii=iftGet(&ehdr.m[mi].sh, tmp, 0); iftDeleteItem(&ehdr.m[mi].sh, ii, 0);
117 strcpy(tmp, "image_max");
118 ii=iftGet(&ehdr.m[mi].sh, tmp, 0); iftDeleteItem(&ehdr.m[mi].sh, ii, 0);
119 strcpy(tmp, "scan_min");
120 ii=iftGet(&ehdr.m[mi].sh, tmp, 0); iftDeleteItem(&ehdr.m[mi].sh, ii, 0);
121 strcpy(tmp, "scan_max");
122 ii=iftGet(&ehdr.m[mi].sh, tmp, 0); iftDeleteItem(&ehdr.m[mi].sh, ii, 0);
123 }
124
125 /* Write headers */
126 ret=ecat7WriteHeaders(file2, &ehdr, verbose-1);
127 ehdrEmpty(&ehdr);
128 if(ret!=0) return(10+ret);
129
130 return 0;
131}
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