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