jef@well.UUCP (Jef Poskanzer) (01/08/90)
This message is automatically posted once a week in an effort to cut down on the repetitive junk in comp.graphics. If you have answers to other frequently asked questions that you would like included in this posting, please send me mail. If you don't want to see this posting every week, please add the subject line to your kill file. Thank you. --- Jef Jef Poskanzer jef@well.sf.ca.us {ucbvax, apple, hplabs}!well!jef "...Is this a trick question?" - - - - - - - - - - Contents: 1) General references for graphics questions. 2) Drawing three-dimensional objects on a two-dimensional screen. 3) Quantizing 24 bit images down to 8 bits. 4) Converting color into grayscale. 5) Quantizing grayscale to black&white. 6) Rotating a raster image by an arbitrary angle. 7) Free image manipulation software. 1) General references for graphics questions: Fundamentals of Interactive Computer Graphics, J. D. Foley and A. van Dam, Addison Wesley, ISBN 0-201-14468-9 Principles of Interactive Computer Graphics 2nd Ed., Newman and Sproul, McGraw Hill, ISBN 0-07-046338-7 Procedural Elements for Computer Graphics, David F. Rogers, McGraw Hill, ISBN 0-07-053534-5 Mathematical Elements for Computer Graphics 2nd Ed., David F. Rogers and J. Alan Adams, McGraw Hill, ISBN 0-07-053530-2 Applied Concepts in Microcomputer Graphics, Bruce Artwick, Prentice-Hall, ISBN 0-13-039322-3 Digital Picture Processing, volumes 1 & 2, Rosenfield and Kak 2) Drawing three-dimensional objects on a two-dimensional screen. The simple answer is, you divide by the depth. For a more verbose explanation, see any of the above references. 3) Quantizing 24 bit images down to 8 bits. Find a copy of "Color Image Quantization for Frame Buffer Display" by Paul Heckbert, SIGGRAPH '82 Proceedings, page 297. There are other algorithms, but this one works well and is fairly simple. Implementations are included in most raster toolkits. 4) Converting color into grayscale. The NTSC formula is: luminosity = .299 red + .587 green + .114 blue 5) Quantizing grayscale to black&white. The only reference you need for this stuff is: Digital Halftoning, Robert Ulichney, MIT Press, ISBN 0-262-21009-6 6) Rotating a raster image by an arbitrary angle. The obvious but wrong method is to loop over the pixels in the source image, transform each coordinate, and copy the pixel to the destination. This is wrong because it leaves holes in the destination. Instead, loop over the pixels in the destination image, apply the *reverse* transformation to the coordinates, and copy that pixel from the source. This method is quite general, and can be used for any continuous 2-D mapping, not just rotation. You can add anti-aliasing by doing sub-pixel sampling. However, there is a much faster method, with antialising included. The method was originally created for the IM Raster Toolkit (see below); an implementation is also present in PBMPLUS. Reference: "A Fast Algorithm for Raster Rotation", by Alan Paeth (awpaeth@watcgl.waterloo.edu) Graphics Interface '86 (Vancouver). An article on the IM toolkit appears in the same journal. 7) Free image manipulation software. There are a number of toolkits for converting from one image format to another, doing simple image manipulations such as size scaling, plus the above-mentioned 24 -> 8, color -> gray, gray -> b&w conversions. Here are pointers to some of them: PBMPLUS, by Jef Poskanzer. Comprehensive format conversion and image manipulation package. The latest version is always available via anonymous FTP as expo.lcs.mit.edu:contrib/pbmplus.tar.Z and ftp.ee.lbl.gov:pbmplus.tar.Z. The version of 22nov89 (which currently is still the latest version, except for the one official patch so far) was posted to comp.sources.misc, and is therefore accessible via mail to one of the archive servers. This version is also available in the X.V11R4 release tape. A mailing list is available for users and developers - write to pbm-request@helios.ee.lbl.gov. IM Raster Toolkit, by Alan Paeth (awpaeth@watcgl.uwaterloo.ca). Provides a portable and efficient format and related toolkit. The format is versatile in supporting pixels of arbitrary channels, components, and bit precisions while allowing compression and machine byte-order independence. The kit contains more than 50 tools with extensive support of image manipulation, digital halftoning and format conversion. Previously distributed on tape c/o the University of Waterloo, an FTP version will appear in 1/90 (stay tuned). Utah RLE Toolkit. Conversion and manipulation package, similar to PBMPLUS. Available via FTP as cs.utah.edu:pub/toolkit-2.0.tar.Z and ucsd.edu:graphics/utah-raster-toolkit.tar.Z. Fuzzy Pixmap Manipulation, by Michael Mauldin <mlm@nl.cs.cmu.edu>. Conversion and manipulation package, similar to PBMPLUS. Available via FTP as nl.cs.cmu.edu:/usr/mlm/ftp/fbm.tar.Z and ucsd.edu:graphics/ fbm.tar.Z, and also in your nearest comp.sources.unix archive. Img-whatnot, by Paul Raveling <raveling@venera.isi.edu>. Reads and writes its own image format, displays on an X.V11 screen, and does some image manipulations. Available via FTP as expo.lcs.mit.edu:contrib/ Img.tar.Z, and venera.isi.edu:pub/Img.tar.Z along with a large collection of color images. Xim, by Philip R. Thompson. Reads and writes its own image format, displays on an X.V11 screen, and does some image manipulations. Available via FTP as expo.lcs.mit.edu:contrib/xim3c.tar.Z. xloadimage, by Jim Frost <madd@std.com>. Reads in images in various formats and displays them on an X.V11 screen. Available via FTP as expo.lcs.mit.edu:contrib/xloadimage.tar.Z, and in your nearest comp.sources.x archive. TIFF Software, by Sam Leffler <sam@okeeffe.berkeley.edu>. Nice portable library for reading and writing TIFF files, plus a few tools for manipulating them and reading other formats. Available via FTP as okeeffe.berkeley.edu:pub/tiff.tar.Z. ALV, a Sun-specific image toolkit. Version 2.0.6 posted to comp.sources.sun on 11dec89. Also available via email to alv-users-request@cs.bris.ac.uk. popi, an image manipulation language. Version 2.1 posted to comp.sources.misc on 12dec89. Don't forget to set binary mode when you FTP tar files. For you MILNET folks who still don't have name servers, the IP addresses are: expo.lcs.mit.edu 18.30.0.212 ftp.ee.lbl.gov 128.3.254.68 cs.utah.edu 128.110.4.21 NL.CS.CMU.EDU 128.2.222.56 venera.isi.edu 128.9.0.32 okeeffe.berkeley.edu 128.32.130.3 Please do *not* post or mail messages saying "I can't FTP, could someone mail this to me?" There are a number of sites that archive the sources newsgroups and make the contents available through an automated mail query system. If you bring one of these packages to someplace far away, such as the West Coast or Europe, consider making it available for FTP from your site and letting me know so I can add you to this posting.