2022-07-30 14:46:04 -03:00

167 lines
5.7 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Irani-Peleg Renderer</title>
<style type="text/css">
TABLE.ba { max-width: 678; text-align: center; padding-bottom: 15; padding-top: 5}
TABLE.inline { padding-right: 300; clear: left}
TD.text_table {padding-left: 2; padding-right: 2; border-width: 1}
H2 {clear: left}
P {max-width: none; padding-right: 300; clear: left}
BLOCKQUOTE {padding-right: 400 }
LI {max-width: 640; clear: left}
P.footer {max-width: none; width: auto; padding-left: 0}
P.header {max-width: none; width: auto; padding-left: 0}
HR.main {max-width: 640; clear: left; padding-left: 0; margin-left: 0}
HR.footer {clear: both}
</style>
</head><body>
<table align=right valign=top width=160>
<td valign=top height=600 width=160>
<a href="http://auricle.dyndns.org/ALE/">
<big>ALE</big>
<br>
Image Processing Software
<br>
<br>
<small>Deblurring, Anti-aliasing, and Superresolution.</small></a>
<br><br>
<big>
Local Operation
</big>
<hr>
localhost<br>
5393119533<br>
</table>
<p><b>[ <a href="../">Up</a> ]</b></p>
<h1>Irani-Peleg Renderer</h1>
<p>ALE implements an iterative image reconstruction algorithm based on Michal
Irani and Shmuel Peleg's paper "Improving Resolution by Image Registration",
published in <i>Graphical Models and Image Processing</i>, Vol. 53, No. 3, May,
pp. 231-239, 1991, or available at:
<p><a href="http://www.wisdom.weizmann.ac.il/~irani/abstracts/superResolution.html">http://www.wisdom.weizmann.ac.il/~irani/abstracts/superResolution.html</a>
<p>This algorithm iteratively performs two steps: first, an
approximation of <b>T</b> is projected, based on a filter approximating
<b>d<sub>j</sub></b>, and data collected during <a
href="../alignment/">alignment</a>, to create a set of simulated input frames;
second, the per-pixel error -- between these simulated input frames and the
actual input frames -- is calculated, backprojected, and subtracted from the
approximation of <b>T</b>, resulting in a new approximation of <b>T</b>.
<h2>Initial Image Approximation</h2>
<p>ALE uses the results of previous rendering steps as the initial image
approximation.</p>
<h2>Projection and Back-projection filters</h2>
ALE provides command-line options for selecting forward-projection filters,
including box filters (release 0.4.2 and later) and custom filters (release
0.4.7 and later). The back-projection filters are constructed from the
forward-projection filters in such a way that condition (9) from Theorem 4.1
in the source paper is satisfied.
<h2>Transformation details</h2>
<p>ALE's method of transforming pixel areas between coordinate systems
approximates transformed pixel boundaries with axis-aligned rectangular
regions. Since boundaries are transformed into the coordinate systems of the
input frames, this approximation can be improved by using larger scale factors
(and hence reducing the size of transformed pixels).</p>
<h2>Multi-level operation</h2>
<p>The following is an edited excerpt from the comment headers for the source
file <code>d2/render/ipc.h</code>. For more information about ALE's
implementation of multi-level operation, see the relevant source files.
<pre>
* The algorithm in the source paper looks something like this (PSF' is the
* backprojection kernel, and corresponds to what the authors of the paper call
* AUX):
*
* ===============================================================
* Forward Backward Binary Operators
* ---------------------------------------------------------------
*
* scene(n) ------> scene(n+1) <--- summation
*
* | ^
* | |
* PSF PSF'
* | |
* | ---------+ <--- difference
* V / |
*
* simulated(n) real
*
* ===============================================================
*
* This assumes a single colorspace representation. However, consumer cameras
* sometimes perform sharpening in non-linear colorspace, whereas lens and
* sensor blurring occurs in linear colorspace. Hence, there can be two
* colorspaces involved; ALE accounts for this with linear and non-linear
* colorspace PSFs. Hence, the algorithm we use looks something like:
*
* ===============================================================
* Forward Backward Binary Operators
* ---------------------------------------------------------------
*
* scene(n) -----> scene(n+1) <--- summation
*
* | ^
* | |
* LPSF LPSF'
* | |
* | ----------+ <--- difference,
* V / | exposure
* re-estimation
* lsimulated(n) lreal(n)
*
* | ^
* | |
* unlinearize linearize
* | |
* V |
*
* lsim_nl(n) -----> lreal_nl(n) <--- summation
*
* | ^
* | |
* NLPSF NLPSF'
* | |
* | ----------+ <--- difference
* V / |
*
* nlsimulated(n) real_nl
*
* ^
* |
* unlinearize
* |
* |
*
* real
*
* ===============================================================
</pre>
<hr>
<i>Copyright 2003, 2004 <a href="mailto:dhilvert@auricle.dyndns.org">David Hilvert</a></i>
<p>Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
</body>
</html>