void estimate_Rt(Voxel& voxel) { std::vector<double> inner_angles(half_odf_size); { unsigned int max_index = std::max_element(voxel.response_function.begin(),voxel.response_function.end())-voxel.response_function.begin(); for (unsigned int index = 0; index < inner_angles.size(); ++index) inner_angles[index] = inner_angle(voxel.ti.vertices_cos(index,max_index)); } Rt.resize(half_odf_size*half_odf_size); for (unsigned int i = 0,index = 0; i < half_odf_size; ++i) { for (unsigned int j = 0; j < half_odf_size; ++j,++index) Rt[index] = kernel_regression(voxel.response_function,inner_angles,inner_angle(voxel.ti.vertices_cos(i,j)),9.0/180.0*M_PI); } oRt = Rt; for (unsigned int i = 0; i < half_odf_size; ++i) { normalize_vector(Rt.begin()+i*half_odf_size,Rt.begin()+(i+1)*half_odf_size); std::for_each(oRt.begin()+i*half_odf_size,oRt.begin()+(i+1)*half_odf_size, boost::lambda::_1 /= *std::max_element(oRt.begin()+i*half_odf_size,oRt.begin()+(i+1)*half_odf_size)); } }
void estimate_Rt(Voxel& voxel) { std::vector<double> inner_angles(half_odf_size); { unsigned int max_index = std::max_element(voxel.response_function.begin(),voxel.response_function.end())-voxel.response_function.begin(); for (unsigned int index = 0; index < inner_angles.size(); ++index) inner_angles[index] = inner_angle(voxel.ti.vertices_cos(index,max_index)); } Rt.resize(half_odf_size*half_odf_size); for (unsigned int i = 0,index = 0; i < half_odf_size; ++i) for (unsigned int j = 0; j < half_odf_size; ++j,++index) Rt[index] = kernel_regression(voxel.response_function,inner_angles,inner_angle(voxel.ti.vertices_cos(i,j)),9.0/180.0*M_PI); }