@@ -54,59 +54,66 @@ bool denoise_example(cmdLineOptionsDenoise& options){
5454
5555 timer.verbose_flag = true ;
5656
57- // APR datastructure
57+ // APR data structure
5858 APR apr;
59+ ParticleData<uint16_t >parts;
5960
61+ // read APR and particles from file
6062 timer.start_timer (" read apr" );
61- // read file
6263 APRFile aprFile;
6364 aprFile.open (file_name," READ" );
6465 aprFile.read_apr (apr);
65-
66- ParticleData<float >parts;
6766 aprFile.read_particles (apr,parts); // default read, will take the first particles added to the file
68-
6967 aprFile.close ();
7068 timer.stop_timer ();
7169
72- APRStencils aprStencils;
73-
74- auto it = apr.iterator ();
75-
76- aprStencils.dim = it.number_dimensions (); // get the dimension from the file.
77-
78- PixelData<float > recon_pc;
79-
70+ // reconstruct noisy input image by piecewise constant interpolation
8071 timer.start_timer (" pc interp" );
81- // perform piece-wise constant interpolation
72+ PixelData< uint16_t > recon_pc;
8273 APRReconstruction::interp_img (apr,recon_pc, parts);
8374 timer.stop_timer ();
8475
76+ // save reconstructed input as TIFF
8577 std::string image_file_name = options.directory + apr.name + " _org.tif" ;
8678 TiffUtils::saveMeshAsTiffUint16 (image_file_name, recon_pc,false );
8779
88- // load in an APR
89- APRDenoise aprDenoise ;
80+ // / Start of APR denoising
81+ timer. start_timer ( " train APR denoise " ) ;
9082
83+ // init denoising stencils
84+ APRStencils aprStencils;
85+ auto it = apr.iterator ();
86+ aprStencils.dim = it.number_dimensions (); // get the dimension from the file.
87+
88+ // learn stencil weights
89+ APRDenoise aprDenoise;
9190 aprDenoise.train_denoise (apr,parts,aprStencils);
91+ timer.stop_timer ();
92+
9293
93- ParticleData<float > parts_denoised;
94+ // apply denoising stencils
95+ timer.start_timer (" apply APR denoise" );
96+ ParticleData<uint16> parts_denoised;
9497 aprDenoise.apply_denoise (apr,parts,parts_denoised,aprStencils);
98+ timer.stop_timer ();
9599
100+ // reconstruct image from denoised particles by piecewise constant interpolation
96101 timer.start_timer (" pc interp" );
97- // perform piece-wise constant interpolation
98102 APRReconstruction::interp_img (apr,recon_pc, parts_denoised);
99103 timer.stop_timer ();
100104
105+ // save denosied image as TIFF
101106 image_file_name = options.directory + apr.name + " _denoised.tif" ;
102107 TiffUtils::saveMeshAsTiff (image_file_name, recon_pc,false );
103108
109+ // write APR and denoised particles to file
110+ timer.start_timer (" write denoised APR to file" );
104111 file_name = options.directory + options.output ;
105-
106112 aprFile.open (file_name," WRITE" );
107113 aprFile.write_apr (apr);
108114 aprFile.write_particles (" particles" ,parts_denoised);
109115 aprFile.close ();
116+ timer.stop_timer ();
110117
111118 return true ;
112119}
0 commit comments