@@ -111,7 +111,7 @@ template <class MASKType, class B0Type, class DKTType, class PredictType>
111111class Processor { MEMALIGN(Processor)
112112 public:
113113 Processor (const Eigen::MatrixXd& b, const bool ols, const int iter,
114- MASKType* mask_image, B0Type* b0_image, DKTType* dkt_image, PredictType* predict_image) :
114+ const MASKType& mask_image, const B0Type& b0_image, const DKTType& dkt_image, const PredictType& predict_image) :
115115 mask_image (mask_image),
116116 b0_image (b0_image),
117117 dkt_image (dkt_image),
@@ -128,9 +128,9 @@ class Processor { MEMALIGN(Processor)
128128 template <class DWIType , class DTType >
129129 void operator () (DWIType& dwi_image, DTType& dt_image)
130130 {
131- if (mask_image) {
132- assign_pos_of (dwi_image, 0 , 3 ).to (* mask_image);
133- if (!mask_image-> value ())
131+ if (mask_image. valid () ) {
132+ assign_pos_of (dwi_image, 0 , 3 ).to (mask_image);
133+ if (!mask_image. value ())
134134 return ;
135135 }
136136
@@ -157,34 +157,34 @@ class Processor { MEMALIGN(Processor)
157157 dt_image.value () = p[dt_image.index (3 )];
158158 }
159159
160- if (b0_image) {
161- assign_pos_of (dwi_image, 0 , 3 ).to (* b0_image);
162- b0_image-> value () = exp (p[6 ]);
160+ if (b0_image. valid () ) {
161+ assign_pos_of (dwi_image, 0 , 3 ).to (b0_image);
162+ b0_image. value () = exp (p[6 ]);
163163 }
164164
165- if (dkt_image) {
166- assign_pos_of (dwi_image, 0 , 3 ).to (* dkt_image);
165+ if (dkt_image. valid () ) {
166+ assign_pos_of (dwi_image, 0 , 3 ).to (dkt_image);
167167 double adc_sq = (p[0 ]+p[1 ]+p[2 ])*(p[0 ]+p[1 ]+p[2 ])/9.0 ;
168- for (auto l = Loop (3 )(* dkt_image); l; ++l) {
169- dkt_image-> value () = p[dkt_image-> index (3 )+7 ]/adc_sq;
168+ for (auto l = Loop (3 )(dkt_image); l; ++l) {
169+ dkt_image. value () = p[dkt_image. index (3 )+7 ]/adc_sq;
170170 }
171171 }
172172
173- if (predict_image) {
174- assign_pos_of (dwi_image, 0 , 3 ).to (* predict_image);
173+ if (predict_image. valid () ) {
174+ assign_pos_of (dwi_image, 0 , 3 ).to (predict_image);
175175 dwi = (b*p).array ().exp ();
176- for (auto l = Loop (3 )(* predict_image); l; ++l) {
177- predict_image-> value () = dwi[predict_image-> index (3 )];
176+ for (auto l = Loop (3 )(predict_image); l; ++l) {
177+ predict_image. value () = dwi[predict_image. index (3 )];
178178 }
179179 }
180180
181181 }
182182
183183 private:
184- copy_ptr< MASKType> mask_image;
185- copy_ptr< B0Type> b0_image;
186- copy_ptr< DKTType> dkt_image;
187- copy_ptr< PredictType> predict_image;
184+ MASKType mask_image;
185+ B0Type b0_image;
186+ DKTType dkt_image;
187+ PredictType predict_image;
188188 Eigen::VectorXd dwi;
189189 Eigen::VectorXd p;
190190 Eigen::VectorXd w;
@@ -196,7 +196,7 @@ class Processor { MEMALIGN(Processor)
196196};
197197
198198template <class MASKType , class B0Type , class DKTType , class PredictType >
199- inline Processor<MASKType, B0Type, DKTType, PredictType> processor (const Eigen::MatrixXd& b, const bool ols, const int iter, MASKType* mask_image, B0Type* b0_image, DKTType* dkt_image, PredictType* predict_image) {
199+ inline Processor<MASKType, B0Type, DKTType, PredictType> processor (const Eigen::MatrixXd& b, const bool ols, const int iter, const MASKType& mask_image, const B0Type& b0_image, const DKTType& dkt_image, const PredictType& predict_image) {
200200 return { b, ols, iter, mask_image, b0_image, dkt_image, predict_image };
201201}
202202
@@ -205,11 +205,11 @@ void run ()
205205 auto dwi = Header::open (argument[0 ]).get_image <value_type>();
206206 auto grad = DWI::get_DW_scheme (dwi);
207207
208- Image<bool >* mask = nullptr ;
208+ Image<bool > mask;
209209 auto opt = get_options (" mask" );
210210 if (opt.size ()) {
211- mask = new Image<bool > (Image< bool > ::open (opt[0 ][0 ]) );
212- check_dimensions (dwi, * mask, 0 , 3 );
211+ mask = Image<bool >::open (opt[0 ][0 ]);
212+ check_dimensions (dwi, mask, 0 , 3 );
213213 }
214214
215215 bool ols = get_options (" ols" ).size ();
@@ -223,27 +223,27 @@ void run ()
223223 DWI::stash_DW_scheme (header, grad);
224224 PhaseEncoding::clear_scheme (header);
225225
226- Image<value_type>* predict = nullptr ;
226+ Image<value_type> predict;
227227 opt = get_options (" predicted_signal" );
228228 if (opt.size ())
229- predict = new Image<value_type> (Image<value_type> ::create (opt[0 ][0 ], header) );
229+ predict = Image<value_type>::create (opt[0 ][0 ], header);
230230
231231 header.size (3 ) = 6 ;
232232 auto dt = Image<value_type>::create (argument[1 ], header);
233233
234- Image<value_type>* b0 = nullptr ;
234+ Image<value_type> b0;
235235 opt = get_options (" b0" );
236236 if (opt.size ()) {
237237 header.ndim () = 3 ;
238- b0 = new Image<value_type> (Image<value_type> ::create (opt[0 ][0 ], header) );
238+ b0 = Image<value_type>::create (opt[0 ][0 ], header);
239239 }
240240
241- Image<value_type>* dkt = nullptr ;
241+ Image<value_type> dkt;
242242 opt = get_options (" dkt" );
243243 if (opt.size ()) {
244244 header.ndim () = 4 ;
245245 header.size (3 ) = 15 ;
246- dkt = new Image<value_type> (Image<value_type> ::create (opt[0 ][0 ], header) );
246+ dkt = Image<value_type>::create (opt[0 ][0 ], header);
247247 }
248248
249249 Eigen::MatrixXd b = -DWI::grad2bmatrix<double > (grad, opt.size ()>0 );
0 commit comments