AliYounis03 commited on
Commit
533f162
·
verified ·
1 Parent(s): 05ef00c

Smoothing Endograft

Browse files
Files changed (1) hide show
  1. endograft_generation.py +13 -1
endograft_generation.py CHANGED
@@ -1,6 +1,7 @@
1
  import vtk
2
  import numpy as np
3
  import tempfile
 
4
 
5
  def arc_length(centerline):
6
  arc_lengths = np.zeros(len(centerline))
@@ -66,6 +67,15 @@ def project_point_to_surface(point, locator, polydata):
66
 
67
  return np.array(closest), normal
68
 
 
 
 
 
 
 
 
 
 
69
  def sample_centerline_by_distance(centerline, arc_lengths, frames, query_distance):
70
 
71
  idx = np.searchsorted(arc_lengths, query_distance)
@@ -294,6 +304,8 @@ def merge_components(proximal, extension, distal):
294
  return clean
295
 
296
  def create_endograft(centerline, proximal_diameter, distal_diameter, proximal_length, extension_length, distal_length, proximal_gap, extension_gap, distal_gap, proximal_extension_overlap, distal_extension_overlap, proximal_distal_overlap, include_combined=False, phase_angle=0.0):
 
 
297
  frames = compute_parallel_frames(centerline)
298
 
299
  # PROXIMAL COMPONENT
@@ -303,7 +315,7 @@ def create_endograft(centerline, proximal_diameter, distal_diameter, proximal_le
303
 
304
  proximal_stents = create_stent_component(centerline, frames, proximal_start, proximal_length, proximal_diameter, proximal_fabric, peak_spacing=proximal_gap, component_type="proximal", phase_angle=phase_angle)
305
 
306
- # # EXTENSION COMPONENT
307
  # if extension_length > 97:
308
  # prox_extension_overlap = 3*peak_to_peak + 2*extension_gap
309
  # else:
 
1
  import vtk
2
  import numpy as np
3
  import tempfile
4
+ from scipy.interpolate import splprep, splev
5
 
6
  def arc_length(centerline):
7
  arc_lengths = np.zeros(len(centerline))
 
67
 
68
  return np.array(closest), normal
69
 
70
+ def smooth_centerline(centerline, smoothing=0.5, samples=500):
71
+
72
+ centerline = np.asarray(centerline)
73
+ spline, _ = splprep(centerline.T, s=smoothing, k=3)
74
+ sample_positions = np.linspace(0, 1, samples)
75
+ smoothed_centerline = splev(sample_positions, spline)
76
+
77
+ return np.vstack(smoothed_centerline).T
78
+
79
  def sample_centerline_by_distance(centerline, arc_lengths, frames, query_distance):
80
 
81
  idx = np.searchsorted(arc_lengths, query_distance)
 
304
  return clean
305
 
306
  def create_endograft(centerline, proximal_diameter, distal_diameter, proximal_length, extension_length, distal_length, proximal_gap, extension_gap, distal_gap, proximal_extension_overlap, distal_extension_overlap, proximal_distal_overlap, include_combined=False, phase_angle=0.0):
307
+
308
+ centerline = smooth_centerline(centerline, smoothing=5, samples=500)
309
  frames = compute_parallel_frames(centerline)
310
 
311
  # PROXIMAL COMPONENT
 
315
 
316
  proximal_stents = create_stent_component(centerline, frames, proximal_start, proximal_length, proximal_diameter, proximal_fabric, peak_spacing=proximal_gap, component_type="proximal", phase_angle=phase_angle)
317
 
318
+ # EXTENSION COMPONENT
319
  # if extension_length > 97:
320
  # prox_extension_overlap = 3*peak_to_peak + 2*extension_gap
321
  # else: