Example #1
0
class Image1DMinresAug(Image1D):
    def __init__(self, n=80, sig=0.05, err=2, **kwargs):
        Image1D.__init__(self, n, sig, err, **kwargs)
        self.reg = kwargs.get("reg", 1.0e-3)

    def setsolver(self):
        n = self.n
        op = SimpleLinearOperator(n, n, self.matvec, symmetric=True)
        self.solver = Minres(op, check=True, show=True)

    def matvec(self, x):
        "y <- Ax"
        (m, n) = self.K.shape
        y = np.empty(n + m)
        y[:m] = x[:m] + np.asarray(x[m:] * self.K)[0]
        y[m:] = np.asarray(x[:m] * self.K.T)[0] - self.reg * x[m:]
        return y

    def deblur(self, **kwargs):
        "Deblur image with specified solver"
        b = np.zeros(2 * self.n)
        b[: self.n] = self.data
        self.solver.solve(b, **kwargs)
        return self.solver.x
Example #2
0
 def setsolver(self):
     n = self.n
     op = SimpleLinearOperator(n, n, self.matvec, symmetric=True)
     self.solver = Minres(op, check=True, show=True)