Xmipp  v3.23.11-Nereus
python_image.h
Go to the documentation of this file.
1 /***************************************************************************
2  *
3  * Authors: J.M. De la Rosa Trevin (jmdelarosa@cnb.csic.es)
4  * Roberto Marabini (roberto@cnb.csic.es)
5  *
6  * Unidad de Bioinformatica of Centro Nacional de Biotecnologia , CSIC
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
21  * 02111-1307 USA
22  *
23  * All comments concerning this program package may be sent to the
24  * e-mail address 'xmipp@cnb.csic.es'
25  ***************************************************************************/
26 
27 #ifndef _PYTHON_IMAGE_H
28 #define _PYTHON_IMAGE_H
29 
30 #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION // this code is NumPy 1.8 compliant (i.e. we don't need API deprecated in 1.7)
31 
32 #include "Python.h"
34 #include <numpy/ndarraytypes.h>
35 #include <numpy/arrayobject.h>
36 #include <memory>
37 
38 extern PyObject * PyXmippError;
39 /***************************************************************/
40 /* Image */
41 /**************************************************************/
42 
43 #define Image_Check(v) (((v)->ob_type == &ImageType))
44 #define Image_Value(v) ((*((ImageObject*)(v))->image))
45 
46 /*Image Object*/
47 typedef struct
48 {
49  PyObject_HEAD
50  std::unique_ptr<ImageGeneric> image;
51 }
53 
54 /* Destructor */
55 void Image_dealloc(ImageObject* self);
56 
57 /* Constructor */
58 PyObject *
59 Image_new(PyTypeObject *type, PyObject *args, PyObject *kwargs);
60 
61 /* Image string representation */
62 PyObject *
63 Image_repr(PyObject * obj);
64 
65 /* Image compare function */
66 PyObject*
67 Image_RichCompareBool(PyObject * obj, PyObject * obj2, int opid);
68 
69 
70 /* Compare two images up to a precision */
71 PyObject *
72 Image_equal(PyObject *obj, PyObject *args, PyObject *kwargs);
73 
74 /* write */
75 PyObject *
76 Image_write(PyObject *obj, PyObject *args, PyObject *kwargs);
77 
78 
79 /* read */
80 PyObject *
81 Image_read(PyObject *obj, PyObject *args, PyObject *kwargs);
82 
83 /* read preview*/
84 PyObject *
85 Image_readPreview(PyObject *obj, PyObject *args, PyObject *kwargs);
86 
87 /* read preview, downsample in Fourier*/
88 PyObject *
89 Image_readPreviewSmooth(PyObject *obj, PyObject *args, PyObject *kwargs);
90 
91 /* convert to psd */
92 PyObject *
93 Image_convertPSD(PyObject *obj, PyObject *args, PyObject *kwargs);
94 
95 /* readApplyGeo */
96 PyObject *
97 Image_readApplyGeo(PyObject *obj, PyObject *args, PyObject *kwargs);
98 
99 PyObject *
100 Image_applyGeo(PyObject *obj, PyObject *args, PyObject *kwargs);
101 
102 NPY_TYPES datatype2NpyType(DataType dt);
103 
104 DataType npyType2Datatype(int npy);
105 
106 /* getData */
107 PyObject *
108 Image_getData(PyObject *obj, PyObject *args, PyObject *kwargs);
109 
110 /* projectVolumeDouble */
111 PyObject *
112 Image_projectVolumeDouble(PyObject *obj, PyObject *args, PyObject *kwargs);
113 
114 /* setData */
115 PyObject *
116 Image_setData(PyObject *obj, PyObject *args, PyObject *kwargs);
117 
118 /* getPixel */
119 PyObject *
120 Image_getPixel(PyObject *obj, PyObject *args, PyObject *kwargs);
121 
122 /* setPixel */
123 PyObject *
124 Image_setPixel(PyObject *obj, PyObject *args, PyObject *kwargs);
125 
126 /* initConstant */
127 PyObject *
128 Image_initConstant(PyObject *obj, PyObject *args, PyObject *kwargs);
129 
130 /* mirrorY */
131 PyObject *
132 Image_mirrorY(PyObject *obj, PyObject *args, PyObject *kwargs);
133 
134 /* applyTransforMatScipion */
135 PyObject *
136 Image_applyTransforMatScipion(PyObject *obj, PyObject *args, PyObject *kwargs);
137 
138 /* applyWarpAffine */
139 PyObject *
140 Image_warpAffine(PyObject *obj, PyObject *args, PyObject *kwargs);
141 
142 /* applyTransforMatScipion */
143 PyObject *
144 Image_applyCTF(PyObject *obj, PyObject *args, PyObject *kwargs);
145 
146 /* initRandom */
147 PyObject *
148 Image_initRandom(PyObject *obj, PyObject *args, PyObject *kwargs);
149 
150 /* Resize Image */
151 PyObject *
152 Image_resize(PyObject *obj, PyObject *args, PyObject *kwargs);
153 
154 /* Scale Image */
155 PyObject *
156 Image_scale(PyObject *obj, PyObject *args, PyObject *kwargs);
157 
158 /* Reslice volume */
159 PyObject *
160 Image_reslice(PyObject *obj, PyObject *args, PyObject *kwargs);
161 
162 /* Write slices */
163 PyObject *
164 Image_writeSlices(PyObject *obj, PyObject *args, PyObject *kwargs);
165 
166 /* Patch with other image */
167 PyObject *
168 Image_patch(PyObject *obj, PyObject *args, PyObject *kwargs);
169 
170 /* Get Data Type */
171 PyObject *
172 Image_getDataType(PyObject *obj, PyObject *args, PyObject *kwargs);
173 
174 /* Set Data Type */
175 PyObject *
176 Image_setDataType(PyObject *obj, PyObject *args, PyObject *kwargs);
177 
178 /* Set Data Type */
179 PyObject *
180 Image_convert2DataType(PyObject *obj, PyObject *args, PyObject *kwargs);
181 
182 /* Return image dimensions as a tuple */
183 PyObject *
184 Image_getDimensions(PyObject *obj, PyObject *args, PyObject *kwargs);
185 
186 /* Return image dimensions as a tuple */
187 PyObject *
188 Image_resetOrigin(PyObject *obj, PyObject *args, PyObject *kwargs);
189 
190 /* Return image dimensions as a tuple */
191 PyObject *
192 Image_getEulerAngles(PyObject *obj, PyObject *args, PyObject *kwargs);
193 
194 /* Return value from MainHeader*/
195 PyObject *
196 Image_getMainHeaderValue(PyObject *obj, PyObject *args, PyObject *kwargs);
197 
198 /* Set value to MainHeader*/
199 PyObject *
200 Image_setMainHeaderValue(PyObject *obj, PyObject *args, PyObject *kwargs);
201 
202 /* Return value from Header, now using only the first image*/
203 PyObject *
204 Image_getHeaderValue(PyObject *obj, PyObject *args, PyObject *kwargs);
205 
206 /* Set value to Header, now using only the first image*/
207 PyObject *
208 Image_setHeaderValue(PyObject *obj, PyObject *args, PyObject *kwargs);
209 
210 /* Return image dimensions as a tuple */
211 PyObject *
212 Image_computeStats(PyObject *obj, PyObject *args, PyObject *kwargs);
213 
214 /* Return PSD image*/
215 PyObject *
216 Image_computePSD(PyObject *obj, PyObject *args, PyObject *kwargs);
217 
218 /* I1-adjusted(I2) */
219 PyObject *
220 Image_adjustAndSubtract(PyObject *obj, PyObject *args, PyObject *kwargs);
221 
222 /* corr(I1,I2) */
223 PyObject *
224 Image_correlation(PyObject *obj, PyObject *args, PyObject *kwargs);
225 
226 /* corrAfterAlignment(I1,I2) */
227 PyObject *
228 Image_correlationAfterAlignment(PyObject *obj, PyObject *args, PyObject *kwargs);
229 
230 /* applyWarpAffine */
231 PyObject *
232 Image_warpAffine(PyObject *obj, PyObject *args, PyObject *kwargs);
233 
234 /* Return a window of the image*/
235 PyObject *
236 Image_window2D(PyObject *obj, PyObject *args, PyObject *kwargs);
237 
238 
239 PyObject *
240 Image_add(PyObject *obj1, PyObject *obj2);
241 PyObject *
242 Image_iadd(PyObject *obj1, PyObject *obj2);
243 PyObject *
244 Image_inplaceAdd(PyObject *self, PyObject *args, PyObject *kwargs);
245 
246 
247 PyObject *
248 Image_subtract(PyObject *obj1, PyObject *obj2);
249 PyObject *
250 Image_isubtract(PyObject *obj1, PyObject *obj2);
251 PyObject *
252 Image_inplaceSubtract(PyObject *self, PyObject *args, PyObject *kwargs);
253 
254 PyObject *
255 Image_multiply(PyObject *obj1, PyObject *obj2);
256 PyObject *
257 Image_imultiply(PyObject *obj1, PyObject *obj2);
258 PyObject *
259 Image_inplaceMultiply(PyObject *self, PyObject *args, PyObject *kwargs);
260 
261 PyObject *
262 Image_true_divide(PyObject *obj1, PyObject *obj2);
263 PyObject *
264 Image_idivide(PyObject *obj1, PyObject *obj2);
265 PyObject *
266 Image_inplaceDivide(PyObject *self, PyObject *args, PyObject *kwargs);
267 
268 PyObject *
269 Image_radialAvgAxis(PyObject *obj, PyObject *args, PyObject *kwargs);
270 
271 PyObject *
272 Image_centerOfMass(PyObject *obj);
273 
274 
275 extern PyNumberMethods Image_NumberMethods;
276 extern PyMethodDef Image_methods[];
277 extern PyTypeObject ImageType;
278 
279 
280 #endif
PyObject * Image_RichCompareBool(PyObject *obj, PyObject *obj2, int opid)
PyObject * Image_setData(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_inplaceDivide(PyObject *self, PyObject *args, PyObject *kwargs)
PyObject * Image_equal(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject_HEAD std::unique_ptr< ImageGeneric > image
Definition: python_image.h:50
PyObject * Image_setMainHeaderValue(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_setPixel(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * PyXmippError
Definition: xmippmodule.cpp:47
PyObject * Image_initConstant(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_add(PyObject *obj1, PyObject *obj2)
PyObject * Image_getDataType(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_getData(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_mirrorY(PyObject *obj, PyObject *args, PyObject *kwargs)
NPY_TYPES datatype2NpyType(DataType dt)
PyObject * Image_radialAvgAxis(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_computeStats(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_readApplyGeo(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_true_divide(PyObject *obj1, PyObject *obj2)
PyNumberMethods Image_NumberMethods
PyObject * Image_idivide(PyObject *obj1, PyObject *obj2)
PyObject * Image_read(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_setDataType(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_patch(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_applyTransforMatScipion(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_isubtract(PyObject *obj1, PyObject *obj2)
viol type
PyObject * Image_centerOfMass(PyObject *obj)
PyObject * Image_getPixel(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_getMainHeaderValue(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_inplaceAdd(PyObject *self, PyObject *args, PyObject *kwargs)
PyMethodDef Image_methods[]
PyObject * Image_readPreviewSmooth(PyObject *obj, PyObject *args, PyObject *kwargs)
void Image_dealloc(ImageObject *self)
PyObject * Image_subtract(PyObject *obj1, PyObject *obj2)
PyObject * Image_initRandom(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_scale(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_readPreview(PyObject *obj, PyObject *args, PyObject *kwargs)
DataType
PyObject * Image_correlationAfterAlignment(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_setHeaderValue(PyObject *obj, PyObject *args, PyObject *kwargs)
PyTypeObject ImageType
PyObject * Image_window2D(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_write(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_convert2DataType(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_inplaceSubtract(PyObject *self, PyObject *args, PyObject *kwargs)
PyObject * Image_applyCTF(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_adjustAndSubtract(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_applyGeo(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_getHeaderValue(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_repr(PyObject *obj)
PyObject * Image_iadd(PyObject *obj1, PyObject *obj2)
PyObject * Image_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
DataType npyType2Datatype(int npy)
PyObject * Image_reslice(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_resize(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_projectVolumeDouble(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_writeSlices(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_getDimensions(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_computePSD(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_warpAffine(PyObject *obj, PyObject *args, PyObject *kwargs)
void(* obj)()
PyObject * Image_resetOrigin(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_convertPSD(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_getEulerAngles(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_inplaceMultiply(PyObject *self, PyObject *args, PyObject *kwargs)
PyObject * Image_imultiply(PyObject *obj1, PyObject *obj2)
PyObject * Image_correlation(PyObject *obj, PyObject *args, PyObject *kwargs)
PyObject * Image_multiply(PyObject *obj1, PyObject *obj2)