21 if(verbose>0) {printf(
"%s(*img)\n", __func__); fflush(stdout);}
24 int gapNr=0, overlapNr=0;
25 for(
int fi=1; fi<img->
dimt; fi++) {
26 float gap=img->
start[fi] - img->
end[fi-1];
27 if(verbose>2 && fabs(gap)>1.0E-06)
28 printf(
"gap between frames %d and %d: %g\n", fi, fi+1, gap);
29 if(gap>1.0E-06) gapNr++;
30 else if(gap<-1.0E-06) overlapNr++;
33 printf(
" %d overlap(s)\n", overlapNr);
34 printf(
" %d gap(s)\n", gapNr);
38 if(overlapNr>0) ret+=1;
56 if(verbose>0) {printf(
"%s(*img)\n", __func__); fflush(stdout);}
59 for(
int fi=1; fi<img->
dimt; fi++) {
60 float gap=img->
start[fi] - img->
end[fi-1];
61 if(gap<1.0E-07)
continue;
62 if(verbose>2) printf(
"gap between frames %d and %d: %g\n", fi, fi+1, gap);
82 float overlap, overlap_limit=1.8, flen1, flen2;
84 if(
IMG_TEST) {fprintf(stdout,
"%s()\n", __func__); fflush(stdout);}
86 for(fi=0; fi<img->
dimt-1; fi++) {
87 overlap=img->
end[fi] - img->
start[fi+1];
88 if(overlap==0.0)
continue;
89 else if(overlap<-overlap_limit)
continue;
90 else if(overlap>overlap_limit)
return(2);
94 if(flen1>flen2) img->
end[fi]=img->
start[fi+1];
else img->
start[fi+1]=img->
end[fi];
96 if(flen1>flen2) img->
start[fi+1]=img->
end[fi];
else img->
end[fi]=img->
start[fi+1];
116 if(
IMG_TEST) {fprintf(stdout,
"%s()\n", __func__); fflush(stdout);}
118 for(fi=0; fi<img->
dimt-1; fi++) {
119 overlap=img->
end[fi] - img->
start[fi+1];
120 if(overlap==0.0)
continue;
121 else if(overlap>1.0)
return(2);
142 int zi, yi, xi, fi, fj, m, f1, f2;
144 if(
IMG_TEST) {fprintf(stdout,
"%s(img, %d)\n", __func__, n); fflush(stdout);}
146 if(n<3) n=3;
else if((n%2)==0)
return(1);
147 if(img->
dimt<n)
return(0);
149 double orig[img->
dimt], vsum, fsum, fdur;
150 for(zi=0; zi<img->
dimz; zi++) {
151 for(yi=0; yi<img->
dimy; yi++)
for(xi=0; xi<img->
dimx; xi++) {
153 for(fi=0; fi<img->
dimt; fi++) orig[fi]=img->
m[zi][yi][xi][fi];
155 for(fi=0; fi<img->
dimt; fi++) {
157 f1=fi-m;
if(f1<0) f1=0;
158 f2=fi+m;
if(f2>img->
dimt-1) f2=img->
dimt-1;
161 for(fj=f1; fj<=f2; fj++) {
166 if(fsum<1.0E-010)
return(2);
167 img->
m[zi][yi][xi][fi]=vsum/fsum;
192 if(verbose>0) {printf(
"%s()\n", __func__); fflush(stdout);}
196 if(verbose>0) {fprintf(stderr,
"only dynamic image can be processed!\n"); fflush(stderr);}
199 if(dimg==NULL && mimg==NULL)
return(0);
207 printf(
"allocating memory for %dx%dx%d pixels\n", img->
dimz, img->
dimy, img->
dimx);
227 for(zi=0; zi<img->
dimz; zi++) {
228 for(yi=0; yi<img->
dimy; yi++)
for(xi=0; xi<img->
dimx; xi++) {
229 for(ti=1; ti<img->
dimt; ti++) {
231 dimg->
m[zi][yi][xi][0]+=fabs(img->
m[zi][yi][xi][ti]-img->
m[zi][yi][xi][ti-1]);
234 mimg->
m[zi][yi][xi][0]+=0.5*fabs(img->
m[zi][yi][xi][ti]+img->
m[zi][yi][xi][ti-1]);
261 if(verbose>0) {printf(
"%s()\n", __func__); fflush(stdout);}
265 if(verbose>0) {fprintf(stderr,
"only dynamic image can be processed!\n"); fflush(stderr);}
268 if(iimg==NULL && dimg==NULL)
return(0);
276 printf(
"allocating memory for %dx%dx%d pixels\n", img->
dimz, img->
dimy, img->
dimx);
293 iimg->
unit=dimg->
unit=CUNIT_UNITLESS;
298 for(zi=0; zi<img->
dimz; zi++) {
299 for(yi=0; yi<img->
dimy; yi++)
for(xi=0; xi<img->
dimx; xi++) {
300 for(ti=1; ti<img->
dimt; ti++)
301 if(img->
m[zi][yi][xi][ti]>img->
m[zi][yi][xi][ti-1]) iimg->
m[zi][yi][xi][0]+=1.0;
302 if(verbose>2) {printf(
"increases m[%d][%d][%d]=%g\n", zi, yi, xi, iimg->
m[zi][yi][xi][0]);}
307 for(zi=0; zi<img->
dimz; zi++) {
308 for(yi=0; yi<img->
dimy; yi++)
for(xi=0; xi<img->
dimx; xi++) {
309 for(ti=1; ti<img->
dimt; ti++)
310 if(img->
m[zi][yi][xi][ti]<img->
m[zi][yi][xi][ti-1]) dimg->
m[zi][yi][xi][0]+=1.0;
311 if(verbose>2) {printf(
"decreases m[%d][%d][%d]=%g\n", zi, yi, xi, dimg->
m[zi][yi][xi][0]);}
int imgAllocate(IMG *image, int planes, int rows, int columns, int frames)
int imgCopyhdr(IMG *image1, IMG *image2)
void imgEmpty(IMG *image)
int imgSmoothOverFrames(IMG *img, int n)
int imgDeleteFrameOverlap_old(IMG *img)
int imgGetFrameDyn(IMG *img, IMG *iimg, IMG *dimg, int verbose)
int imgGetFrameDiff(IMG *img, IMG *dimg, IMG *mimg, int verbose)
int imgFrameGapFill(IMG *img, int verbose)
int imgFramesCheck(IMG *img, int verbose)
int imgDeleteFrameOverlap(IMG *img)
#define IMG_STATUS_OCCUPIED
Header file for libtpcimgp.