00001
#ifndef DEF_deform_prototypes
00002
#define DEF_deform_prototypes
00003
00004
public void deform_lines(
00005
lines_struct *lines,
00006
deform_struct *deform_parms );
00007
00008
public void deform_lines_one_iteration(
00009
lines_struct *lines,
00010
deform_struct *deform_parms,
00011
int iteration );
00012
00013
public void get_line_equilibrium_point(
00014
lines_struct *lines,
00015
int axis,
00016
int point_index,
00017
int neighbours[],
00018 Real curvature_factors[],
00019 Real max_search_distance,
00020
int degrees_continuity,
00021 Volume volume,
00022 Volume label_volume,
00023
boundary_definition_struct *boundary_def,
00024
deformation_model_struct *deformation_model,
00025 Point *equilibrium_point,
00026 Point *boundary_point );
00027
00028
public int find_axial_plane(
00029
lines_struct *lines );
00030
00031
public void deform_polygons(
00032
polygons_struct *polygons,
00033
deform_struct *deform_parms );
00034
00035
public void deform_polygons_one_iteration(
00036
polygons_struct *polygons,
00037
deform_struct *deform_parms,
00038
int iteration );
00039
00040
public BOOLEAN
find_boundary_in_direction(
00041 Volume volume,
00042 Volume label_volume,
00043
voxel_coef_struct *lookup,
00044
bitlist_3d_struct *done_bits,
00045
bitlist_3d_struct *surface_bits,
00046 Real model_dist,
00047 Point *ray_origin,
00048 Vector *unit_pos_dir,
00049 Vector *unit_neg_dir,
00050 Real max_outwards_search_distance,
00051 Real max_inwards_search_distance,
00052
int degrees_continuity,
00053
boundary_definition_struct *boundary_def,
00054 Real *boundary_distance );
00055
00056
public int find_voxel_line_polynomial(
00057 Real coefs[],
00058
int degrees_continuity,
00059
int x,
00060
int y,
00061
int z,
00062 Real line_origin[],
00063 Real line_direction[],
00064 Real line_poly[] );
00065
00066
public int find_voxel_line_value_intersection(
00067 Real coefs[],
00068
int degrees_continuity,
00069
int x,
00070
int y,
00071
int z,
00072 Real line_origin[],
00073 Real line_direction[],
00074 Real t_min,
00075 Real t_max,
00076 Real isovalue,
00077 Real distances[3] );
00078
00079
public void initialize_deformation_model(
00080
deformation_model_struct *model );
00081
00082
public void print_deformation_model(
00083
deformation_model_struct *deformation_model );
00084
00085
public Status
add_deformation_model(
00086
deformation_model_struct *deformation_model,
00087
int up_to_n_points,
00088 Real model_weight,
00089
char model_filename[],
00090 Real min_curvature_offset,
00091 Real max_curvature_offset );
00092
00093
public void delete_deformation_model(
00094
deformation_model_struct *model );
00095
00096
public Status
input_original_positions(
00097
deformation_model_struct *deform_model,
00098
char position_filename[],
00099 Real max_position_offset,
00100
int n_deforming_points );
00101
00102
public BOOLEAN
check_correct_deformation_polygons(
00103
polygons_struct *polygons,
00104
deformation_model_struct *model );
00105
00106
public BOOLEAN
check_correct_deformation_lines(
00107
lines_struct *lines,
00108
deformation_model_struct *model );
00109
00110
public deform_model_struct *
find_relevent_model(
00111
deformation_model_struct *model,
00112
int point_index );
00113
00114
public void get_model_shape_point(
00115 Point *origin,
00116 Vector *pos_model_dir,
00117 Vector *neg_model_dir,
00118 Real dist,
00119 Point *point );
00120
00121
public void compute_equilibrium_point(
00122
int point_index,
00123 BOOLEAN boundary_exists,
00124 Real boundary_dist,
00125 Real base_length,
00126 Real model_dist,
00127 Vector *pos_model_dir,
00128 Vector *neg_model_dir,
00129 Point *centroid,
00130
deformation_model_struct *deformation_model,
00131 Point *equilibrium_point );
00132
00133
public void compute_model_dirs(
00134 Point *centroid,
00135 Vector *normal,
00136 Real base_length,
00137 Point *model_point,
00138 Real *model_dist,
00139 Point *search_origin,
00140 Vector *pos_model_dir,
00141 Vector *neg_model_dir );
00142
00143
public void get_model_point(
00144
deformation_model_struct *deformation_model,
00145 Point points[],
00146
int point_index,
00147
int n_neighbours,
00148
int neighbours[],
00149 Real curvatures[],
00150 Point *centroid,
00151 Vector *normal,
00152 Real base_length,
00153 Point *model_point );
00154
00155
public void get_neighbours_of_line_vertex(
00156
lines_struct *lines,
00157
int vertex_index,
00158
int neighbours[2] );
00159
00160
public BOOLEAN
deformation_model_includes_average(
00161
deformation_model_struct *model );
00162
00163
public Real
compute_line_curvature(
00164
lines_struct *lines,
00165
int axis,
00166
int point_index,
00167
int prev_point_index,
00168
int next_point_index );
00169
00170
public Real
deform_point(
00171
int point_index,
00172 Point points[],
00173 Point *equilibrium_point,
00174 Real fractional_step,
00175 Real max_step,
00176 BOOLEAN position_constrained,
00177 Real max_position_offset,
00178 Point original_positions[],
00179 Point *new_point );
00180
00181
public void compute_line_centroid_and_normal(
00182
lines_struct *lines,
00183
int axis,
00184
int prev_point_index,
00185
int next_point_index,
00186 Point *centroid,
00187 Vector *normal,
00188 Real *base_length );
00189
00190
public int get_subsampled_neighbours_of_point(
00191
deformation_model_struct *deformation_model,
00192
polygons_struct *polygons,
00193
int poly,
00194
int vertex_index,
00195
int neighbours[],
00196
int max_neighbours,
00197 BOOLEAN *interior_flag );
00198
00199
public BOOLEAN
is_point_inside_surface(
00200 Volume volume,
00201 Volume label_volume,
00202
int continuity,
00203 Real voxel[],
00204 Vector *direction,
00205
boundary_definition_struct *boundary_def );
00206
00207
public void get_centre_of_cube(
00208 Point *cube,
00209
int sizes[3],
00210 Point *centre );
00211
00212
public BOOLEAN
contains_value(
00213 Real values[2][2][2],
00214
int sizes[3] );
00215
00216
public BOOLEAN
cube_is_small_enough(
00217 Point cube[2],
00218
int sizes[3],
00219 Real min_cube_size );
00220
00221
public void initialize_deform_stats(
00222
deform_stats *stats );
00223
00224
public void record_error_in_deform_stats(
00225
deform_stats *stats,
00226 Real error );
00227
00228
public void print_deform_stats(
00229
deform_stats *stats,
00230
int n_points );
00231
00232
public BOOLEAN
get_max_point_cube_distance(
00233 Point cube[2],
00234
int sizes[3],
00235 Point *point,
00236 Real *distance );
00237
00238
public void initialize_deformation_parameters(
00239
deform_struct *deform );
00240
00241
public void delete_deformation_parameters(
00242
deform_struct *deform );
00243
00244
public void set_boundary_definition(
00245
boundary_definition_struct *boundary_def,
00246 Real min_value,
00247 Real max_value,
00248 Real grad_threshold,
00249 Real angle,
00250
char direction,
00251 Real tolerance );
00252
00253
public void initialize_lookup_volume_coeficients(
00254
voxel_coef_struct *lookup );
00255
00256
public void lookup_volume_coeficients(
00257
voxel_coef_struct *lookup,
00258 Volume volume,
00259
int degrees_continuity,
00260
int x,
00261
int y,
00262
int z,
00263 Real c[] );
00264
00265
public void delete_lookup_volume_coeficients(
00266
voxel_coef_struct *lookup );
00267
#endif