imicpe 1.0.8.1__tar.gz → 1.0.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {imicpe-1.0.8.1 → imicpe-1.0.10}/PKG-INFO +1 -1
- {imicpe-1.0.8.1 → imicpe-1.0.10}/pyproject.toml +1 -1
- imicpe-1.0.10/src/imicpe/_version.py +1 -0
- imicpe-1.0.10/src/imicpe/optim/metrics.py +64 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/optim/operators.py +138 -76
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe.egg-info/PKG-INFO +1 -1
- imicpe-1.0.8.1/src/imicpe/_version.py +0 -1
- imicpe-1.0.8.1/src/imicpe/optim/metrics.py +0 -9
- {imicpe-1.0.8.1 → imicpe-1.0.10}/DESCRIPTION.md +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/LICENSE +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/README.md +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/setup.cfg +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/__init__.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/cs/__init__.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/cs/l1.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/cs/masks.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/cs/metrics.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/cs/operators.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/cs/shepp_logan_phantom.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/cs/tikhonov.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/optim/__init__.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/optim/pnnDataset.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/optim/pnnTrainer.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/optim/pnnUtils.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/reco3D/__init__.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/reco3D/angles.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/reco3D/calculPose.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/reco3D/evalTrajecto.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe/reco3D/vue3D.py +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe.egg-info/SOURCES.txt +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe.egg-info/dependency_links.txt +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe.egg-info/requires.txt +0 -0
- {imicpe-1.0.8.1 → imicpe-1.0.10}/src/imicpe.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: imicpe
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.10
|
|
4
4
|
Summary: Toolbox for Maths,Signal,Image Teaching @ CPE
|
|
5
5
|
Author-email: Marion Foare <marion.foare@cpe.fr>, Eric Van Reeth <eric.vanreeth@cpe.fr>, Arthur Gautheron <arthur.gautheron@cpe.fr>
|
|
6
6
|
License: MIT License
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__="1.0.10"
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
import torch
|
|
3
|
+
from skimage.metrics import structural_similarity as ssim
|
|
4
|
+
|
|
5
|
+
def mse(I,ref):
|
|
6
|
+
""" Calcule la MSE
|
|
7
|
+
|
|
8
|
+
Parameters
|
|
9
|
+
----------
|
|
10
|
+
I : (numpy.ndarray)
|
|
11
|
+
signal 1D OU image NON vectorisée 2D dégradé(e)
|
|
12
|
+
|
|
13
|
+
ref : (numpy.ndarray)
|
|
14
|
+
vérité terrain (signal 1D OU image NON vectorisée 2D)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
Returns
|
|
18
|
+
-------
|
|
19
|
+
: (float)
|
|
20
|
+
Valeur de MSE
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
return np.round(np.sum((I-ref)**2)/I.size,5)
|
|
24
|
+
|
|
25
|
+
def snr(I,ref):
|
|
26
|
+
""" Calcule le SNR
|
|
27
|
+
|
|
28
|
+
Parameters
|
|
29
|
+
----------
|
|
30
|
+
I : (numpy.ndarray)
|
|
31
|
+
signal 1D OU image NON vectorisée 2D dégradé(e)
|
|
32
|
+
|
|
33
|
+
ref : (numpy.ndarray)
|
|
34
|
+
vérité terrain (signal 1D OU image NON vectorisée 2D)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
Returns
|
|
38
|
+
-------
|
|
39
|
+
: (float)
|
|
40
|
+
Valeur de SNR
|
|
41
|
+
"""
|
|
42
|
+
return np.round(10* np.log10(np.sum(ref**2)/np.sum((I-ref)**2)),2)
|
|
43
|
+
|
|
44
|
+
def ssim(I,ref):
|
|
45
|
+
""" Calcule le SSIM
|
|
46
|
+
|
|
47
|
+
Parameters
|
|
48
|
+
----------
|
|
49
|
+
I : (numpy.ndarray)
|
|
50
|
+
signal 1D OU image NON vectorisée 2D dégradé(e)
|
|
51
|
+
|
|
52
|
+
ref : (numpy.ndarray)
|
|
53
|
+
vérité terrain (signal 1D OU image NON vectorisée 2D)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
Returns
|
|
57
|
+
-------
|
|
58
|
+
: (float)
|
|
59
|
+
Valeur de SSIM
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
return np.round(ssim(img, img_noise, data_range=img_noise.max() - img_noise.min())
|
|
63
|
+
,3)
|
|
64
|
+
|
|
@@ -8,12 +8,16 @@ import scipy.sparse as sp
|
|
|
8
8
|
############################################################
|
|
9
9
|
def Id(x):
|
|
10
10
|
"""Opérateur identité
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
|
|
12
|
+
Parameters
|
|
13
|
+
----------
|
|
14
|
+
X : (numpy.ndarray)
|
|
15
|
+
signal 1D OU image NON vectorisée 2D
|
|
16
|
+
|
|
17
|
+
Returns
|
|
18
|
+
-------
|
|
19
|
+
: (numpy.ndarray)
|
|
20
|
+
X
|
|
17
21
|
"""
|
|
18
22
|
|
|
19
23
|
return x
|
|
@@ -27,12 +31,15 @@ def D(x):
|
|
|
27
31
|
"""Calcule le gradient par différences finies à droite.
|
|
28
32
|
Autrement dit, D(x) calcule le produit matriciel Dx.
|
|
29
33
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
Parameters
|
|
35
|
+
----------
|
|
36
|
+
X : (numpy.ndarray)
|
|
37
|
+
signal 1D OU image NON vectorisée 2D
|
|
38
|
+
|
|
39
|
+
Returns
|
|
40
|
+
-------
|
|
41
|
+
: (numpy.ndarray)
|
|
42
|
+
Gradient de X
|
|
36
43
|
"""
|
|
37
44
|
|
|
38
45
|
if x.ndim == 1:
|
|
@@ -50,12 +57,15 @@ def Dt(x):
|
|
|
50
57
|
"""Calcule l’adjoint gradient par différences finies à droite.
|
|
51
58
|
Autrement dit, Dt(x) calcule le produit matriciel D'x.
|
|
52
59
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
Parameters
|
|
61
|
+
----------
|
|
62
|
+
X : (numpy.ndarray)
|
|
63
|
+
signal 1D OU image NON vectorisée 2D
|
|
64
|
+
|
|
65
|
+
Returns
|
|
66
|
+
-------
|
|
67
|
+
: (numpy.ndarray)
|
|
68
|
+
Divergence de X
|
|
59
69
|
"""
|
|
60
70
|
|
|
61
71
|
if x.ndim == 1:
|
|
@@ -73,12 +83,15 @@ def L(x):
|
|
|
73
83
|
"""Calcule la dérivée seconde d’un signal, ou le laplacien dans le cas d’une image.
|
|
74
84
|
Autrement dit, L(x) calcule le produit matriciel Lx.
|
|
75
85
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
86
|
+
Parameters
|
|
87
|
+
----------
|
|
88
|
+
X : (numpy.ndarray)
|
|
89
|
+
signal 1D OU image NON vectorisée 2D
|
|
79
90
|
|
|
80
|
-
Returns
|
|
81
|
-
|
|
91
|
+
Returns
|
|
92
|
+
-------
|
|
93
|
+
: (numpy.ndarray)
|
|
94
|
+
Laplacien de X
|
|
82
95
|
"""
|
|
83
96
|
|
|
84
97
|
if x.ndim == 1:
|
|
@@ -95,12 +108,15 @@ def Lt(x):
|
|
|
95
108
|
"""Calcule l’adjoint du laplacien.
|
|
96
109
|
Autrement dit, Lt(x) calcule le produit matriciel L'x.
|
|
97
110
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
111
|
+
Parameters
|
|
112
|
+
----------
|
|
113
|
+
X : (numpy.ndarray)
|
|
114
|
+
signal 1D OU image NON vectorisée 2D
|
|
101
115
|
|
|
102
|
-
Returns
|
|
103
|
-
|
|
116
|
+
Returns
|
|
117
|
+
-------
|
|
118
|
+
: (numpy.ndarray)
|
|
119
|
+
Adjoint du Laplacien de X
|
|
104
120
|
"""
|
|
105
121
|
|
|
106
122
|
if x.ndim == 1:
|
|
@@ -114,18 +130,25 @@ def Lt(x):
|
|
|
114
130
|
return lap
|
|
115
131
|
|
|
116
132
|
def generateDiff3D(vert, faces, dtype):
|
|
117
|
-
"""
|
|
118
|
-
|
|
133
|
+
"""Génère la matrice de différentiation de type DTYPE (ordre 1 ou 2) en 3D
|
|
134
|
+
|
|
135
|
+
Parameters
|
|
136
|
+
----------
|
|
137
|
+
VERT : (numpy.ndarray)
|
|
138
|
+
matrice Nx3 dont la i-ème ligne correspond au vecteur
|
|
139
|
+
de coordonnées (X,Y,Z) du i-ème point du maillage
|
|
119
140
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
FACES (numpy.ndarray) matrice Nx3 dont la i-ème ligne donne les numéros des
|
|
124
|
-
3 points composant un triangle du maillage
|
|
125
|
-
DTYPE(str) 'gradient', 'laplacian'
|
|
141
|
+
FACES : (numpy.ndarray)
|
|
142
|
+
matrice Nx3 dont la i-ème ligne donne les numéros des
|
|
143
|
+
3 points composant un triangle du maillage
|
|
126
144
|
|
|
127
|
-
|
|
128
|
-
|
|
145
|
+
DTYPE : (str)
|
|
146
|
+
'gradient', 'laplacian'
|
|
147
|
+
|
|
148
|
+
Returns
|
|
149
|
+
-------
|
|
150
|
+
: (numpy.ndarray)
|
|
151
|
+
matrice 3D de différentiation de type DTYPE
|
|
129
152
|
"""
|
|
130
153
|
|
|
131
154
|
if dtype == 'gradient':
|
|
@@ -197,16 +220,24 @@ def generateDiff3D(vert, faces, dtype):
|
|
|
197
220
|
def generatePSF(dim,blurtype,kernelSize):
|
|
198
221
|
"""Génère le noyau de convolution d’un flou de dimension DIM, de type BLURTYPE,
|
|
199
222
|
et de taille KERNELSIZE.
|
|
223
|
+
|
|
224
|
+
-> voir les fonctions A(x,h) et At(x,h).
|
|
200
225
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
Returns:
|
|
207
|
-
(numpy.ndarray) Noyau de convolution
|
|
226
|
+
Parameters
|
|
227
|
+
----------
|
|
228
|
+
DIM : (str)
|
|
229
|
+
’1D’ ou ’2D’
|
|
208
230
|
|
|
209
|
-
|
|
231
|
+
BLURTYPE : (str)
|
|
232
|
+
’none’, ’gaussian’ ou ’uniform’
|
|
233
|
+
|
|
234
|
+
KERNELSIZE : (int)
|
|
235
|
+
entier impair
|
|
236
|
+
|
|
237
|
+
Returns
|
|
238
|
+
-------
|
|
239
|
+
: (numpy.ndarray)
|
|
240
|
+
Noyau de convolution
|
|
210
241
|
"""
|
|
211
242
|
|
|
212
243
|
# compute kernel
|
|
@@ -238,13 +269,19 @@ def A(x,psf):
|
|
|
238
269
|
Autrement dit, A(x,h) calcule le produit de convolution h*x, ou de manière équivalente, calcule
|
|
239
270
|
le produit matriciel Hx.
|
|
240
271
|
|
|
241
|
-
Args:
|
|
242
|
-
X (numpy.ndarray) signal 1D
|
|
243
|
-
ou: image non vectorisée 2D
|
|
244
|
-
PSF (numpy.ndarray) doit être générée à partir de la fonction generatePSF
|
|
245
272
|
|
|
246
|
-
|
|
247
|
-
|
|
273
|
+
Parameters
|
|
274
|
+
----------
|
|
275
|
+
X : (numpy.ndarray)
|
|
276
|
+
signal 1D OU image NON vectorisée 2D
|
|
277
|
+
|
|
278
|
+
PSF : (numpy.ndarray)
|
|
279
|
+
doit être générée à partir de la fonction generatePSF
|
|
280
|
+
|
|
281
|
+
Returns
|
|
282
|
+
-------
|
|
283
|
+
: (numpy.ndarray)
|
|
284
|
+
Convolution de X par le noyau PSF
|
|
248
285
|
"""
|
|
249
286
|
|
|
250
287
|
if x.ndim == 1:
|
|
@@ -259,13 +296,18 @@ def At(x,psf):
|
|
|
259
296
|
Autrement dit, A(x,h) calcule le produit de convolution h'*x, ou de manière équivalente, calcule
|
|
260
297
|
le produit matriciel H'x.
|
|
261
298
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
299
|
+
Parameters
|
|
300
|
+
----------
|
|
301
|
+
X : (numpy.ndarray)
|
|
302
|
+
signal 1D OU image NON vectorisée 2D
|
|
266
303
|
|
|
267
|
-
|
|
268
|
-
|
|
304
|
+
PSF : (numpy.ndarray)
|
|
305
|
+
doit être générée à partir de la fonction generatePSF
|
|
306
|
+
|
|
307
|
+
Returns
|
|
308
|
+
-------
|
|
309
|
+
: (numpy.ndarray)
|
|
310
|
+
Correlation de X par le noyau PSF
|
|
269
311
|
"""
|
|
270
312
|
|
|
271
313
|
if x.ndim == 1:
|
|
@@ -283,11 +325,15 @@ def At(x,psf):
|
|
|
283
325
|
def S(x):
|
|
284
326
|
"""Convolue X avec un noyau KER.
|
|
285
327
|
|
|
286
|
-
|
|
287
|
-
|
|
328
|
+
Parameters
|
|
329
|
+
----------
|
|
330
|
+
X : (numpy.ndarray)
|
|
331
|
+
signal 1D OU image NON vectorisée 2D
|
|
288
332
|
|
|
289
|
-
Returns
|
|
290
|
-
|
|
333
|
+
Returns
|
|
334
|
+
-------
|
|
335
|
+
: (numpy.ndarray)
|
|
336
|
+
Convolution de X par le noyau KER
|
|
291
337
|
"""
|
|
292
338
|
|
|
293
339
|
h,w = x.shape
|
|
@@ -307,11 +353,15 @@ def S(x):
|
|
|
307
353
|
def St(x):
|
|
308
354
|
"""Corrèle X avec un noyau KER.
|
|
309
355
|
|
|
310
|
-
|
|
311
|
-
|
|
356
|
+
Parameters
|
|
357
|
+
----------
|
|
358
|
+
X : (numpy.ndarray)
|
|
359
|
+
signal 1D OU image NON vectorisée 2D
|
|
312
360
|
|
|
313
|
-
Returns
|
|
314
|
-
|
|
361
|
+
Returns
|
|
362
|
+
-------
|
|
363
|
+
: (numpy.ndarray)
|
|
364
|
+
Correlation de X par le noyau KER
|
|
315
365
|
"""
|
|
316
366
|
|
|
317
367
|
h,w = x.shape
|
|
@@ -337,13 +387,21 @@ def opNorm(op,opt,dim):
|
|
|
337
387
|
"""Calcule la norme de l'opérateur OP, dont
|
|
338
388
|
l'opérateur transposé est OPT, en dimension DIM
|
|
339
389
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
390
|
+
Parameters
|
|
391
|
+
----------
|
|
392
|
+
OP : (function)
|
|
393
|
+
opérateur direct
|
|
394
|
+
|
|
395
|
+
OPT : (function)
|
|
396
|
+
opérateur adjoint
|
|
397
|
+
|
|
398
|
+
DIM : (str)
|
|
399
|
+
'1D', '2D'
|
|
344
400
|
|
|
345
|
-
Returns
|
|
346
|
-
|
|
401
|
+
Returns
|
|
402
|
+
-------
|
|
403
|
+
: (float)
|
|
404
|
+
norme de l'opérateur OP
|
|
347
405
|
"""
|
|
348
406
|
|
|
349
407
|
def T(x):
|
|
@@ -378,11 +436,15 @@ def opNorm(op,opt,dim):
|
|
|
378
436
|
def matNorm(M):
|
|
379
437
|
"""Calcule la norme de la matrice M
|
|
380
438
|
|
|
381
|
-
|
|
382
|
-
|
|
439
|
+
Parameters
|
|
440
|
+
----------
|
|
441
|
+
M : (numpy.ndarray)
|
|
442
|
+
matrice dont on souhaite calculer la norme
|
|
383
443
|
|
|
384
|
-
Returns
|
|
385
|
-
|
|
444
|
+
Returns
|
|
445
|
+
-------
|
|
446
|
+
: (float)
|
|
447
|
+
norme de la matrice M
|
|
386
448
|
"""
|
|
387
449
|
|
|
388
450
|
def T(x):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: imicpe
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.10
|
|
4
4
|
Summary: Toolbox for Maths,Signal,Image Teaching @ CPE
|
|
5
5
|
Author-email: Marion Foare <marion.foare@cpe.fr>, Eric Van Reeth <eric.vanreeth@cpe.fr>, Arthur Gautheron <arthur.gautheron@cpe.fr>
|
|
6
6
|
License: MIT License
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__="1.0.8.1"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|