예제 #1
0
        public Projector(Image data, int oversampling, int projdim = 2)
        {
            Dims         = data.Dims;
            Oversampling = oversampling;

            int Oversampled = 2 * (oversampling * (Dims.X / 2) + 1) + 1;

            DimsOversampled = new int3(Oversampled, Oversampled, Oversampled);

            float[] Continuous  = data.GetHostContinuousCopy();
            float[] Initialized = new float[(DimsOversampled.X / 2 + 1) * DimsOversampled.Y * DimsOversampled.Z * 2];

            lock (Image.FFT_CPU_Sync)
                CPU.InitProjector(Dims, Oversampling, Continuous, Initialized, projdim);

            float2[] Initialized2 = Helper.FromInterleaved2(Initialized);
            Data = new Image(Initialized2, DimsOversampled, true);
        }
예제 #2
0
        public Projector(Image data, int oversampling)
        {
            Dims         = data.Dims;
            Oversampling = oversampling;

            int Oversampled = 2 * (oversampling * (Dims.X / 2) + 1) + 1;

            DimsOversampled = new int3(Oversampled, Oversampled, Oversampled);

            float[] Continuous  = data.GetHostContinuousCopy();
            float[] Initialized = new float[(DimsOversampled.X / 2 + 1) * DimsOversampled.Y * DimsOversampled.Z * 2];

            CPU.InitProjector(Dims, Oversampling, Continuous, Initialized);

            float2[] Initialized2 = Helper.FromInterleaved2(Initialized);
            Data = new Image(Initialized2, DimsOversampled, true);
            //Data = Data.AsAmplitudes();
            //Data.WriteMRC("d_proj.mrc");
            Weights = new Image(DimsOversampled, true, false);
        }