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 lilly 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@rosehulman.edu  http://www.rosehulman.edu/~brought/ 
Kurt M. Bryan  bryan@rosehulman.edu  http://www.rosehulman.edu/~bryan/ 
Here are the Matlab routines from the text and a few 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  block Discrete Cosine Transform of an mxn image  Image processing toolbox 
blkidct2.m  inverse block Discrete Cosine Transform of an mxn image  Image processing toolbox 
circconv.m  circular convolution by a causal filter  
crevconv.m  circular convolution by timereversal of a causal filter  
circconv2.m  2D circular convolution by a causal filter  
crevconv2.m  2D circular convolution by timereversal 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 singlestage 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. In column labelled routine there may be an additional .pdf file which is the published output
Routine  Description  Matlab Toolbox Requirements and required mfiles 
RGBOpic.m  show red, blue, and green channels of an image.  
RGBOmanny.pdf  example of the above  RGBOpic.m 
noisyimage.m  show image before and after contamination with noise.  
energy.m  compute the normalized energy of a vector or matrix the sum of squares is divided by the size of the signal 

energyhist.m
energyhist.pdf 
show energy "histogram" as a function of radial frequency  energy.m 
DFT routines  
wave2d.m wave2dtrigcc.m wave2dtrigcs.m wave2dtrigss.m 
shows various pure 2D wave forms  
wave2dlband.m  shows a linear band of 2D exponential wave forms, both the real and imaginary part  
wave2dcband.m  shows a circular band of 2D exponential wave forms, both the real and imaginary part  
dft1demo1.m dft1demo1.pdf 
show pairs of signals and unshifted DFTs  
dft1demo2.m dft1demo2.pdf 
show pairs of signals and shifted DFTs  
dft1demo3.m  show how DFT captures frequency  
dft2demo1.m  show pairs of images and unshifted DFTs as well as log(1+DFT)  
dft2demo2.m  show pairs of images and shifted DFTs  
dft2demo3.m  brick wall low and high pass filters  
dft2demo4.m  show symmetrically replicated image and log of shifted DFT  
sliceswap.m  show that translation has no effect on DFT  
DCT routines  
analsynDCT.m  show analysis and synthesis waveforms for the DCT, show stepwise reconstruction of a signal  image 
blkgroupfreqs.m  compute block DCT, rearranging all coefficients of same frequency in different blocks into a single block 

blkfreqhist.m  display the histogram of a DCT coefficent in the block DCT of X, for a given frequency vector  
blkfreqcomp.m  compute block DCT preimage of a single frequency vector  image, blkidct2.m 
wave1dDCT.m  show complete family of 1D DCT waveforms  image 
wave2dDCT1.m  show complete family of 2D DCT waveforms  image 
wave2dDCT2.m  show complete family of 2D DCT waveforms in diagonal order  image 
DCTmanny.m
DCTmanny.pdf 
show block frequencies and histogram  image, blkdct2.m, blkgroupfreqs.m, , blkfreqhist.m 
mannybyfreqs.m  show the block components of a single frequency cycling through all frequencies using the mandrill image  image, blkdct2.m, blkfreqcomp.m 
Quantization, threshholding, and compression  
quantdequant.m  show quantization and dequantization of an image, compute distortion  energy.m 
clippic.m  clip out low energy frequencies of an image  energy.m 
ratedistortion.m  threshold a signal at various levels and show rate distortion curve  energy.m 
Convolution routines  
circconvs  Sparse circular 1D convolution by a causal anticausal filter pair  
circconvs2  Sparse circular 2D convolution by a causal anticausal filter pair  
conv1demo1  show a signal and convolution pair, and DFT of convolving mask  circconv.m 
conv1demo2  show operation of convolution on real signals for small real masks  circconv.m 
convomat.m  returns a matrix that performs circular convolution  
convtheorem  show 1D pure wave forms and their convolution with a mask, illustrating the eigenvalue property  circconv.m 
blurimage  blur an image and add noise  circconvs2.m 
edgedet  edge detection  circconv2.m 
DWT routines  
dwtmatrix.m  construct matrix effecting 1D DWT transform  wavelet 
analsynDWT.m  show analysis and synthesis waveforms for the DWT, show stepwise reconstruction of a signal  wavelet, dwtmatrix.m 
dwt1demo2.m  shows 1, 2 and 3 stage DWT multiresolution decomposition of a signal  wavelet 
dwt2demo.m  shows 1stage decomposition of image into approximation and details  wavelet 
Filter design  
tap4show.m  show one parameter family of orthogonal 4 tap filters  
tap4show1d.m  show one parameter family of orthogonal 4 tap filters and deomposition of a simple signal  wavelet 
tap4show2d.m  show one parameter family of orthogonal 4 tap filters and deomposition of an image  wavelet 
If you see an error or have question or comment on the book, please send email to either author.
S. Allen Broughton  brought@rosehulman.edu 
Kurt M. Bryan  bryan@rosehulman.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. 44 , last equation  m+h(k+1)/2 > m+h(k+1/2) 
p. 61, Exercise 1.6.a, line 3  "product vector" > "produce vector" 
p. 63, Exercise 1.14b  the shift should be theta/omega time units to the left (remove "a fraction"); alternatively the shift is a "fraction theta/(2*pi)" cycles 
p. 79, Remark 2.1, line 4  "refereed" > "referred" 
p. 84 , line 12  change "(X_{k}^{2}+X_{k}^{2})/N" to "(X_{k}^{2}+X_{k}^{2})/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. 252, 6.8.2 part 3  "Repeat steps 2 through 3" > "Repeat steps 1 through 2" 
p. 252, 6.8.2 part 4  "Repeat steps 2 through 4" > "Repeat steps 1 through 3" 
p. 292, equation (7.32)  The first part of the equation should say that the union is DENSE in L2, not equals L2 
p. 294, prior to (7.36)  right inequality for n should be weak (n can equal (N1)/2), if latter is an integer. 
p. 333, solution to 6.22  second (l_{s})_{0} should be (l_{s})_{2} second (h_{s})_{0} should be (h_{s})_{2} 