ppmchange
change all pixels of one color to another in a portable pixmap
see also :
pgmtoppm - ppmcolormask
Synopsis
ppmchange
[ -closeness closeness_percent ] [
-remainder remainder_color ] [ oldcolor
newcolor ] ... [ppmfile]
add an example, a script, a trick and tips
examples
no example yet ...
... Feel free to add your own example above to help other Linux-lovers !
description
Reads a
portable pixmap as input. Changes all pixels of
oldcolor to newcolor. You may specify up to
256 oldcolor/newcolor pairs on the command line.
ppmchange leaves all colors not mentioned unchanged,
unless you specify the -remainder option, in which
case they are all changed to the single specified color.
You can specify
that colors similar, but not identical, to the ones you
specify get replaced by specifying a "closeness"
factor.
The colors can
be specified in five ways:
o
A name, assuming that a pointer to an X11-style color
names file was compiled in.
o
An X11-style hexadecimal specifier: rgb:r/g/b, where r g
and b are each 1- to 4-digit hexadecimal numbers.
o
An X11-style decimal specifier: rgbi:r/g/b, where r g
and b are floating point numbers between 0 and 1.
o
For backwards compatibility, an old-X11-style
hexadecimal number: #rgb, #rrggbb, #rrrgggbbb, or
#rrrrggggbbbb.
o
For backwards compatibility, a triplet of numbers
separated by commas: r,g,b, where r g and b are floating
point numbers between 0 and 1. (This style was added before
MIT came up with the similar rgbi style.)
If a pixel
matches two different oldcolors, ppmchange
replaces it with the newcolor of the leftmost
specified one.
options
-closeness
closeness_percent
closeness is an integer
per centage indicating how close to the color you specified
a pixel must be to get replaced. By default, it is 0, which
means the pixel must be the exact color you specified.
A pixel gets
replaced if the distance in color between it and the color
you specified is less than or equal to closeness.
The
"distance" in color is defined as the cartesian
sum of the individual differences in red, green, and blue
intensities between the two pixels, normalized so that the
difference between black and white is 100%.
This is
probably simpler than what you want most the time. You
probably would like to change colors that have similar
chrominance, regardless of their intensity. So if
there’s a red barn that is variously shadowed, you
want the entire barn changed. But because the shadowing
significantly changes the color according to
ppmchange’s distance formula, parts of the barn
are probably about as distant in color from other parts of
the barn as they are from green grass next to the barn.
Maybe
ppmchange will be enhanced some day to do chrominance
analysis.
-remainder
color
ppmchange changes all
pixels which are not of a color for which you specify an
explicit replacement color on the command line to color
color.
An example
application of this is
ppmchange
-remainder=black red red
to lift only
the red portions from an image, or
ppmchange
-remainder=black red white | ppmtopgm
to create a
mask file for the red portions of the image.
see also
pgmtoppm ,
ppmcolormask , ppm
author
Wilson H. Bent.
Jr. (whb[:at:]usc[:dot:]edu) with modifications by Alberto Accomazzi
(alberto[:at:]cfa.harvard[:dot:]edu)