1995-03-17 12:07:09 -04:00
|
|
|
\section{Built-in Module \sectcode{imageop}}
|
1997-07-17 13:34:52 -03:00
|
|
|
\label{module-imageop}
|
1994-01-01 21:22:07 -04:00
|
|
|
\bimodindex{imageop}
|
|
|
|
|
1995-03-13 06:03:32 -04:00
|
|
|
The \code{imageop} module contains some useful operations on images.
|
1994-01-01 21:22:07 -04:00
|
|
|
It operates on images consisting of 8 or 32 bit pixels
|
1995-03-17 12:07:09 -04:00
|
|
|
stored in Python strings. This is the same format as used
|
1994-01-01 21:22:07 -04:00
|
|
|
by \code{gl.lrectwrite} and the \code{imgfile} module.
|
|
|
|
|
|
|
|
The module defines the following variables and functions:
|
|
|
|
|
1998-02-13 02:58:54 -04:00
|
|
|
\setindexsubitem{(in module imageop)}
|
1994-01-01 21:22:07 -04:00
|
|
|
|
|
|
|
\begin{excdesc}{error}
|
|
|
|
This exception is raised on all errors, such as unknown number of bits
|
|
|
|
per pixel, etc.
|
|
|
|
\end{excdesc}
|
|
|
|
|
|
|
|
|
1998-03-17 02:33:25 -04:00
|
|
|
\begin{funcdesc}{crop}{image, psize, width, height, x0, y0, x1, y1}
|
1995-03-17 12:07:09 -04:00
|
|
|
Return the selected part of \var{image}, which should by
|
1995-03-13 06:03:32 -04:00
|
|
|
\var{width} by \var{height} in size and consist of pixels of
|
1995-03-17 12:07:09 -04:00
|
|
|
\var{psize} bytes. \var{x0}, \var{y0}, \var{x1} and \var{y1} are like
|
|
|
|
the \code{lrectread} parameters, i.e.\ the boundary is included in the
|
|
|
|
new image. The new boundaries need not be inside the picture. Pixels
|
|
|
|
that fall outside the old image will have their value set to zero. If
|
|
|
|
\var{x0} is bigger than \var{x1} the new image is mirrored. The same
|
|
|
|
holds for the y coordinates.
|
1994-01-01 21:22:07 -04:00
|
|
|
\end{funcdesc}
|
|
|
|
|
1998-03-17 02:33:25 -04:00
|
|
|
\begin{funcdesc}{scale}{image, psize, width, height, newwidth, newheight}
|
1995-03-17 12:07:09 -04:00
|
|
|
Return \var{image} scaled to size \var{newwidth} by \var{newheight}.
|
|
|
|
No interpolation is done, scaling is done by simple-minded pixel
|
|
|
|
duplication or removal. Therefore, computer-generated images or
|
|
|
|
dithered images will not look nice after scaling.
|
1994-01-01 21:22:07 -04:00
|
|
|
\end{funcdesc}
|
|
|
|
|
1998-03-17 02:33:25 -04:00
|
|
|
\begin{funcdesc}{tovideo}{image, psize, width, height}
|
1995-03-17 12:07:09 -04:00
|
|
|
Run a vertical low-pass filter over an image. It does so by computing
|
|
|
|
each destination pixel as the average of two vertically-aligned source
|
|
|
|
pixels. The main use of this routine is to forestall excessive
|
|
|
|
flicker if the image is displayed on a video device that uses
|
|
|
|
interlacing, hence the name.
|
1994-01-01 21:22:07 -04:00
|
|
|
\end{funcdesc}
|
|
|
|
|
1998-03-17 02:33:25 -04:00
|
|
|
\begin{funcdesc}{grey2mono}{image, width, height, threshold}
|
1995-03-17 12:07:09 -04:00
|
|
|
Convert a 8-bit deep greyscale image to a 1-bit deep image by
|
|
|
|
tresholding all the pixels. The resulting image is tightly packed and
|
|
|
|
is probably only useful as an argument to \code{mono2grey}.
|
1994-01-01 21:22:07 -04:00
|
|
|
\end{funcdesc}
|
|
|
|
|
1998-03-17 02:33:25 -04:00
|
|
|
\begin{funcdesc}{dither2mono}{image, width, height}
|
1995-03-17 12:07:09 -04:00
|
|
|
Convert an 8-bit greyscale image to a 1-bit monochrome image using a
|
|
|
|
(simple-minded) dithering algorithm.
|
1994-01-01 21:22:07 -04:00
|
|
|
\end{funcdesc}
|
|
|
|
|
1998-03-17 02:33:25 -04:00
|
|
|
\begin{funcdesc}{mono2grey}{image, width, height, p0, p1}
|
1995-03-17 12:07:09 -04:00
|
|
|
Convert a 1-bit monochrome image to an 8 bit greyscale or color image.
|
|
|
|
All pixels that are zero-valued on input get value \var{p0} on output
|
|
|
|
and all one-value input pixels get value \var{p1} on output. To
|
|
|
|
convert a monochrome black-and-white image to greyscale pass the
|
|
|
|
values \code{0} and \code{255} respectively.
|
1994-01-01 21:22:07 -04:00
|
|
|
\end{funcdesc}
|
|
|
|
|
1998-03-17 02:33:25 -04:00
|
|
|
\begin{funcdesc}{grey2grey4}{image, width, height}
|
1994-01-01 21:22:07 -04:00
|
|
|
Convert an 8-bit greyscale image to a 4-bit greyscale image without
|
|
|
|
dithering.
|
|
|
|
\end{funcdesc}
|
|
|
|
|
1998-03-17 02:33:25 -04:00
|
|
|
\begin{funcdesc}{grey2grey2}{image, width, height}
|
1994-01-01 21:22:07 -04:00
|
|
|
Convert an 8-bit greyscale image to a 2-bit greyscale image without
|
|
|
|
dithering.
|
|
|
|
\end{funcdesc}
|
|
|
|
|
1998-03-17 02:33:25 -04:00
|
|
|
\begin{funcdesc}{dither2grey2}{image, width, height}
|
1994-01-01 21:22:07 -04:00
|
|
|
Convert an 8-bit greyscale image to a 2-bit greyscale image with
|
1995-03-17 12:07:09 -04:00
|
|
|
dithering. As for \code{dither2mono}, the dithering algorithm is
|
1994-01-01 21:22:07 -04:00
|
|
|
currently very simple.
|
|
|
|
\end{funcdesc}
|
|
|
|
|
1998-03-17 02:33:25 -04:00
|
|
|
\begin{funcdesc}{grey42grey}{image, width, height}
|
1994-01-01 21:22:07 -04:00
|
|
|
Convert a 4-bit greyscale image to an 8-bit greyscale image.
|
|
|
|
\end{funcdesc}
|
|
|
|
|
1998-03-17 02:33:25 -04:00
|
|
|
\begin{funcdesc}{grey22grey}{image, width, height}
|
1994-01-01 21:22:07 -04:00
|
|
|
Convert a 2-bit greyscale image to an 8-bit greyscale image.
|
|
|
|
\end{funcdesc}
|