Pamrubber User Manual(1) General Commands Manual Pamrubber User Manual(1)
NAME
pamrubber - a rubber-sheeting utility that stretches an image based on
control points
SYNOPSIS
pamrubber {-tri | -quad} [-linear] [-frame] [-randomseed=N] cp1x cp1y
[cp2x cp2y [cp3x cp3y [cp4x cp4y]]] cp1x cp1y [cp2x cp2y [cp3x cp3y
[cp4x cp4y]]] [filename]
Minimum unique abbreviation of options is acceptable. You may use dou-
ble hyphens instead of single hyphen to denote options.
DESCRIPTION
This program is part of Netpbm(1).
The pamrubber utility converts a pam image into a new image with the
contents moved around. The transformation is often called "rubber
sheeting": you identify control points (CP) on the source image and
specify new positions for those points in the new image. pamrubber
moves all the pixels around, stretching and compressing as necessary, as
if the original image were on a sheet of rubber and you pulled on the
sheet to make the control points move to their new locations.
The new image has the same dimensions and format as the original.
The transformation can happen in two very different ways, called "quad"
and "tri." With the former, you must specify four control points (for
both source and target). These are the corners of two quadrilaterals
that will act as the coordinate system for both source and target im-
ages. Consider them as non-orthogonal (0,0), (0,1), (1,0) and (1,1)
points. This transformation comes close to the one pamperspective does,
however that program does other corrections as well.
When you specify less than four control points, the program adds control
points in the following way. With three control points, pamrubber
chooses the fourth one such that the four points form a parallelogram.
With two points, pamrubber considers them the opposite corners of a rec-
tangle. When you specify only one control point, pamrubber uses a rec-
tangle from the top left corner of the image to the single control
point.
In "tri" mode, pamrubber conceptually cuts up the source and target im-
age into triangles. It Transforms within each corresponding pair of
triangles in a stretching fashion. It's like pulling on the three cor-
ners of the triangle. In this mode, each pixel in the source image gets
mapped to a position in the target image. No pixels are lost.
When, in "tri" mode, you specify only a single control point in the
source and target image, pamrubber creates four triangles from this
point to the four corners of the image. With two points, the program
creates six triangles from the two endpoints of the line connecting the
two points, again to the four corners of the image. Three control points
is in a way the core of this utility in "tri" mode. Between the three
edges of the central triangle and the four edges of the image, pamrubber
constructs another seven triangles. Four control points define two cen-
tral connected triangles. In total this results in cutting the source
and target image up into ten triangles.
In this case clearly a picture says more than a thousand words. There
is a graphical illustration of these various modes at
]8;;http://www.schaik.com/netpbm/rubber\ www.schaik.com/netpbm/rubber]8;;\ . An example of how to use this type of
rubber sheeting in cartography is in the article ]8;;http://www.isprs.org/proceedings/XXXVI/5-W1/papers/21.pdf\ Visualizing the Land-
scape of Old-Time Tokyo]8;;\ .
PARAMETERS
The parameters are control points (cp) in pairs of x and y. The source
and target image must have the same number of control points. The mini-
mum number of values specified here is 4 for a single control point in
the source and target image. The maximum is 16 for four control points
in each image.
filename is the name of the input file. If you don't specify this, pam-
rubber reads the image from Standard Input.
OPTIONS
In addition to the options common to all programs based on libnetpbm
(most notably -quiet, see ]8;;index.html#commonoptions\ Common Options]8;;\ ), pamrubber recognizes the
following command line options:
-tri | -quad
This selects the type of rubber sheeting done. You must specify
exactly one of these options.
-linear
This determines whether pamrubber uses nearest neighbor interpo-
lation or bilinear interpolation of four source pixels.
-frame
This option causes pamrubber to overlay the target image with the
edges of the quadrilaterals, respectively the triangles used for
the rubber sheeting. To get the same overlay for the source im-
age, use a pamrubber transformation with identical control points
for source and target.
-randomseed=N
pamrubber randomizes some of its output. So that you can produce
repeatable results, you can choose the seed of the random number
generator with this option. If you use the same input image and
the same random number generator seed, you should always get the
exact same output. By default, pamrubber uses the time of day as
the seed, so you get slightly different output when you run the
program twice on the same input.
Before Netpbm 10.61 (December 2012), this was called -randseed,
and that still works.
SEE ALSO
pam(1) and pamperspective(1)
HISTORY
pamrubber was new in Netpbm 10.54 (March 2011).
AUTHORS
Willem van Schaik wrote this program in February 2011 and contributed it
to Netpbm.
DOCUMENT SOURCE
This manual page was generated by the Netpbm tool 'makeman' from HTML
source. The master documentation is at
http://netpbm.sourceforge.net/doc/pamrubber.html
netpbm documentation February 2011 Pamrubber User Manual(1)
Generated by dwww version 1.16 on Tue Dec 16 06:36:22 CET 2025.