def select_threshold(static, moving): pca_moving = pca_transform_norm(static, moving, 20) con_static = np.concatenate(static) con_moving = np.concatenate(moving) con_pca_moving = np.concatenate(pca_moving) mean_m = np.mean(np.concatenate(moving), axis=0) mean_s = np.mean(np.concatenate(static), axis=0) moving_center = [i - mean_m + mean_s for i in moving] moving_center = np.concatenate(moving_center) tree = KDTree(moving_center) dist_before_PCA_centerd = np.hstack(tree.query(con_static, k=1)[0]) tree = KDTree(con_moving) dist_before_PCA = np.hstack(tree.query(con_static, k=1)[0]) tree = KDTree(con_pca_moving) dist_after_PCA = np.hstack(tree.query(con_static, k=1)[0]) plt.hist(dist_before_PCA_centerd, bins='auto') plt.title("Distance before PCA - Centered (Moving is base)") plt.ylabel("Frequncy") plt.xlabel("Distance") plt.savefig('../pics/dist_before_PCA_centerd.png', dpi=600) plt.close() # plt.show() plt.hist(dist_before_PCA, bins='auto') plt.title("Distance before PCA (Moving is base)") plt.ylabel("Frequncy") plt.xlabel("Distance") plt.savefig('../pics/dist_before_PCA.png', dpi=600) plt.close() # plt.show() plt.hist(dist_after_PCA, bins='auto') plt.title("Distance After PCA (Moving is base) - distance < 20") plt.ylabel("Frequncy") plt.xlabel("Distance") plt.savefig('../pics/dist_after_PCA3.png', dpi=600) plt.close() # plt.show() costs = np.array(ut.costs) / 1000 plt.plot(costs) plt.title("Cost valuse during optimization") plt.ylabel("Costs (k)") plt.xlabel("Number of evaluations") plt.savefig('pics/cost.png', dpi=600) plt.close()
import numpy as np from sklearn.neighbors import KDTree import matplotlib.pyplot as plt from dipy.tracking.streamline import transform_streamlines from src.tractography.io import read_ply from src.tractography.Utils import pca_transform_norm, flip from src.tractography.registration import register from src.tractography.viz import draw_bundles static = read_ply('data/197348/m_ex_atr-left_shore.ply') moving = read_ply('data/197348/m_ex_atr-right_shore.ply') ''' Apply PCA ''' pre_moving = pca_transform_norm(static, moving, best=True) draw_bundles([pre_moving, static], [[0, 0, 1], [1, 0, 0]]) ''' Flip ''' ''' pre_moving = flip(moving,x=-1) draw_bundles([pre_moving,static],[[0,0,1],[1,0,0]]) ''' con_static = np.concatenate(static) con_moving = np.concatenate(pre_moving) start = time() new_moving = register(static, pre_moving) end = time() kdtree = KDTree(con_static)
from sklearn.neighbors import KDTree from dipy.core.optimize import Optimizer from dipy.tracking.streamline import transform_streamlines from dipy.align.streamlinear import compose_matrix44 import matplotlib.pyplot as plt from src.tractography.Utils import pca_transform_norm, distance_pc from src.tractography.io import read_ply from src.tractography.viz import draw_bundles static = read_ply('data/197348/m_ex_atr-left_shore.ply') moving = read_ply('data/197348/m_ex_atr-right_shore.ply') pca_moving = pca_transform_norm(static, moving) max_range = 46 x0 = [0, 0, 0, 0, 0, 0, 1] options = { 'maxcor': 10, 'ftol': 1e-7, 'gtol': 1e-5, 'eps': 1e-8, 'maxiter': 1000 } start = time() m = Optimizer(distance_pc, x0, args=(static, pca_moving, 1, 50),