TPCCLIB
Toggle main menu visibility
Loading...
Searching...
No Matches
libtpcimgp
imgflips.c
Go to the documentation of this file.
1
5
/*****************************************************************************/
6
#include "
libtpcimgp.h
"
7
/*****************************************************************************/
8
9
/*****************************************************************************/
13
void
imgFlipHorizontal
(
IMG
*img)
14
{
15
int
zi, yi, from, to;
16
float
*col_ptr;
17
18
for
(zi=0; zi<img->
dimz
; zi++) {
19
for
(yi=0; yi<img->
dimy
; yi++) {
20
for
(from=0, to=img->
dimx
-1; from<to; from++, to--) {
21
col_ptr=img->
m
[zi][yi][from];
22
img->
m
[zi][yi][from]=img->
m
[zi][yi][to];
23
img->
m
[zi][yi][to]=col_ptr;
24
}
25
}
26
}
27
}
28
/*****************************************************************************/
29
30
/*****************************************************************************/
34
void
imgFlipVertical
(
IMG
*img)
35
{
36
int
zi, from, to;
37
float
**row_ptr;
38
39
for
(zi=0; zi<img->
dimz
; zi++) {
40
for
(from=0, to=img->
dimy
-1; from<to; from++, to--) {
41
row_ptr=img->
m
[zi][from];
42
img->
m
[zi][from]=img->
m
[zi][to];
43
img->
m
[zi][to]=row_ptr;
44
}
45
}
46
}
47
/*****************************************************************************/
48
49
/*****************************************************************************/
55
void
imgFlipPlanes
(
IMG
*img)
56
{
57
int
from, to;
58
float
***plane_ptr;
59
60
for
(from=0, to=img->
dimz
-1; from<to; from++, to--) {
61
plane_ptr=img->
m
[from];
62
img->
m
[from]=img->
m
[to];
63
img->
m
[to]=plane_ptr;
64
}
65
}
66
/*****************************************************************************/
67
68
/*****************************************************************************/
73
int
imgFlipRight
(
75
IMG
*img
76
) {
77
int
xi, yi, zi, fi, ret;
78
IMG
omg;
79
80
/* Make copy of the original image */
81
imgInit
(&omg); ret=
imgDup
(img, &omg);
if
(ret!=0)
return
(100+ret);
82
83
/* Empty the user-specified image struct */
84
imgEmpty
(img);
85
/* Allocate it again with new dimensions */
86
ret=
imgAllocateWithHeader
(img, omg.
dimx
, omg.
dimy
, omg.
dimz
, omg.
dimt
, &omg);
87
if
(ret!=0) {
imgEmpty
(&omg);
return
(200+ret);}
88
89
/* Copy the voxel values */
90
for
(zi=0; zi<omg.
dimz
; zi++)
91
for
(yi=0; yi<omg.
dimy
; yi++)
92
for
(xi=0; xi<omg.
dimx
; xi++)
93
for
(fi=0; fi<omg.
dimt
; fi++) {
94
img->
m
[xi][yi][zi][fi]=omg.
m
[zi][yi][xi][fi];
95
}
96
97
/* Switch pixel sizes */
98
img->
sizex
=omg.
sizez
;
99
img->
sizez
=omg.
sizex
;
100
img->
resolutionx
=omg.
resolutionz
;
101
img->
resolutionz
=omg.
resolutionx
;
102
103
/* Free the memory of the copy of original image */
104
imgEmpty
(&omg);
105
106
return
(0);
107
}
108
/*****************************************************************************/
109
110
/*****************************************************************************/
115
int
imgFlipAbove
(
117
IMG
*img
118
) {
119
int
xi, yi, zi, fi, ret;
120
IMG
omg;
121
122
/* Make copy of the original image */
123
imgInit
(&omg); ret=
imgDup
(img, &omg);
if
(ret!=0)
return
(100+ret);
124
125
/* Empty the user-specified image structure. */
126
imgEmpty
(img);
127
/* Allocate it again with new dimensions */
128
ret=
imgAllocateWithHeader
(img, omg.
dimy
, omg.
dimz
, omg.
dimx
, omg.
dimt
, &omg);
129
if
(ret!=0) {
imgEmpty
(&omg);
return
(200+ret);}
130
131
/* Copy the voxel values */
132
for
(zi=0; zi<omg.
dimz
; zi++)
133
for
(yi=0; yi<omg.
dimy
; yi++)
134
for
(xi=0; xi<omg.
dimx
; xi++)
135
for
(fi=0; fi<omg.
dimt
; fi++) {
136
img->
m
[yi][img->
dimy
-1-zi][xi][fi]=omg.
m
[zi][yi][xi][fi];
137
}
138
139
/* Switch pixel sizes */
140
img->
sizey
=omg.
sizez
;
141
img->
sizez
=omg.
sizey
;
142
img->
resolutiony
=omg.
resolutionz
;
143
img->
resolutionz
=omg.
resolutiony
;
144
145
/* Free the memory of the copy of original image */
146
imgEmpty
(&omg);
147
148
return
(0);
149
}
150
/*****************************************************************************/
151
152
/*****************************************************************************/
157
int
imgMeanZ
(
159
IMG
*img1,
161
IMG
*img2
162
) {
163
if
(img1==NULL || img2==NULL)
return
(1);
164
if
(img1->
dimz
<1 || img1->
dimy
<1 || img1->
dimx
<1 || img1->
dimt
<1)
return
(1);
165
166
/* If z dim is already 1, then just duplicate the image */
167
if
(img1->
dimz
==1)
return
(
imgDup
(img1, img2));
168
169
/* Allocate memory for the output image */
170
if
(
imgAllocateWithHeader
(img2, 1, img1->
dimy
, img1->
dimx
, img1->
dimt
, img1)!=0)
171
return
(3);
172
173
/* Sum over z dimension */
174
for
(
int
zi=0; zi<img1->
dimz
; zi++)
175
for
(
int
yi=0; yi<img1->
dimy
; yi++)
176
for
(
int
xi=0; xi<img1->
dimx
; xi++)
177
for
(
int
ti=0; ti<img1->
dimt
; ti++)
178
img2->
m
[0][yi][xi][ti]+=img1->
m
[zi][yi][xi][ti];
179
180
/* Divide by original z dimension */
181
for
(
int
yi=0; yi<img2->
dimy
; yi++)
182
for
(
int
xi=0; xi<img2->
dimx
; xi++)
183
for
(
int
ti=0; ti<img2->
dimt
; ti++)
184
img2->
m
[0][yi][xi][ti]/=(
float
)img1->
dimz
;
185
186
return
(0);
187
}
188
/*****************************************************************************/
189
190
/*****************************************************************************/
imgAllocateWithHeader
int imgAllocateWithHeader(IMG *image, int planes, int rows, int columns, int frames, IMG *image_from)
Definition
img.c:279
imgDup
int imgDup(IMG *img1, IMG *img2)
Definition
img.c:304
imgEmpty
void imgEmpty(IMG *image)
Definition
img.c:121
imgInit
void imgInit(IMG *image)
Definition
img.c:60
imgFlipVertical
void imgFlipVertical(IMG *img)
Definition
imgflips.c:34
imgFlipHorizontal
void imgFlipHorizontal(IMG *img)
Definition
imgflips.c:13
imgMeanZ
int imgMeanZ(IMG *img1, IMG *img2)
Definition
imgflips.c:157
imgFlipRight
int imgFlipRight(IMG *img)
Definition
imgflips.c:73
imgFlipPlanes
void imgFlipPlanes(IMG *img)
Definition
imgflips.c:55
imgFlipAbove
int imgFlipAbove(IMG *img)
Definition
imgflips.c:115
libtpcimgp.h
Header file for libtpcimgp.
IMG
Definition
libtpcimgio.h:1657
IMG::sizex
float sizex
Definition
libtpcimgio.h:1714
IMG::dimx
unsigned short int dimx
Definition
libtpcimgio.h:1780
IMG::resolutionx
float resolutionx
Definition
libtpcimgio.h:1726
IMG::resolutiony
float resolutiony
Definition
libtpcimgio.h:1728
IMG::m
float **** m
Definition
libtpcimgio.h:1799
IMG::dimt
unsigned short int dimt
Definition
libtpcimgio.h:1778
IMG::sizey
float sizey
Definition
libtpcimgio.h:1716
IMG::dimz
unsigned short int dimz
Definition
libtpcimgio.h:1784
IMG::dimy
unsigned short int dimy
Definition
libtpcimgio.h:1782
IMG::sizez
float sizez
Definition
libtpcimgio.h:1718
IMG::resolutionz
float resolutionz
Definition
libtpcimgio.h:1730
Generated on
for TPCCLIB by
1.17.0