+ s += "<p>where <b>W</b> represents a wavelet transform. ";
+ s += "Due to the non-smoothness of the l<sub>1</sub> norm, ";
+ s += "the problem can be solved efficiently by fast iterative soft-thresholding </p>";
+ s += "<p>Reference: A. Beck, M. Teboulle, A fast iterative shrinkage-thresholding algorithm for linear inverse problems, SIAM J. Imag. Sci. 2, 2009. ";
- s += "<p>Iterative: " + algo.isIterative() + "</p>";
- s += "<p>Step controllable: " + algo.isStepControllable() + "</p>";
- s += "<p>Regularization: " + algo.isRegularized() + "</p>";
- s += "<p>Wavelet-base: " + algo.isWaveletsBased() + "</p>";
- String shortname = "<p>Shortname: ";
- for(String name : getShortnames())
- shortname += name + " ";
- s += shortname + "</p>";
+ s += "<h1>" + getName();
+ s += " [<span style=\"color:#FF3333;font-family:georgia\">ICTM</span>]</h1>";
+ s += "<p>TM algorithm uses iterative gradient descent to minimize the regularized inverse filter cost.</p>";
+ s += "<p>The iterative scheme allows nonnegativity constraint at each iteration.</p>";
+ s += "<p>Reference: H. Van der Voort, K. Strasters, Restoration of confocal images for quantitative image analysis. J of Microscopy 178, 165-181, 1995</p>";
+ s += "<p>where <b>W</b> represents a wavelet transform. ";
+ s += "<p>Reference: An EM algorithm for wavelet-based image restoration, MAT Figueiredo, RD Nowak, Image Processing, IEEE Transactions on 12 (8), 2003. ";
- s += "<p>Iterative: " + algo.isIterative() + "</p>";
- s += "<p>Step controllable: " + algo.isStepControllable() + "</p>";
- s += "<p>Regularization: " + algo.isRegularized() + "</p>";
- s += "<p>Wavelet-base: " + algo.isWaveletsBased() + "</p>";
- String shortname = "<p>Shortname: ";
- for(String name : getShortnames())
- shortname += name + " ";
- s += shortname + "</p>";
+ s += "<h1>" + getName();
+ s += " [<span style=\"color:#FF3333;font-family:georgia\">LW+</span> | ";
+ s += " <span style=\"color:#FF3333;font-family:georgia\">NNLS</span>]</h1>";
+ s += "<p>The Landweber+ algorithm known as Non-Negative Least-Square (NLLS) minimizes a least-squares cost function with a non-negative constraint.</p>";
+ s += "<p>Reference: L. Landweber, An iteration formula for fredholm integral equations of the first kind, Am. J. Math. 73, 1951. ";
+ s += " [<span style=\"color:#FF3333;font-family:georgia\">RLTV</span>]</h1>";
s += "<p>This algorithm is a combinaison of the Richardson–Lucy algorithm with a regularization constraint based on Total Variation, which tends to reduce unstable oscillations while preserving object edges.</p>";
- s += "<p>It is a iterative algorithm, relative slow to compute the Total Variation at every iteration.s</p>";
- s += "<p>It has a weighted parameter &lamdba; to control the effect of the total variation.</p>";
+ s += "<p>It is a iterative algorithm, relative slow to compute the Total Variation at every iteration.</p>";
+ s += "<p>It has a weighted parameter λ to control the effect of the total variation.</p>";
s += "<p></p>";
- s += "<h3>Reference: Dey et al., Microscopy Research and Technics, 2006.</p>";
+ s += "<h3>Reference: N. Dey et al., Richardson–Lucy algorithm with total variation regularization for 3D confocal microscope deconvolution, Microsc. Res. Tech. 69, 2006. </p>";
- s += "<p>Iterative: " + algo.isIterative() + "</p>";
- s += "<p>Step controllable: " + algo.isStepControllable() + "</p>";
- s += "<p>Regularization: " + algo.isRegularized() + "</p>";
- s += "<p>Wavelet-base: " + algo.isWaveletsBased() + "</p>";
+ s += "<h1>" + getName();
+ s += " [<span style=\"color:#FF3333;font-family:georgia\">TRIF</span> | ";
+ s += " <span style=\"color:#FF3333;font-family:georgia\">TR</span>] </h1>";
+ s += "<p>This algorithm is a direct inverse filter with a Tikhonov regularization following this formalization: ";
+ s += "<b>x</b> = (<b>H</b><sup>T</sup><b>H</b> + λ <b>I</b>)<sup>-1</sup> <b>H</b><sup>T</sup><b>y</b>";
+ s += "<p> where <b>H</b> is the PSF and <b>I</b> is the identity operator. ";
+ s += "This regularization tends to reduce high frequencies noisy and in the same time ";
+ s += "it tends to blur the image. It is controlled by the regularization factor λ. ";
+ s += "</p>";
+ s += "<p>TRIF or TR is very fast. It is non-iterative algorithm. </p>";
+ s += "<p>This formulation can also be interpreted as a maximum a posteriori model.";
+ s += "The regularization introduces prior information about the signal to guide the estimation.</p>";
+
+ s += "<p>Reference: A. Tikhonov, Solution of incorrectly formulated problems and the regularization method, Soviet Mathematics Dokl., vol. 5, 1963.</p>";
info.append("h2", "Create a view with 2 panels (XY) and (YZ) with a border.");
}
if (view == View.MIP) {
info.append("h1", "mip");
info.append("h2", "Create a view 3 orthogonal projections.");
}
if (view == View.ORTHO) {
info.append("h1", "ortho");
- info.append("h2", "Create a view 3 orthogonal section centered on the keypoint.");
+ info.append("h2", "Create a view 3 orthogonal section centered on the origin.");
}
if (view == View.PLANAR) {
info.append("h1", "ortho");
info.append("h2", "Create a montage of all Z-slice in one large flatten plane.");
}
if (view == View.STACK) {
info.append("h1", "stack");
info.append("h2", "Create a z-stack of image.");
}
if (view == View.SERIES) {
info.append("h1", "series");
info.append("h2", "Create a series of z-slices.");
}
info.append("p", "<b>Name:</b> This string will be used as title of the window in <i>show</i> mode or a filename in <i>save</i> mode.");
info.append("p", "<b>Dynamic:</b> Select the dynamic range used for the display. The default value is <i>intact</i> which preserves the true values.");
info.append("p", "<b>Type:</b> Select the data type. The default value is <i>float</i> which preserves the true values without loosing precision.");
info.append("p", "<b>Snapshot:</b> The output is usually shown (or saved) at the end of the processing, optionally it is possible to specify to show (or save) every N iterations.");
info.append("h2", "Create a view with 2 panels (XY) and (YZ) with a border.");
}
if (view == View.MIP) {
info.append("h1", "mip");
info.append("h2", "Create a view 3 orthogonal projections.");
}
if (view == View.ORTHO) {
info.append("h1", "ortho");
info.append("h2", "Create a view 3 orthogonal section centered on the keypoint.");
}
if (view == View.PLANAR) {
info.append("h1", "ortho");
info.append("h2", "Create a montage of all Z-slice in one large flatten plane.");
}
if (view == View.STACK) {
info.append("h1", "stack");
info.append("h2", "Create a z-stack of image.");
}
if (view == View.SERIES) {
info.append("h1", "series");
info.append("h2", "Create a series of z-slices.");
}
info.append("p", "<b>Name:</b> This string will be used as title of the window in <i>show</i> mode or a filename in <i>save</i> mode.");
info.append("p", "<b>Dynamic:</b> Select the dynamic range used for the display. The default value is <i>intact</i> which preserves the true values.");
info.append("p", "<b>Type:</b> Select the data type. The default value is <i>float</i> which preserves the true values without loosing precision.");
info.append("p", "<b>Snapshot:</b> The output is usually shown (or saved) at the end of the processing, optionally it is possible to specify to show (or save) every N iterations.");