NAME¶
pinterp - interpolate/extrapolate view from pictures
SYNOPSIS¶
pinterp [ view options ][
-t threshold ][
-z zout ][
-f type ][
-B ][
-a|q ][
-e exposure ][
-n ]
pictfile zspec ..
DESCRIPTION¶
Pinterp interpolates or extrapolates a new view from one or more RADIANCE
pictures and sends the result to the standard output. The input picture files
must contain correct view specifications, as maintained by
rpict(1),
rvu(1), pfilt(1) and
pinterp. Specifically,
pinterp will not work on pictures processed by
pcompos(1) or
pcomb(1). Each input file must be accompanied by a z specification,
which gives the distance to each pixel in the image. If
zspec is an
existing file, it is assumed to contain a short floating point number for each
pixel, written in scanline order. This file is usually generated by the
-z option of
rpict(1). If
zspec is a positive number
rather than a file, it will be used as a constant value for the corresponding
image. This may be useful for certain transformations on "flat"
images or when the viewpoint remains constant.
The
-n option specifies that input and output z distances are along the
view direction, rather than absolute distances to intersection points. This
option is usually appropriate with a constant z specification, and should not
be used with
rpict(1) z files.
The
-z option writes out interpolated z values to the specified file.
Normally, this information is thrown away.
Pinterp rearranges the pixels from the input pictures to produce a
reasonable estimate of the desired view. Pixels that map within the
-t
threshold of each other (.02 times the z distance by default) are considered
coincident. With the
-a option, image points that coincide will be
averaged together, giving a smooth result. The
-q option turns
averaging off, which means that the first mapped pixel for a given point will
be used. This makes the program run faster and take less memory, but at the
expense of image quality. By default, two or more pictures are averaged
together, and a single picture is treated with the faster algorithm. This may
be undesirable when a quick result is desired from multiple input pictures in
the first case, or a single picture is being reduced in size (anti-aliased) in
the second case.
Portions which were hidden or missing in the input pictures must be "filled
in" somehow, and a number of methods are provided by the
-f
option. The default value for this option is
-fa, which results in both
foreground and background filling. The foreground fill algorithm spreads each
input pixel to cover all output pixels within a parallelogram corresponding to
that pixel's projection in the new view. Without it, each input pixel
contributes to at most one output pixel. The background algorithm fills in
those areas in the final picture that have not been filled with foreground
pixels. It does this by looking at the boundary surrounding each blank area
and picking the farthest pixels to each side, assuming that this will make a
suitable background. The
-ff option tells the program to use only the
foreground fill, the
-fb option says use only background fill, and the
-f0 option says not to use either fill algorithm.
Even when both fill algorithms are used, there may still be some unfilled
pixels. By default, these pixels are painted black and assigned a z distance
of zero. The
-fc option can be used to change the color used for
unfilled pixels, and the
-fz option can be used to set the z distance
(always along the view direction). Alternatively, the
-fr option can be
used to compute these pixels using
rtrace(1). The argument to this
option is a quoted string containing arguments for
rtrace. It must
contain the octree used to generate the input pictures, along with any other
options necessary to match the calculation used for the input pictures. The
-fs option can be used to place a limit on the distance (in pixels)
over which the background fill algorithm is used. The default value for this
option is 0, which is interpreted as no limit. A value of 1 is equivalent to
turning background fill off. When combined with the
-fr option, this is
roughly equivalent to the
-ps option of
rpict(1).
In order of increasing quality and cost, one can use the
-fa option
alone, or the
-fr option paired with
-fs or
-ff or
-f0. The last combination will result in the recalculation of all
pixels not adequately accounted for in the input pictures, with an associated
computational expense. It is rare that the
-fs option results in
appreciable image degradation, so it is usually the second combination that is
used when the background fill algorithm results in objectionable artifacts.
The
-B option may be used to average multiple views read from the
standard input into a single, blurred output picture. This is similar to
running
pinterp multiple times and averaging the output together with a
program like
pcomb(1). This option is useful for simulating motion blur
and depth of field. (See
pmdblur(1).) The input views are
reported in the information header of the output file, along with the averaged
view. The picture dimensions computed from the first view will be the ones
used, regardless whether or not the subsequent views agree. (The reported
pixel aspect ratio in the output is determined from these original dimensions
and the averaged view.) Note that the expense of the
-fr option
is proportional to the number of views computed, and the
-z output file
will be the z-buffer of the last view interpolated rather than an averaged
distance map.
In general,
pinterp performs well when the output view is flanked by two
nearby input views, such as might occur in a walk-through animation sequence.
The algorithms start to break down when there is a large difference between
the view desired and the view(s) provided. Specifically, obscured objects may
appear to have holes in them and large areas at the image borders may not be
filled by the foreground or background algorithms. Also, specular reflections
and highlights will not be interpolated very well, since their view-dependent
appearance will be incompletely compensated for by the program. (The
-a
option offers some benefit in this area.)
The
-e option may be used to adjust the output image exposure, with the
same specification given as for
pfilt. The actual adjustment will be
rounded to the nearest integer f-stop if the
-q option is in effect (or
there is only a single input picture).
EXAMPLE¶
To interpolate two frames of a walk-through animation, anti-alias to 512x400 and
increase the exposure by 2.5 f-stops:
-
- pinterp -vf 27.vf -a -x 512 -y 400 -e +2.5 30.hdr 30.z
20.hdr 20.z > 27.hdr
To extrapolate a second eyepoint for a stereo pair and recalculate background
regions:
-
- pinterp -vf right.vf -ff -fr "-av .1 .1 .1
scene.oct" left.hdr left.z > right.hdr
To convert an angular fisheye to a hemispherical fisheye:
-
- pinterp -vf fish.hdr -vth -ff fish.hdr 1 > hemi.hdr
AUTHOR¶
Greg Ward
SEE ALSO¶
getinfo(1),
pdfblur(1),
pfilt(1),
pmblur(1),
pmdblur(1),
rpict(1),
ranimate(1),
rtrace(1),
rvu(1)