本文整理汇总了C++中math::Vector::save方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector::save方法的具体用法?C++ Vector::save怎么用?C++ Vector::save使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类math::Vector
的用法示例。
在下文中一共展示了Vector::save方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: run
//.........这里部分代码省略.........
++iter;
{
MR::LogLevelLatch latch (0);
shared.set_response (response);
shared.init();
}
++progress;
if (reset_mask) {
if (mask_path.size()) {
Image::Buffer<bool> in (mask_path);
auto v_in = in.voxel();
Image::copy (v_in, v_mask, 0, 3);
} else {
for (auto l = Image::LoopInOrder(v_mask) (v_mask); l; ++l)
v_mask.value() = true;
}
++progress;
}
std::vector<FODSegResult> seg_results;
{
FODCalcAndSeg processor (dwi, mask, shared, directions, lmax, seg_results);
Image::ThreadedLoop loop (mask, 0, 3);
loop.run (processor);
}
++progress;
if (!first_pass)
thresholds.update (seg_results, dispersion_multiplier, integral_multiplier, iter);
++progress;
Response output (lmax);
mask.zero();
{
SFSelector selector (seg_results, thresholds, mask);
ResponseEstimator estimator (dwi, shared, lmax, output);
Thread::run_queue (selector, FODSegResult(), Thread::multi (estimator));
}
if (!output.get_count())
throw Exception ("Cannot estimate response function; all voxels have been excluded from selection");
const Math::Vector<float> new_response = output.result();
const size_t sf_count = output.get_count();
++progress;
if (App::log_level >= 2)
std::cerr << "\n";
INFO ("Iteration " + str(iter) + ", " + str(sf_count) + " SF voxels, new response function: [" + str(new_response, 2) + "]");
if (sf_count == prev_sf_count) {
INFO ("terminating due to convergence of single-fibre voxel selection");
iterate = false;
}
if (iter == max_iters) {
INFO ("terminating due to completing maximum number of iterations");
iterate = false;
}
bool rf_changed = false;
for (size_t i = 0; i != response.size(); ++i) {
if (std::abs ((new_response[i] - response[i]) / new_response[i]) > max_change)
rf_changed = true;
}
if (!rf_changed) {
INFO ("terminating due to negligible changes in the response function coefficients");
iterate = false;
}
if (!iterate && first_pass) {
iterate = true;
first_pass = false;
INFO ("commencing second-pass of response function estimation");
total_iter = iter;
iter = 0;
}
response = new_response;
prev_sf_count = sf_count;
//v_mask.save ("mask_pass_" + str(first_pass?1:2) + "_iter_" + str(iter) + ".mif");
} while (iterate);
total_iter += iter;
}
CONSOLE ("final response function: [" + str(response, 2) + "] (reached after " + str(total_iter) + " iterations using " + str(prev_sf_count) + " voxels)");
response.save (argument[1]);
opt = get_options ("sf");
if (opt.size())
v_mask.save (std::string (opt[0][0]));
}