S. Allen Broughton and Kurt M. Bryan
Cover Images: The image below was used in preparing images for the the book cover. It shows approximations of a picture of lily pads at Kurt Bryan's home.

This book grew out of course notes for a course we alternately teach called Mathematical Methods of Image Processing. A brief description of the text from the Wiley site linked below follows:
For more detail on the book:
| S. Allen Broughton | brought@rose-hulman.edu | http://www.rose-hulman.edu/~brought/ |
| Kurt M. Bryan | bryan@rose-hulman.edu | http://www.rose-hulman.edu/~bryan/ |
Here are the Matlab routines from the text and a fee additional ones, as a zip file.
Here is a table with a link and description to each routine as a text file.
| Routine | Description | Matlab Toolbox Requirements |
| audiocompress.m | compress an audio signal | |
| blkdct2.m | Discrete Cosine Transform of an mxn image | Image processing toolbox |
| blkidct2.m | inverse Discrete Cosine Transform of an mxn image | Image processing toolbox |
| circconv.m | circular convolution by a causal filter | |
| crevconv.m | circular convolution by time-reversal of a causal filter | |
| circconv2.m | 2-D circular convolution by a causal filter | |
| crevconv2.m | 2-D circular convolution by time-reversal of a causal filter | |
| dyadicbiortho.m | compute analysis and synthesis scaling and wavelet functions on dyadic points for a biorthognal filter bank | |
| dyadicortho.m | compute analysis and synthesis scaling and wavelet functions on dyadic points for an orthogonal filter bank | |
| fullwave.m | recursive application of wave1.m, for full wavelet transform | |
| gausswindow.m | generate Gaussian window | |
| graymap.m | set up a greyscale colormap | |
| hammingwindow.m | generate Hamming window | |
| imwave1.m | do a single stage transform (circular convolution) on an image | |
| imwavefull.m | recursive application of imwave1.m, for full wavelet transform | |
| invfullwave.m | recursive application of invwave1.m, inverts fullwave.m | |
| invimwave1.m | invert imwave1 routine | |
| invimwavefull.m | inverts imwavefull() routine | |
| invwave1.m | inverts single-stage DWT command wave1() | |
| jpegdemo.m | simple JPEG compression demo | |
| jpegprogressive.m | simple JPEG compression/progressive transmission demo | |
| kdct.m | substitute for Matlab's dct() command | |
| kdct2d.m | substitute for Matlab's dct2() command | |
| kdownsample.m | downsample a row vector or matrix | |
| kidct.m | substitute for Matlab's idct() command | |
| kidct2d.m | substitute for Matlab's idct2() command | |
| kupsample.m | upsample a row or column vector | |
| rectwindow.m | generate rectangular window | |
| rgb2gray.m | convert rgb image to reasonable grayscale approximation | |
| spectro.m | computes a spectrogram for a vector | |
| triwindow.m | generate triangular window | |
| wave1.m | one pass forward wavelet transform on input array |
These MAtlab routines below have been used by the authors in teaching our course Mathematical Methods of Image Processing. They are not directly referenced in the book but were developed at the same time as the other routines.
| Routine | Description | Matlab Toolbox Requirements |
| dwt2demo.m | shows 1-stage decomposition of image into approximation and details | wavelet |
If you see an error or have question or comment on the book, please send email to either author.
| S. Allen Broughton | brought@rose-hulman.edu |
| Kurt M. Bryan | bryan@rose-hulman.edu |
Here are the errors we know about (thanks to students who used a prepublication final copy).
| location | error |
| p. 8, line 5 | "upper left corner" -> "lower right corner" |
| p. 19, equation 1.15 | remove second t in the left hand side of the equation |
| p. 30, Remark 1.9, line 3 | "some natural of measure of energy" -> "some natural measure of energy" |
| p. 61, Exercise 1.6.a, line 3 | "product vector" -> "produce vector" |
| p. 63, Exercise 1.4b | remove "a fraction" |
| p. 79, Remark 2.1, line 4 | "refereed" -> "referred" |
| p. 84 , line 12 | change "(|X-k2|+|Xk2)/N" to "(|X-k2|+|Xk2|)/N", (missing "|") |
| p. 96, 2.8.1, part 3 | "three (obviously) obviously largest frequencies" -> "three frequencies of (obviously) largest amplitude" |
| p. 96, 2.8.1, part 4 | "these largest frequencies" -> "frequencies of largest amplitude" |
| p. 100, second Matlab command | omit period at the end, not a part of the command |
| p.101, Exercise 2.4, line 1 | insert "the" after "denote" |
| p.116, DCT matrix at bottom of page | each "k" in the last row should be an "N" |
| p. 240, 6.7.2 | Second term on right side of equation (6.31) is missing a factor of 1/2 |
| p. 252, 6.8.1 part 3 | "Repeat steps 2 through 3" -> "Repeat steps 1 and 2" |
| p. 252, 6.8.1 part 4 | "Repeat steps 2 through 4" -> "Repeat steps 1 through 3" |
| p. 253, 6.8.2 part 3 | In last sentence of first paragraph, "image" should be "signal". Also, the parameter "perfl2" is (on a percentage basis) 100 MINUS the distortion. |
| p. 292, definition 7.32 | Property (1) should say that the union of the Vk is DENSE in L2 (not equals L2). |
| p. 297, displayed equation after 7.42 | Formula for entries of A should be an,k=sqrt(2)cm with m=2n-k, if matrix rows and columns indexed from 1. |
| p. 333, solution to 6.22 | second (ls)0 should be (ls)2 second (hs)0 should be (hs)2 |