@@ -38,7 +38,7 @@ Default: Piece-wise constant reconstruction
3838#include " data_structures/APR/particles/ParticleData.hpp"
3939#include " io/APRFile.hpp"
4040#include " numerics/APRReconstruction.hpp"
41-
41+ # include < random >
4242
4343struct cmdLineOptions {
4444 std::string output = " output" ;
@@ -106,6 +106,23 @@ static cmdLineOptions read_command_line_options(int argc, char **argv) {
106106
107107 return result;
108108}
109+ template <typename T>
110+ void add_random_to_img (PixelData<T>& img,float sd){
111+
112+ std::default_random_engine generator;
113+ std::normal_distribution<float > distribution (0.0 ,sd);
114+
115+ size_t size = (size_t )img.y_num * img.x_num * img.z_num ;
116+ size_t i = 0 ;
117+ #ifdef HAVE_OPENMP
118+ #pragma omp parallel for schedule(static) private(i)
119+ #endif
120+ for (i=0 ; i < size; i++){
121+ float number = distribution (generator);
122+ img.mesh [i] += number;
123+ }
124+
125+ }
109126
110127int main (int argc, char **argv) {
111128 // INPUT PARSING
@@ -126,7 +143,7 @@ int main(int argc, char **argv) {
126143 aprFile.read_apr (apr);
127144
128145 ParticleData<uint16_t >parts;
129- aprFile.read_particles (apr," particle_intensities " ,parts);
146+ aprFile.read_particles (apr," particles " ,parts);
130147
131148 aprFile.close ();
132149 apr.name = options.output ;
@@ -137,19 +154,25 @@ int main(int argc, char **argv) {
137154
138155 if (options.output_pc_recon ) {
139156 // create mesh data structure for reconstruction
157+ bool add_random_gitter = true ;
158+
140159 PixelData<uint16_t > recon_pc;
141160
142161 timer.start_timer (" pc interp" );
143162 // perform piece-wise constant interpolation
144163 APRReconstruction::interp_img (apr,recon_pc, parts);
145164 timer.stop_timer ();
146165
166+ if (add_random_gitter){
167+ add_random_to_img (recon_pc,1 .0f );
168+ }
169+
147170 float elapsed_seconds = timer.t2 - timer.t1 ;
148171 std::cout << " PC recon "
149172 << (recon_pc.x_num * recon_pc.y_num * recon_pc.z_num * 2 ) / (elapsed_seconds * 1000000 .0f )
150173 << " MB per second" << std::endl;
151174
152- // write output as tiff
175+ // write output as tiff
153176 TiffUtils::saveMeshAsTiff (options.directory + apr.name + " _pc.tif" , recon_pc);
154177 }
155178 }
0 commit comments