1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
/*
* Copyright (c) 2008-2018 the MRtrix3 contributors.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at http://mozilla.org/MPL/2.0/
*
* MRtrix3 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* For more details, see http://www.mrtrix.org/
*/
#include "command.h"
#include "progressbar.h"
#include "datatype.h"
#include "math/rng.h"
#include "image.h"
#include "algo/threaded_loop.h"
using namespace MR;
using namespace App;
void usage ()
{
AUTHOR = "J-Donald Tournier (jdtournier@gmail.com)";
SYNOPSIS = "Generate a test image of random numbers";
ARGUMENTS
+ Argument ("size", "the dimensions of the test data.").type_sequence_int ()
+ Argument ("data", "the output image.").type_image_out ();
OPTIONS
+ Stride::Options
+ DataType::options();
}
void run ()
{
vector<int> dim = argument[0];
Header header;
header.ndim() = dim.size();
for (size_t n = 0; n < dim.size(); ++n) {
header.size(n) = dim[n];
header.spacing(n) = 1.0f;
}
header.datatype() = DataType::from_command_line (DataType::Float32);
Stride::set_from_command_line (header, Stride::contiguous_along_spatial_axes (header));
auto image = Header::create (argument[1], header).get_image<float>();
struct fill { NOMEMALIGN
Math::RNG rng;
std::normal_distribution<float> normal;
void operator() (decltype(image)& v) { v.value() = normal(rng); }
};
ThreadedLoop ("generating random data...", image).run (fill(), image);
}
|