Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import numpy as np_
import skimage.measure as ms_
import sklearn.decomposition as dc_
def Soma_parameters(image, final_soma_label):
#
(w, n, m) = image.shape
soma_label = final_soma_label
soma_p1 = []
soma_p2 = []
soma_p3 = []
soma_p4 = []
soma_p5 = []
area = ms_.regionprops(soma_label)
# area paramter
for region in area:
soma_p1.append(region.centroid)
soma_p2.append(region.area)
soma_p3.append(region.coords)
soma_p4.append(region.moments)
# compute eccentricity using PCA
pca = dc_.PCA()
for l in np_.unique(soma_label):
if l != 0:
region = np_.zeros([w, n, m])
loc = np_.where(soma_label == l)
region[loc] = image[loc]
loc = np_.asarray(loc)
# Estimation, calcul des composantes principales for each soma
C = pca.fit(loc).transform(loc)
egv1 = (C[0][:]).max()
egv2 = (C[1][:]).max()
egv3 = (C[2][:]).max()
egv_vect = np_.array([egv1, egv2, egv3])
egv_max = egv_vect.max()
ration1 = egv1 / egv_max
ration2 = egv2 / egv_max
ration3 = egv3 / egv_max
loc = np_.where(egv_vect == egv_max)
vect_ration = np_.array([ration1, ration2, ration3])
ration = np_.delete(vect_ration, loc)
soma_p5.append(ration)
soma_p1 = np_.asarray(soma_p1)
soma_p2 = np_.asarray(soma_p2)
soma_p3 = np_.asarray(soma_p3)
soma_p4 = np_.asarray(soma_p4)
soma_p5 = np_.asarray(soma_p5)
parameters_soma = np_.array(
[soma_p1, soma_p2, soma_p3, soma_p4, soma_p5[:, 0], soma_p5[:, 1]]
)
parameters_soma = parameters_soma.T
return parameters_soma