change all pixels of one color to another in a portable pixmap
see also :
pgmtoppm - ppmcolormask
[ -closeness closeness_percent ] [
-remainder remainder_color ] [ oldcolor
newcolor ] ... [ppmfile]
add an example, a script, a trick and tips
no example yet ...
... Feel free to add your own example above to help other Linux-lovers !
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"
The colors can
be specified in five ways:
A name, assuming that a pointer to an X11-style color
names file was compiled in.
An X11-style hexadecimal specifier: rgb:r/g/b, where r g
and b are each 1- to 4-digit hexadecimal numbers.
An X11-style decimal specifier: rgbi:r/g/b, where r g
and b are floating point numbers between 0 and 1.
For backwards compatibility, an old-X11-style
hexadecimal number: #rgb, #rrggbb, #rrrgggbbb, or
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
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.
"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%.
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.
ppmchange will be enhanced some day to do chrominance
ppmchange changes all
pixels which are not of a color for which you specify an
explicit replacement color on the command line to color
application of this is
-remainder=black red red
to lift only
the red portions from an image, or
-remainder=black red white | ppmtopgm
to create a
mask file for the red portions of the image.
ppmcolormask , ppm
Wilson H. Bent.
Jr. (whb[:at:]usc[:dot:]edu) with modifications by Alberto Accomazzi