Beispiel #1
0
 def __init__(self, proj, geo, angles, niter, **kwargs):
     if "blocksize" in kwargs and kwargs['blocksize'] > 1:
         print(
             'Warning: blocksize is set to {}, please do not specify blocksize for this algorithm'
             .format(angles.shape[0]))
     kwargs.update(dict(blocksize=angles.shape[0]))
     IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
Beispiel #2
0
    def __init__(self, proj, geo, angles, niter, **kwargs):

        if "blocksize" not in kwargs:
            kwargs.update(blocksize=1)
        IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
        if "alpha" not in kwargs:
            self.alpha = 0.002
        if "alpha_red" not in kwargs:
            self.alpha_red = 0.95
        if "rmax" not in kwargs:
            self.rmax = 0.95
        if "maxl2err" not in kwargs:
            self.epsilon = (
                im3DNORM(Ax(FDK(proj, geo, angles, gpuids=self.gpuids), geo, angles) - proj, 2)
                * 0.2
            )
        else:
            self.epsilon = kwargs["maxl2err"]
        if "tviter" not in kwargs:
            self.numiter_tv = 20
        else:
            self.numiter_tv = kwargs["tviter"]
        if "regularisation" not in kwargs:
            self.regularisation = "minimizeTV"
        self.beta = self.lmbda
        self.beta_red = self.lmbda_red
Beispiel #3
0
 def __init__(self, proj, geo, angles, niter, **kwargs):
     if "blocksize" in kwargs and kwargs['blocksize'] > 1:
         print(
             'Warning: blocksize is set to 1, please use an OS version of the algorithm for blocksize > 1'
         )
     kwargs.update(dict(blocksize=1))
     IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
    def __init__(self, proj, geo, angles, niter, **kwargs):
        # Don't precompute V and W.
        kwargs.update(dict(W=None, V=None))
        kwargs.update(dict(blocksize=angles.shape[0]))
        self.log_parameters = False
        self.re_init_at_iteration = 0
        IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)

        if self.log_parameters:
            parameter_history = {}
            iterations = self.niter
            parameter_history['alpha'] = np.zeros([iterations],
                                                  dtype=np.float32)
            parameter_history['beta'] = np.zeros([iterations],
                                                 dtype=np.float32)
            parameter_history['gamma'] = np.zeros([iterations],
                                                  dtype=np.float32)
            parameter_history['q_norm'] = np.zeros([iterations],
                                                   dtype=np.float32)
            parameter_history['s_norm'] = np.zeros([iterations],
                                                   dtype=np.float32)
            self.parameter_history = parameter_history

        self.__r__ = self.proj - \
            Ax(self.res, self.geo, self.angles, 'Siddon', gpuids = self.gpuids)
        self.__p__ = Atb(self.__r__, self.geo, self.angles, gpuids=self.gpuids)
        p_norm = np.linalg.norm(self.__p__.ravel(), 2)
        self.__gamma__ = p_norm * p_norm
Beispiel #5
0
    def __init__(self, proj, geo, angles, niter, **kwargs):
        if 'tvlambda' not in kwargs:
            kwargs.update(dict(tvlambda=50))
        if 'tviter' not in kwargs:
            kwargs.update(dict(tviter=50))
        # these two settings work well for nVoxel=[254,254,254]

        IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
Beispiel #6
0
    def __init__(self, proj, geo, angles, niter, **kwargs):

        self.blocksize = 20 if 'blocksize' not in kwargs else kwargs[
            'blocksize']
        self.tvlambda = 50 if 'tvlambda' not in kwargs else kwargs['tvlambda']
        self.tviter = 50 if 'tviter' not in kwargs else kwargs['tviter']
        # these two settings work well for nVoxel=[254,254,254]

        IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
Beispiel #7
0
    def __init__(self, proj, geo, angles, niter, **kwargs):
        # Don't precompute V and W.
        kwargs.update(dict(W=None, V=None))
        kwargs.update(dict(blocksize=angles.shape[0]))
        IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)

        if self.init is None:
            self.res += 1.

        self.W = Atb(np.ones(proj.shape, dtype=np.float32), geo, angles)
        self.W[self.W <= 0.] = np.inf
Beispiel #8
0
    def __init__(self, proj, geo, angles, niter, **kwargs):

        if "blocksize" in kwargs and kwargs['blocksize'] > 1:
            print(
                'Warning: blocksize is set to 1, please use an OS version of the algorithm for blocksize > 1'
            )
        kwargs.update(dict(blocksize=1))
        self.tvlambda = 50 if 'tvlambda' not in kwargs else kwargs['tvlambda']
        self.tviter = 50 if 'tviter' not in kwargs else kwargs['tviter']
        # these two settings work well for nVoxel=[254,254,254]

        IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
Beispiel #9
0
 def __init__(self, proj, geo, angles, niter, **kwargs):
     # Don't precompute W and V
     kwargs.update({"W": None, "V": None})
     kwargs.update(dict(blocksize=angles.shape[0]))
     IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
     self.lmbda = 0.1
     self.__L__ = 2.0e8 if "hyper" not in kwargs else kwargs["hyper"]
     self.__numiter_tv__ = 20 if "tviter" not in kwargs else kwargs["tviter"]
     self.__lambda__ = 0.1 if "tvlambda" not in kwargs else kwargs["tvlambda"]
     self.__t__ = 1
     self.__bm__ = 1.0 / self.__L__
     self.__p__ = 1 if "fista_p" not in kwargs else kwargs["fista_p"]
     self.__q__ = 1 if "fista_q" not in kwargs else kwargs["fista_q"]
Beispiel #10
0
    def __init__(self, proj, geo, angles, niter, **kwargs):

        # Dont precompute W and V
        kwargs.update(dict(W=None,
                           V=None,
                           ))
        kwargs.update(dict(blocksize=angles.shape[0]))
        IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
        self.lmbda = 0.1
        if 'hyper' not in kwargs:
            self.__L__ = 2.e4
        else:
            self.__L__ = kwargs['hyper']
        self.__t__ = 1
        self.__bm__ = 1. / self.__L__
Beispiel #11
0
 def __init__(self, proj, geo, angles, niter, **kwargs):
     IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
     if not kwargs.has_key('alpha'):
         self.alpha = 0.002
     if not kwargs.has_key('alpha_red'):
         self.alpha_red = 0.95
     if not kwargs.has_key('rmax'):
         self.rmax = 0.95
     if not kwargs.has_key('maxl2err'):
         self.epsilon = im3DNORM(FDK(proj, geo, angles), 2) * 0.2
     if not kwargs.has_key("numiter_tv"):
         self.numiter_tv = 20
     if not kwargs.has_key('regularisation'):
         self.regularisation = 'minimizeTV'
     self.beta = self.lmbda
     self.beta_red = self.lmbda_red
Beispiel #12
0
 def __init__(self, proj, geo, angles, niter, **kwargs):
     
     # if "blocksize" not in kwargs:
     #     kwargs.update(dict(blocksize=1))
     #kwargs.update(dict(regularisation="minimizeTV"))
     IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
     if "maxl2err" not in kwargs:
         self.epsilon = (
             im3DNORM(Ax(FDK(proj, geo, angles, gpuids=self.gpuids), geo, angles) - proj, 2)
             * 0.2
         )
     else:
         self.epsilon = kwargs["maxl2err"]
     self.numiter_tv = 20 if "tviter" not in kwargs else kwargs["tviter"]
     self.beta = self.lmbda
     self.beta_red = self.lmbda_red
Beispiel #13
0
    def __init__(self, proj, geo, angles, niter, **kwargs):

        if 'blocksize' not in kwargs:
            kwargs.update(blocksize=1)
        IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
        if 'alpha' not in kwargs:
            self.alpha = 0.002
        if 'alpha_red' not in kwargs:
            self.alpha_red = 0.95
        if 'rmax' not in kwargs:
            self.rmax = 0.95
        if 'maxl2err' not in kwargs:
            self.epsilon = im3DNORM(FDK(proj, geo, angles), 2) * 0.2
        if "numiter_tv" not in kwargs:
            self.numiter_tv = 20
        if 'regularisation' not in kwargs:
            self.regularisation = 'minimizeTV'
        self.beta = self.lmbda
        self.beta_red = self.lmbda_red
    def __init__(self,proj,geo,angles,niter,**kwargs):
        # Don't precompute V and W.
        kwargs.update(dict(W=None,V=None))
        kwargs.update(dict(blocksize=angles.shape[0]))
        self.log_parameters = False
        # Avoid typo checking
        IterativeReconAlg.__init__(self,proj,geo,angles,niter,**kwargs)

        self.initialise_cgls()

        if self.log_parameters:
            parameter_history = {}
            iterations = self.niter
            parameter_history['alpha'] = np.zeros([iterations], dtype=np.float32)
            parameter_history['beta'] = np.zeros([iterations], dtype=np.float32)
            parameter_history['gamma'] = np.zeros([iterations], dtype=np.float32)
            parameter_history['q_norm'] = np.zeros([iterations], dtype=np.float32)
            parameter_history['s_norm'] = np.zeros([iterations], dtype=np.float32)
            self.parameter_history = parameter_history
Beispiel #15
0
    def __init__(self, proj, geo, angles, niter, **kwargs):

        if 'blocksize' not in kwargs:
            kwargs.update(blocksize=1)
        IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
        if 'alpha' not in kwargs:
            self.alpha = 0.002
        if 'alpha_red' not in kwargs:
            self.alpha_red = 0.95
        if 'rmax' not in kwargs:
            self.rmax = 0.95
        if 'maxl2err' not in kwargs:
            self.epsilon = im3DNORM(FDK(proj, geo, angles), 2)*0.2
        if "numiter_tv" not in kwargs:
            self.numiter_tv = 20
        if 'regularisation' not in kwargs:
            self.regularisation = 'minimizeTV'
        self.beta = self.lmbda
        self.beta_red = self.lmbda_red
    def __init__(self, proj, geo, angles, niter, **kwargs):
        # Don't precompute V and W.
        kwargs.update(dict(W=None, V=None))
        kwargs.update(dict(blocksize=angles.shape[0]))
        self.log_parameters = False
        IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)

        if self.log_parameters:
            parameter_history = {}
            iterations = self.niter
            parameter_history['alpha'] = np.zeros([iterations], dtype=np.float32)
            parameter_history['beta'] = np.zeros([iterations], dtype=np.float32)
            parameter_history['gamma'] = np.zeros([iterations], dtype=np.float32)
            parameter_history['q_norm'] = np.zeros([iterations], dtype=np.float32)
            parameter_history['s_norm'] = np.zeros([iterations], dtype=np.float32)
            self.parameter_history = parameter_history

        self.__r__ = self.proj - Ax(self.res, self.geo, self.angles, 'ray-voxel')
        self.__p__ = Atb(self.__r__, self.geo, self.angles)
        p_norm = np.linalg.norm(self.__p__.ravel(), 2)
        self.__gamma__ = p_norm * p_norm
Beispiel #17
0
 def __init__(self, proj, geo, angles, niter, **kwargs):
     IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
Beispiel #18
0
 def __init__(self, proj, geo, angles, niter, **kwargs):
     IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
Beispiel #19
0
 def __init__(self, proj, geo, angles, niter, **kwargs):
     kwargs.update(dict(blocksize=angles.shape[0]))
     IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
Beispiel #20
0
    def __init__(self, proj, geo, angles, niter, **kwargs):

        self.blocksize = 20 if 'blocksize' not in kwargs else kwargs[
            "blocksize"]
        IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)
Beispiel #21
0
 def __init__(self, proj, geo, angles, niter, **kwargs):
     kwargs.update(dict(blocksize=angles.shape[0]))
     IterativeReconAlg.__init__(self, proj, geo, angles, niter, **kwargs)