Total Variation Deconvolution using Split Bregman
|
u-subproblem DCT solver for TV-regularized deconvolution More...
Go to the source code of this file.
Functions | |
static void | AdjBlurDct (num *ATrans, FFT(plan) TransformA, const num *KernelTrans, int Width, int Height, int NumChannels, num Alpha) |
Compute . More... | |
static int | InitDeconvDct (tvregsolver *S) |
Intializations to prepare TvRestore for DCT-based deconvolution. More... | |
static void | UTransSolveDct (num *BTrans, num *B, FFT(plan) TransformB, num *ATrans, const numvec2 *dtilde, const num *DenomTrans, int Width, int Height, int NumChannels) |
Compute BTrans = ( ATrans - DCT[div(dtilde)] ) / DenomTrans. More... | |
static num | UDeconvDct (tvregsolver *S) |
Solve the u subproblem using DCT transforms (UseZ = 0) More... | |
static num | UDeconvDctZ (tvregsolver *S) |
Solve the u subproblem using DCT transforms (UseZ = 1) More... | |
u-subproblem DCT solver for TV-regularized deconvolution
Copyright (c) 2010-2012, Pascal Getreuer All rights reserved.
This program is free software: you can use, modify and/or redistribute it under the terms of the simplified BSD License. You should have received a copy of this license along this program. If not, see http://www.opensource.org/licenses/bsd-license.html.
Definition in file usolve_dct_inc.c.
|
static |
Compute .
ATrans | the destination |
TransformA | FFTW plan, transforming A to ATrans |
KernelTrans | the transform of the convolution kernel |
Width,Height,NumChannels | image dimensions |
Alpha | positive scalar |
As an intermediate computation for the u subproblem, this routine computes .
Definition at line 29 of file usolve_dct_inc.c.
|
static |
Intializations to prepare TvRestore for DCT-based deconvolution.
S | tvreg solver state |
This routine sets up FFTW transform plans and precomputes the transform in S->DenomTrans. If UseZ = 0, the transform is precomputed in S->ATrans.
Definition at line 58 of file usolve_dct_inc.c.
|
static |
Solve the u subproblem using DCT transforms (UseZ = 0)
S | tvreg solver state |
This routine solves the u-subproblem
The solution is obtained using discrete cosine transforms (DCTs) as
where and denote the DCT-I and DCT-II transforms of the same period lengths. Two of the above quantities are precomputed by InitDeconvDct(): the transform of is stored in S->ATrans and the transformed denominator is stored in S->DenomTrans.
Definition at line 196 of file usolve_dct_inc.c.
|
static |
Solve the u subproblem using DCT transforms (UseZ = 1)
S | tvreg solver state |
This extended version of UDeconvDct() is used when performing DCT-based deconvolution with the three-auxiliary variable algorithm (UseZ = 1). The u subproblem in this case is
Compared to UDeconvDct(), the main differences are that the DCT of ztilde is computed and is updated.
Definition at line 221 of file usolve_dct_inc.c.
|
static |
Compute BTrans = ( ATrans - DCT[div(dtilde)] ) / DenomTrans.
This subroutine is a part of the DCT u-subproblem solution that is common to both the d,u splitting (UseZ = 0) and d,u,z splitting (UseZ = 1).
Definition at line 157 of file usolve_dct_inc.c.