Initial public release.
[OpenCLIPER] / include / OpenCLIPER / processes / SimpleMRIRecon.hpp
1 /* Copyright (C) 2018 Federico Simmross Wattenberg,
2  *                    Manuel Rodríguez Cayetano,
3  *                    Javier Royuela del Val,
4  *                    Elena Martín González,
5  *                    Elisa Moya Sáez,
6  *                    Marcos Martín Fernández and
7  *                    Carlos Alberola López
8  *
9  * This file is part of OpenCLIPER.
10  *
11  * OpenCLIPER is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; version 3 of the License.
14  *
15  * OpenCLIPER is distributed in the hope that it will be useful, but
16  * WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18  * General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with OpenCLIPER; If not, see <http://www.gnu.org/licenses/>.
22  *
23  *
24  *  Contact:
25  *
26  *  Federico Simmross Wattenberg
27  *  E.T.S.I. Telecomunicación
28  *  Universidad de Valladolid
29  *  Paseo de Belén 15
30  *  47011 Valladolid, Spain.
31  *  fedsim@tel.uva.es
32  */
33 #ifndef INCLUDE_OPENCLIP_SIMPLEMRIRECON_HPP_
34 #define INCLUDE_OPENCLIP_SIMPLEMRIRECON_HPP_
35
36 #include <OpenCLIPER/CLapp.hpp>
37 #include <OpenCLIPER/XData.hpp>
38 #include <OpenCLIPER/KData.hpp>
39 #include <OpenCLIPER/Process.hpp>
40 #include <OpenCLIPER/processes/FFT.hpp>
41 #include <OpenCLIPER/processes/ComplexElementProd.hpp>
42 #include <OpenCLIPER/processes/XImageSum.hpp>
43 namespace OpenCLIPER {
44
45 /// @brief Class that makes a simple MRI reconstruction of a group of k-images captured by several coils.
46 class SimpleMRIRecon : public Process {
47     public:
48         
49         /**
50          * @brief Default constructor.
51          * 
52          * It calls the superclass constructor.
53          * 
54          */
55         SimpleMRIRecon(std::shared_ptr<OpenCLIPER::CLapp> pCLapp): Process(pCLapp) {};
56         ~SimpleMRIRecon();
57         void init();
58         void launch(ProfileParameters profileParameters);
59
60     private:
61         /// Pointer to Process subclass in charge of obtaining the inverse FFT of a group of k-images
62         std::unique_ptr<Process> pProcInvFFT;
63         /// Pointer to Process subclass in charge of multiplying every x-image by the sensitivity map of the coil used to capture it
64         std::unique_ptr<Process> pProcSensMapProd;
65         /// Pointer to Process subclass in charge of adding images captured from all the coils at the same time frame
66         std::unique_ptr<Process> pProcAddXImages;
67 };
68
69 } //namespace OpenCLIPER
70
71 #endif /* INCLUDE_SIMPLEMRIRECON_HPP_ */