📄 readme
字号:
Also one can extend Atomizer to his own dictionary by supplyingthe fast analysis/synthesis routines in a certain fashion(See V. Customizing for detail).In order to apply Atomizer to images, one needs to convert 2-d images(n-by-n matrix) into 1-d objects (n^2-by-1 matrix), and design the fastanalysis/synthesis operators for his dictionary in the same fashion.IV. Getting StartedOne should first install the software (See VI. Access andInstallation), and get the article "Atomic Decomposition by BasisPursuit" by Chen, Donoho and Saunders(http:/www-stat.stanford.edu/~Atomizer) to have to overview ofthe methodology in Atomizer. One can then start on Atomizer bystudying and trying out the demo scripts in the Scripts/Demossubdirectory. Hopefully one can then be ready to analyze some of thedatasets in the Datasets/ subdirectory using the atomic decompositionroutines in Atomizer. It should also be very helpful for one to studyand try the scripts in Scripts/BP to reproduce figures in Chen andDonoho.V. CustomizingV.1 Tuning optimzation paramtersBP_Interior: Our implementation of basis pursuit is based on aprimal-dual log barrier interior point method. Since it takes a hugeamount of computation ($n^3.5$) to achieve exact optimality,BP_Interior only attemps to calculate "approximate" optimal solutionswithin affordable time and storage. The accuracy of BP_Interior iscontrolled by several parameters. MaxBPIter controls the maximumnumber of interior point iterations. FeaTol and OptTol are twostopping criterions for BP_Interior; once the current iterationachieves the amount of feasibility defined by FeaTol and the amountprimal-dual gap defined by OptTol, BP_Interior will stop. Inside eachBP_Interior iteration, a linear system is solved by conjugategradients method. The accuracy of the conjugate gradients solver iscontrolled by CGAccuracy; MaxCGIter defines the maximum number ofconjugate gradients iterations. delta and gamma are two perturbationparameters. We suggest that one should set OptTol, FeaTol andCGAccuracy at the same level and set delta and gamma to one tenth ofthat level. According to our experience, the level 10^(-1) would givea decent approximation and the level 10^(-3) would give a very goodapproximation.MOF: We use a conjugate gradients solver to calculate the generalizedinverse in MOF. The accuracy of the conjugate gradients solver iscontrolled by CGAccuracy (default = 10 ^ -5); When dictionary matricesare poorly conditioned, one might want to increase the maximum number ofconjugate gradients iterations defined by MaxCGIter.MP: The number of atoms admitted by matching pursuit is controlled bytwo paramters. natom defines the maximum number of atoms admitted; MPstops once the coefficient of the selected atom gets below a fraction(defined by frac) of the orignal signal energy. Also theimplementation of MP assumes that dictionary atoms are normalized by$l^2$ norms; otherwise one has to change the way MP calculatescoefficients for atoms.BOB: One can change the entropy in the best orthogonal basis algorithmby changing the parameter entropy and par. The default entropy isthe $l^1$ entropy.The denoising routines can be tuned in similar ways as theircounterparts discussed above, except they have a thresholdingparameter $\lambda$. For BPDN_Interior and MOFDN, $\lambda$ is thepenalization (or regulaization) parameter. For MPDN, $\lambda$ playsthe same role as frac in MP. The default values for $\lambda$ for allthe denoising routines are set to be $\sqrt{2 m \log(m)}$ where $m$ isthe cardinality of the dictionary. There are good reasons that wechoose such $\lambda$ for BPDN_Interior and MPDN, one shouldn't changethat for usual purpose.V.2 Merging dictionariesOne can merge any of the implemented dictionaries to form a new mega dictionary by using MakeList.e.g. dict1 = 'WP' ; par11 = D; par12 = qmf; par13 = 0; dict2 = 'DCT'; par21 = 2; par22 = 0; par23 = 0;One can use: dict = MakeList(dict1, dict2); par1 = MakeList(par11, par21); par2 = MakeList(par12, par22); par3 = MakeList(par13, par23);to represent the merged dictionaryV.3 Adding new dictionariesOne can add a new dictionary by supplying the routines for the analysis and synthesis operator in the following format: Analysis: function c = Fast"NAMEOFDICT"Analysis(x, par1, par2, par3) Synthesis: function x = Fast"NAMEOFDICT"Synthesis(c, par1, par2, par3)e.g. If one wants to add a new dictionary with parameters NameOfDict = 'SHIFT' par1 = Amount of SHIFT he needs to supply the following two matlab functions: FastSHIFTAnalysis.m function c = FastSHIFTAnalysis(x, par1, par2, par3) n = length(x); c = [x(par1+1:n); x(1:par1)]; FastSHIFTSynthesis function x = FastSHIFTSynthesis(c, par1, par2, par3) n = length(c); x = [c(n-par1+1:n); c(1:n-par1)];VI. Access and InstallationAtomizer is freeware and may be obtained via: * World-Wide-Web: http://www-stat.stanford.edu/~Atomizer Your WWW browser may be used to peruse the documentation. Please send comments or questions to Atomizer@stat.stanford.eduVII. AppendixHere is the list of dictionaries implemented in Atomizer with theirspecification.Dictionaries normalized by l^2 norm o Dirac NameOfDict = 'DIRAC' o Discrete Cosine Transform NameOfDict = 'DCT' par1 = overcompleteness (integer) o Discrete Sine Transform NameOfDict = 'DST' par1 = overcompleteness (integer) o Periodized-Orthogonal Wavelet NameOfDict = 'WAVE' par1 = L, coarsest level par2 = qmf o Periodized-Biothogonal-Symmetric Wavelet NameOfDict = 'PBS' par1 = L, coarsest level par2 = qmf par3 = dqmf o Stationary PO Wavelet NameOfDict = 'STAT' par1 = D, degree of finest frequency partition par2 = qmf o Spline (Stationary PBS Wavelet) NameOfDict = 'SP' par1 = D, degree of finest frequency partition par2 = qmf par3 = dqmf o Wavelet Packet NameOfDict = 'WP' par1 = D, degree of finest frequency partition par2 = qmf o Cosine Packet NameOfDict = 'CP' par1 = D, depth of finest time splitting o Multi-Duration-Cosines NameOfDict = 'MCD' par1 = the depth, 0<=D<=log2(n) par2 = overcompleteness (integer)Dictionaries normalized by total variation o HeaviSide NameOfDict = 'HeaviSide' o Jump (Smoothed Heaviside) NameOfDict = 'JUMP' par1 = the decaying speed, 0 < par1 < 1, where small values correspond to faster decaying o POTV (PO Wavelet normalized by Total Variation) NameOfDict = 'JUMP' par1 = L, coarsest level par2 = qmf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -