Image Processing with ImageJ book now available.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Image Processing with ImageJ book now available.

Mark Burge
Colleagues,

We are excited to announce that "Digital Image Processing: An Algorithmic
Introduction Using Java" is now available in English.  The English edition
is a revised and expanded translation of the second German edition of
"Digitale Bildverarbeitung: Eine Einfuhrung mit Java und ImageJ".  Complete
source code for all of the ImageJ plugins, our ImageJ tutorial, and other
resources are available from the associated website, www.imagingbook.com.

ISBN: 978-1-84628-379-6
Full color, hardback, 560 pages, 271 figures and 17 tables, Springer Verlag
2008
http://www.amazon.com/dp/1846283795/

This book provides a modern, self-contained, introduction to digital image
processing. We designed the book to be used by both learners desiring a firm
foundation to build on, and practitioners in search of critical analysis and
modern implementations of the most important techniques. This is the first
English edition of the original German language book which has been widely
used by:

   - Imaging professionals, scientists, and engineers who use image
   processing as a tool and wish to develop a deeper understanding and create
   custom solutions to imaging problems in their field.
   - IT professionals wanting a self study course featuring easily
   adaptable code and completely worked out examples enabling them to be
   productive right away.
   - Faculty and students desiring an example rich, introductory textbook
   suitable for an advanced undergraduate or graduate level course which
   features exercises, projects, and examples which have been honed during our
   years of experience teaching this material.  While we concentrate on
   practical applications and concrete implementations, we do so without
   glossing over the important formal details and mathematics necessary for a
   deeper understanding of the algorithms.

In preparing this text we started from the premise that simply creating a
recipe book of imaging solutions would not provide the deeper understanding
needed to apply these techniques to novel problems, so instead our solutions
are developed stepwise from three different perspectives: (a) in
mathematical form (b) as abstract, pseudo code algorithms and (c) as
complete Java programs. We use a common notation to intertwine all three
perspectives, providing multiple, but linked, views of the problem and its
solution.  Numerous complete Java implementations are provided, all of which
work within ImageJ, the programmer extensible imaging system developed,
maintained, and distributed by Wayne Rasband of the National Institutes of
Health (NIH).

Sincerely,

Wilhelm Burger and Mark Burge

1  Crunching Pixels
    1.1  Programming with Images
    1.2  Image Analysis and "Intelligent" Processing
2  Digital Images
    2.1  Types of Digital Images
    2.2  Image Acquisition
        2.2.1  The Pinhole Camera Model
        2.2.2  The "Thin" Lens
        2.2.3  Going Digital
        2.2.4  Image Size and Resolution
        2.2.5  Image Coordinate System
        2.2.6  Pixel Values
    2.3  Image File Formats
        2.3.1  Raster vs. Vector Images
        2.3.2  Tagged Image File Format (TIFF)
        2.3.3  Graphics Interchange Format (GIF)
        2.3.4  Portable Network Graphics (PNG)
        2.3.5  JPEG
        2.3.6  Windows Bitmap (BMP)
        2.3.7  Portable Bitmap Format (PBM)
        2.3.8  Additional File Formats
        2.3.9  Bits and Bytes
    2.4  Exercises
3  ImageJ
    3.1  Software for Digital Images
        3.1.1  Software for Image Manipulation
        3.1.2  Software for Image Processing
    3.2  Properties of ImageJ
        3.2.1  Features
        3.2.2  Available Tools
        3.2.3  ImageJ Plugins
        3.2.4  An Example Plugin "inverter"
    3.3  Additional Information about ImageJ and Java
        3.3.1  ImageJ Resources
        3.3.2  Programming with Java
    3.4  Exercises
4  Histograms
    4.1  What is a Histogram?
    4.2  What can be discovered from a Histogram?
        4.2.1  Brightness, Contrast, and Dynamic Range
        4.2.2  Image Defects
    4.3  Computing the Histogram
    4.4  Histograms for Images with more than 8 bits
        4.4.1  Binning
        4.4.2  Example
        4.4.3  Implementation
    4.5  Histograms of Color Images
        4.5.1  Intensity Histogram
        4.5.2  Histogram of Individual Color Channels
        4.5.3  Combined Color Histogram
    4.6  Cumulative Histogram
    4.7  Exercises
5  Point Operations
    5.1  Changing Pixel Intensity
        5.1.1  Contrast and Brightness
        5.1.2  Clamping
        5.1.3  Automatic Contrast Enhancement
        5.1.4  Inverting Images
        5.1.5  Thresholding
        5.1.6  Point Operations and Histograms
    5.2  Linear Histogram Equalization
        5.2.1  Histogram Specification
    5.3  Gamma Correction
        5.3.1  Why Gamma?
        5.3.2  The Gamma Function
        5.3.3  Real Gamma Values
        5.3.4  Applying Gamma Correction
        5.3.5  Implementation
        5.3.6  Gamma Function with Offset
    5.4  Point Operations in ImageJ
        5.4.1  Point Operations with Look-up Tables
        5.4.2  Standard Arithmetic Operations
        5.4.3  Point Operations with Multiple Images
        5.4.4  ImageJ Plugins for Multiple Images
    5.5  Exercises
6  Filters
    6.1  What is a Filter?
    6.2  Linear Filters
        6.2.1  The Filter Matrix
        6.2.2  Using Filters
        6.2.3  Computing Filter Operations
        6.2.4  Filter Plugin Example
        6.2.5  Integer Coefficients
        6.2.6  Arbitrary Size Filters
        6.2.7  Types of Linear Filters
    6.3  Formal Properties of Linear Filters
        6.3.1  Linear Convolution
        6.3.2  Properties of Linear Convolution
        6.3.3  Separability of Filters
        6.3.4  Impulse Response
    6.4  Non-linear Filters
        6.4.1  Minimum- and Maximum-Filter
        6.4.2  Median Filter
        6.4.3  The Weighted Median Filter
        6.4.4  Additional Non-linear Filters
    6.5  Filter Implementation
        6.5.1  Efficiency of Filter Programs
        6.5.2  Handling Image Borders
    6.6  Filter Operations in ImageJ
        6.6.1  Linear Filters
        6.6.2  Gaussian Filters
        6.6.3  Non-linear Filters
    6.7  Exercises
7  Edges and Contours
    7.1  How do Edges Arise
    7.2  Gradient Based Edge Detection
        7.2.1  Partial Derivatives and the Gradient
        7.2.2  Derivative Filters
    7.3  Filters for Edge Detection
        7.3.1  Prewitt and Sobel Operators
        7.3.2  Roberts Operator
        7.3.3  Compass Operators
        7.3.4  Edge Operators in ImageJ
    7.4  Additional Edge Operators
        7.4.1  Edge Detection with Second Derivatives
        7.4.2  Edges at Different Scales
        7.4.3  Canny Filter
    7.5  From Edges to Contours
        7.5.1  Contour Following
        7.5.2  Edge Images
    7.6  Edge Enhancement
        7.6.1  Edge Enhancement using the Laplace Filter
        7.6.2  Unsharp Masking
    7.7  Exercises
8  Finding Points of Interest
    8.1  Points of Interest
    8.2  Harris Corner Detector
        8.2.1  Local Structure Matrix
        8.2.2  Corner Response Function (CRF)
        8.2.3  Determining Corner Points
        8.2.4  Example
    8.3  Implementation
        8.3.1  Step 1 - Computing the Corner Response Function
        8.3.2  Step 2 - Determining the Corner Points
        8.3.3  Displaying the Corner Points
        8.3.4  Summary
    8.4  Exercises
9  Detecting Simple Curves
    9.1  Salient Structures
    9.2  Hough Transform
        9.2.1  Parameter Spaces
        9.2.2  Accumulator Array
        9.2.3  A Better Representation for Lines
    9.3  Implementing the Hough Transform
        9.3.1  Filling the Accumulator Array
        9.3.2  Analyzing the Accumulator Array
        9.3.3  Extensions to the Hough Transform
    9.4  Hough Transforms for Circles and Ellipses
        9.4.1  Circles and Arcs
        9.4.2  Ellipses
    9.5  Exercises
10  Morphological Filters
    10.1  Shrinking and Growing
        10.1.1  Image Neighborhoods
    10.2  Basic Morphological Operations
        10.2.1  The Structuring Element
        10.2.2  Point Sets
        10.2.3  Dilation
        10.2.4  Erosion
        10.2.5  Properties of Dilation and Erosion
        10.2.6  Design of Morphological Filters
        10.2.7  Example Usage: Outlining
    10.3  Composite Operations
        10.3.1  Opening
        10.3.2  Closing
        10.3.3  Properties of Opening and Closing
    10.4  Morphological Filters for Grayscale and Color Images
        10.4.1  Structuring Elements
        10.4.2  Grayscale Dilation and Erosion
        10.4.3  Grayscale Opening and Closing
    10.5  Implementing Morphological Filters
        10.5.1  Binary Images in ImageJ
        10.5.2  Dilation and Erosion
        10.5.3  Opening and Closing
        10.5.4  Outlining
        10.5.5  Morphological Operations in ImageJ
    10.6  Exercises
11  Regions in Binary Images
    11.1  Finding Image Regions
        11.1.1  Region Marking with Flood Filling
        11.1.2  Sequential Region Marking
        11.1.3  Region Marking - Summary
    11.2  Region Contours
        11.2.1  Internal and External Contours
        11.2.2  Combining Region Marking and Contour Finding
        11.2.3  Implementation
        11.2.4  Example
    11.3  Representing Image Regions
        11.3.1  Matrix Representation
        11.3.2  Run Length Encoding
        11.3.3  Chain Codes
    11.4  Properties of Binary Regions
        11.4.1  Shape Features
        11.4.2  Geometric Properties
        11.4.3  Statistical Shape Properties
        11.4.4  Moment Based Geometrical Properties
        11.4.5  Projections
        11.4.6  Topological Properties
    11.5  Exercises
12  Color Images
    12.1  RGB Color Images
        12.1.1  Organization of Color Images
        12.1.2  Color Images in ImageJ
    12.2  Color Spaces and Color Conversion
        12.2.1  Conversion to Grayscale
        12.2.2  Color Image De-saturation
        12.2.3  HSV/HSB and HLS Color Spaces
        12.2.4  TV Component Color Spaces - YUV, YIQ, YCbCr
        12.2.5  Color Space for Printing - CMY and CMYK
    12.3  Colorimetric Color Spaces
        12.3.1  CIE Color Space
        12.3.2  CIE L*a*b*
        12.3.3  sRGB
        12.3.4  Adobe RGB
        12.3.5  Colors and Color Spaces in Java
    12.4  Color Image Statistics
        12.4.1  How many Colors are in an Image?
        12.4.2  Histograms
    12.5  Color Quantization
        12.5.1  Scalar Color Quantization
        12.5.2  Vector Quantization
    12.6  Exercises
13  Introduction to Spectral Techniques
    13.1  The Fourier Transform
        13.1.1  Sine and Cosine Functions
        13.1.2  Representing Periodic Functions with Fourier Series
        13.1.3  The Fourier Transform
        13.1.4  Fourier Transform Pairs
        13.1.5  Important Properties of the Fourier Transform
    13.2  Transition to Discrete Data
        13.2.1  Sampling
        13.2.2  Discrete and Periodic Functions
    13.3  The Discrete Fourier Transform (DFT)
        13.3.1  Definition of the DFT
        13.3.2  Discrete Basis Functions
        13.3.3  Yet Again Aliasing!
        13.3.4  Units in Spatial and Spectral Spaces
        13.3.5  The Power Spectrum
    13.4  Implementation of the DFT
        13.4.1  Direct Implementation
        13.4.2  Fast Fourier Transform (FFT)
    13.5  Exercises
14  The Discrete Fourier Transform in 2D
    14.1  Definition of the 2D DFT
        14.1.1  2D Basis Functions
        14.1.2  Implementing the 2D DFT
    14.2  Representing the Fourier Transform in 2D
        14.2.1  Range of Values
        14.2.2  Centered Representation
    14.3  Frequency and Orientation in 2D
        14.3.1  Effective Frequency
        14.3.2  Frequency Limits and Aliasing in 2D
        14.3.3  Orientation
        14.3.4  Geometric Correction of the 2D Spectrum
        14.3.5  Effects of Periodicity
        14.3.6  Windowing
        14.3.7  Windowing Functions
    14.4  2D Fourier Transform Examples
    14.5  Properties of the DFT
        14.5.1  Linear Filter Operations in the Spectral Domain
        14.5.2  Linear Convolution and Correlation
        14.5.3  Inverse Filters
    14.6  Exercises
15  The Discrete Cosine Transform (DCT)
    15.1  One Dimensional DCT
        15.1.1  DCT Basis Functions
        15.1.2  Implementing the One Dimensional DCT
    15.2  Two Dimensional DCT
        15.2.1  Separability
        15.2.2  Example
    15.3  Additional Spectral Transformations
    15.4  Exercises
16  Geometrical Image Operations
    16.1  Coordinate Transformations in 2D
        16.1.1  Simple Transformations
        16.1.2  Homogeneous Coordinates
        16.1.3  Affine Transformations (Three Point Transformations)
        16.1.4  Projective Transformations (Four Point Transformations)
        16.1.5  Bilinear Transformations
        16.1.6  Additional Non-Linear Image Deformations
    16.2  Re-Sampling
        16.2.1  Source-to-Target Mapping
        16.2.2  Target-to-Source Mapping
    16.3  Interpolation
        16.3.1  Simple Interpolation Methods
        16.3.2  Ideal Interpolation
        16.3.3  Interpolation Using Convolution
        16.3.4  Cubic Interpolation
        16.3.5  Interpolation in 2D
        16.3.6  Aliasing
    16.4  Java Implementation
        16.4.1  Geometrical Transformations
        16.4.2  Pixel Interpolation
        16.4.3  Usage Example
    16.5  Exercises
17  Image Comparison
    17.1  Template Matching in Intensity Images
        17.1.1  Distance between Image Patterns
        17.1.2  Dealing with Rotation and Scale Changes
        17.1.3  Implementation
    17.2  Comparison of Binary Images
        17.2.1  Direct Comparison of Binary Images
        17.2.2  The Distance Transform
        17.2.3  Chamfer Matching
    17.3  Exercises
A  Mathematical Notation
    A.1  Often Used Symbols
    A.2  Complex Numbers C
    A.3  Algorithmic Complexity and *O* Notation
B  Java Notes
    B.1  Arithmetic
        B.1.1  Integer Division
        B.1.2  Modulus Operator
        B.1.3  Unsigned Bytes
        B.1.4  Mathematical Functions (Math-Class)
        B.1.5  Rounding
        B.1.6  Inverse Tangent Function
        B.1.7  Float and Double (Classes)
    B.2  Arrays in Java
        B.2.1  Creating Arrays
        B.2.2  Size of Arrays
        B.2.3  Access to Array Elements
        B.2.4  Two Dimensional Arrays
C  ImageJ Short Reference
    C.1  Installation and Setup
    C.2  ImageJ API
        C.2.1  Images (Package ij)
        C.2.2  Image Processing (Package ij.process)
        C.2.3  Plugins (Packages ij.plugin, ij.plugin.filter)
        C.2.4  GUI Classes (Package ij.gui)
        C.2.5  Window Management (Package ij)
        C.2.6  Utility Classes (Package ij)
        C.2.7  Input-Output (Package ij.io)
    C.3  Image and Image Stacks Creation
        C.3.1  ImagePlus (Class)
        C.3.2  ImageStack (Class)
        C.3.3  NewImage (Class)
        C.3.4  ImageProcessor (Class)
    C.4  Image Processor Creation
        C.4.1  ImageProcessor (Class)
        C.4.2  ByteProcessor (Class)
        C.4.3  ColorProcessor (Class)
        C.4.4  FloatProcessor (Class)
        C.4.5  ShortProcessor (Class)
    C.5  Image Parameters
        C.5.1  ImageProcessor (Class)
    C.6  Accessing Pixels
        C.6.1  ImageProcessor (Class)
    C.7  Converting from Images
        C.7.1  ImageProcessor (Class)
        C.7.2  ImagePlus, ImageConverter (Classes)
    C.8  Histogram and Image Statistics
        C.8.1  ImageProcessor (Class)
    C.9  Point Operations
        C.9.1  ImageProcessor (Class)
        C.9.2  Blitter (Interface)
    C.10  Filter
        C.10.1  ImageProcessor (Class)
    C.11  Geometrical Operations
        C.11.1  ImageProcessor (Class)
    C.12  Graphical Operations on Images
        C.12.1  ImageProcessor (Class)
    C.13  Displaying Images
        C.13.1  ImagePlus (Class)
    C.14  Image Stack Operations
        C.14.1  ImagePlus (Class)
        C.14.2  ImageStack (Class)
        C.14.3  Stack Example
    C.15  Region of Interest (ROI)
        C.15.1  ImageProcessor (Class)
        C.15.2  ImageStack (Class)
        C.15.3  ImagePlus (Class)
        C.15.4  Roi, Line, OvalRoi, PolygonRoi (Classes)
    C.16  Image Properties
        C.16.1  ImagePlus (Class)
    C.17  Interaction
        C.17.1  IJ (Class)
        C.17.2  ImageProcessor (Class)
        C.17.3  GenericDialog (Class)
    C.18  Plugins
        C.18.1  PlugIn(Interface)
        C.18.2  PlugInFilter(Interface)
        C.18.3  Executing Plugins
    C.19  Window Management
        C.19.1  WindowManager (Class)
    C.20  Additional Functions
        C.20.1  ImagePlus (Class)
        C.20.2  IJ (Class)
D  Source Code
    D.1  Harris Corner Detector
        D.1.1  File Corner.java
        D.1.2  File HarrisCornerDetector.java
        D.1.3  File HarrisCornerPlugin_.java
    D.2  Combined Region Marking and Contour Following
        D.2.1  File ContourTracingPlugin_.java
        D.2.2  File Node.java
        D.2.3  File Contour.java
        D.2.4  File OuterContour.java
        D.2.5  File InnerContour.java
        D.2.6  File ContourSet.java
        D.2.7  File ContourTracer.java
        D.2.8  File ContourOverlay.java
Reply | Threaded
Open this post in threaded view
|

Re: Image Processing with ImageJ book now available.

dksamuel
Sir, thank you so much, Samuel, India

On Dec 28, 2007 9:21 AM, Mark Burge <[hidden email]> wrote:

> Colleagues,
>
> We are excited to announce that "Digital Image Processing: An Algorithmic
> Introduction Using Java" is now available in English.  The English edition
> is a revised and expanded translation of the second German edition of
> "Digitale Bildverarbeitung: Eine Einfuhrung mit Java und ImageJ".
>  Complete
> source code for all of the ImageJ plugins, our ImageJ tutorial, and other
> resources are available from the associated website, www.imagingbook.com.
>
> ISBN: 978-1-84628-379-6
> Full color, hardback, 560 pages, 271 figures and 17 tables, Springer
> Verlag
> 2008
> http://www.amazon.com/dp/1846283795/
>
> This book provides a modern, self-contained, introduction to digital image
> processing. We designed the book to be used by both learners desiring a
> firm
> foundation to build on, and practitioners in search of critical analysis
> and
> modern implementations of the most important techniques. This is the first
> English edition of the original German language book which has been widely
> used by:
>
>   - Imaging professionals, scientists, and engineers who use image
>   processing as a tool and wish to develop a deeper understanding and
> create
>   custom solutions to imaging problems in their field.
>   - IT professionals wanting a self study course featuring easily
>   adaptable code and completely worked out examples enabling them to be
>   productive right away.
>   - Faculty and students desiring an example rich, introductory textbook
>   suitable for an advanced undergraduate or graduate level course which
>   features exercises, projects, and examples which have been honed during
> our
>   years of experience teaching this material.  While we concentrate on
>   practical applications and concrete implementations, we do so without
>   glossing over the important formal details and mathematics necessary for
> a
>   deeper understanding of the algorithms.
>
> In preparing this text we started from the premise that simply creating a
> recipe book of imaging solutions would not provide the deeper
> understanding
> needed to apply these techniques to novel problems, so instead our
> solutions
> are developed stepwise from three different perspectives: (a) in
> mathematical form (b) as abstract, pseudo code algorithms and (c) as
> complete Java programs. We use a common notation to intertwine all three
> perspectives, providing multiple, but linked, views of the problem and its
> solution.  Numerous complete Java implementations are provided, all of
> which
> work within ImageJ, the programmer extensible imaging system developed,
> maintained, and distributed by Wayne Rasband of the National Institutes of
> Health (NIH).
>
> Sincerely,
>
> Wilhelm Burger and Mark Burge
>
> 1  Crunching Pixels
>    1.1  Programming with Images
>    1.2  Image Analysis and "Intelligent" Processing
> 2  Digital Images
>    2.1  Types of Digital Images
>    2.2  Image Acquisition
>        2.2.1  The Pinhole Camera Model
>        2.2.2  The "Thin" Lens
>        2.2.3  Going Digital
>        2.2.4  Image Size and Resolution
>        2.2.5  Image Coordinate System
>        2.2.6  Pixel Values
>    2.3  Image File Formats
>        2.3.1  Raster vs. Vector Images
>        2.3.2  Tagged Image File Format (TIFF)
>        2.3.3  Graphics Interchange Format (GIF)
>        2.3.4  Portable Network Graphics (PNG)
>        2.3.5  JPEG
>        2.3.6  Windows Bitmap (BMP)
>        2.3.7  Portable Bitmap Format (PBM)
>        2.3.8  Additional File Formats
>        2.3.9  Bits and Bytes
>    2.4  Exercises
> 3  ImageJ
>    3.1  Software for Digital Images
>        3.1.1  Software for Image Manipulation
>        3.1.2  Software for Image Processing
>    3.2  Properties of ImageJ
>        3.2.1  Features
>        3.2.2  Available Tools
>        3.2.3  ImageJ Plugins
>        3.2.4  An Example Plugin "inverter"
>    3.3  Additional Information about ImageJ and Java
>        3.3.1  ImageJ Resources
>        3.3.2  Programming with Java
>    3.4  Exercises
> 4  Histograms
>    4.1  What is a Histogram?
>    4.2  What can be discovered from a Histogram?
>        4.2.1  Brightness, Contrast, and Dynamic Range
>        4.2.2  Image Defects
>    4.3  Computing the Histogram
>    4.4  Histograms for Images with more than 8 bits
>        4.4.1  Binning
>        4.4.2  Example
>        4.4.3  Implementation
>    4.5  Histograms of Color Images
>        4.5.1  Intensity Histogram
>        4.5.2  Histogram of Individual Color Channels
>        4.5.3  Combined Color Histogram
>    4.6  Cumulative Histogram
>    4.7  Exercises
> 5  Point Operations
>    5.1  Changing Pixel Intensity
>        5.1.1  Contrast and Brightness
>        5.1.2  Clamping
>        5.1.3  Automatic Contrast Enhancement
>        5.1.4  Inverting Images
>        5.1.5  Thresholding
>        5.1.6  Point Operations and Histograms
>    5.2  Linear Histogram Equalization
>        5.2.1  Histogram Specification
>    5.3  Gamma Correction
>        5.3.1  Why Gamma?
>        5.3.2  The Gamma Function
>        5.3.3  Real Gamma Values
>        5.3.4  Applying Gamma Correction
>        5.3.5  Implementation
>        5.3.6  Gamma Function with Offset
>    5.4  Point Operations in ImageJ
>        5.4.1  Point Operations with Look-up Tables
>        5.4.2  Standard Arithmetic Operations
>        5.4.3  Point Operations with Multiple Images
>        5.4.4  ImageJ Plugins for Multiple Images
>    5.5  Exercises
> 6  Filters
>    6.1  What is a Filter?
>    6.2  Linear Filters
>        6.2.1  The Filter Matrix
>        6.2.2  Using Filters
>        6.2.3  Computing Filter Operations
>        6.2.4  Filter Plugin Example
>        6.2.5  Integer Coefficients
>        6.2.6  Arbitrary Size Filters
>        6.2.7  Types of Linear Filters
>    6.3  Formal Properties of Linear Filters
>        6.3.1  Linear Convolution
>        6.3.2  Properties of Linear Convolution
>        6.3.3  Separability of Filters
>        6.3.4  Impulse Response
>    6.4  Non-linear Filters
>        6.4.1  Minimum- and Maximum-Filter
>        6.4.2  Median Filter
>        6.4.3  The Weighted Median Filter
>        6.4.4  Additional Non-linear Filters
>    6.5  Filter Implementation
>        6.5.1  Efficiency of Filter Programs
>        6.5.2  Handling Image Borders
>    6.6  Filter Operations in ImageJ
>        6.6.1  Linear Filters
>        6.6.2  Gaussian Filters
>        6.6.3  Non-linear Filters
>    6.7  Exercises
> 7  Edges and Contours
>    7.1  How do Edges Arise
>    7.2  Gradient Based Edge Detection
>        7.2.1  Partial Derivatives and the Gradient
>        7.2.2  Derivative Filters
>    7.3  Filters for Edge Detection
>        7.3.1  Prewitt and Sobel Operators
>        7.3.2  Roberts Operator
>        7.3.3  Compass Operators
>        7.3.4  Edge Operators in ImageJ
>    7.4  Additional Edge Operators
>        7.4.1  Edge Detection with Second Derivatives
>        7.4.2  Edges at Different Scales
>        7.4.3  Canny Filter
>    7.5  From Edges to Contours
>        7.5.1  Contour Following
>        7.5.2  Edge Images
>    7.6  Edge Enhancement
>        7.6.1  Edge Enhancement using the Laplace Filter
>        7.6.2  Unsharp Masking
>    7.7  Exercises
> 8  Finding Points of Interest
>    8.1  Points of Interest
>    8.2  Harris Corner Detector
>        8.2.1  Local Structure Matrix
>        8.2.2  Corner Response Function (CRF)
>        8.2.3  Determining Corner Points
>        8.2.4  Example
>    8.3  Implementation
>        8.3.1  Step 1 - Computing the Corner Response Function
>        8.3.2  Step 2 - Determining the Corner Points
>        8.3.3  Displaying the Corner Points
>        8.3.4  Summary
>    8.4  Exercises
> 9  Detecting Simple Curves
>    9.1  Salient Structures
>    9.2  Hough Transform
>        9.2.1  Parameter Spaces
>        9.2.2  Accumulator Array
>        9.2.3  A Better Representation for Lines
>    9.3  Implementing the Hough Transform
>        9.3.1  Filling the Accumulator Array
>        9.3.2  Analyzing the Accumulator Array
>        9.3.3  Extensions to the Hough Transform
>    9.4  Hough Transforms for Circles and Ellipses
>        9.4.1  Circles and Arcs
>        9.4.2  Ellipses
>    9.5  Exercises
> 10  Morphological Filters
>    10.1  Shrinking and Growing
>        10.1.1  Image Neighborhoods
>    10.2  Basic Morphological Operations
>        10.2.1  The Structuring Element
>        10.2.2  Point Sets
>        10.2.3  Dilation
>        10.2.4  Erosion
>        10.2.5  Properties of Dilation and Erosion
>        10.2.6  Design of Morphological Filters
>        10.2.7  Example Usage: Outlining
>    10.3  Composite Operations
>        10.3.1  Opening
>        10.3.2  Closing
>        10.3.3  Properties of Opening and Closing
>    10.4  Morphological Filters for Grayscale and Color Images
>        10.4.1  Structuring Elements
>        10.4.2  Grayscale Dilation and Erosion
>        10.4.3  Grayscale Opening and Closing
>    10.5  Implementing Morphological Filters
>        10.5.1  Binary Images in ImageJ
>        10.5.2  Dilation and Erosion
>        10.5.3  Opening and Closing
>        10.5.4  Outlining
>        10.5.5  Morphological Operations in ImageJ
>    10.6  Exercises
> 11  Regions in Binary Images
>    11.1  Finding Image Regions
>        11.1.1  Region Marking with Flood Filling
>        11.1.2  Sequential Region Marking
>        11.1.3  Region Marking - Summary
>    11.2  Region Contours
>        11.2.1  Internal and External Contours
>        11.2.2  Combining Region Marking and Contour Finding
>        11.2.3  Implementation
>        11.2.4  Example
>    11.3  Representing Image Regions
>        11.3.1  Matrix Representation
>        11.3.2  Run Length Encoding
>        11.3.3  Chain Codes
>    11.4  Properties of Binary Regions
>        11.4.1  Shape Features
>        11.4.2  Geometric Properties
>        11.4.3  Statistical Shape Properties
>        11.4.4  Moment Based Geometrical Properties
>        11.4.5  Projections
>        11.4.6  Topological Properties
>    11.5  Exercises
> 12  Color Images
>    12.1  RGB Color Images
>        12.1.1  Organization of Color Images
>        12.1.2  Color Images in ImageJ
>    12.2  Color Spaces and Color Conversion
>        12.2.1  Conversion to Grayscale
>        12.2.2  Color Image De-saturation
>        12.2.3  HSV/HSB and HLS Color Spaces
>        12.2.4  TV Component Color Spaces - YUV, YIQ, YCbCr
>        12.2.5  Color Space for Printing - CMY and CMYK
>    12.3  Colorimetric Color Spaces
>        12.3.1  CIE Color Space
>        12.3.2  CIE L*a*b*
>        12.3.3  sRGB
>        12.3.4  Adobe RGB
>        12.3.5  Colors and Color Spaces in Java
>    12.4  Color Image Statistics
>        12.4.1  How many Colors are in an Image?
>        12.4.2  Histograms
>    12.5  Color Quantization
>        12.5.1  Scalar Color Quantization
>        12.5.2  Vector Quantization
>    12.6  Exercises
> 13  Introduction to Spectral Techniques
>    13.1  The Fourier Transform
>        13.1.1  Sine and Cosine Functions
>        13.1.2  Representing Periodic Functions with Fourier Series
>        13.1.3  The Fourier Transform
>        13.1.4  Fourier Transform Pairs
>        13.1.5  Important Properties of the Fourier Transform
>    13.2  Transition to Discrete Data
>        13.2.1  Sampling
>        13.2.2  Discrete and Periodic Functions
>    13.3  The Discrete Fourier Transform (DFT)
>        13.3.1  Definition of the DFT
>        13.3.2  Discrete Basis Functions
>        13.3.3  Yet Again Aliasing!
>        13.3.4  Units in Spatial and Spectral Spaces
>        13.3.5  The Power Spectrum
>    13.4  Implementation of the DFT
>        13.4.1  Direct Implementation
>        13.4.2  Fast Fourier Transform (FFT)
>    13.5  Exercises
> 14  The Discrete Fourier Transform in 2D
>    14.1  Definition of the 2D DFT
>        14.1.1  2D Basis Functions
>        14.1.2  Implementing the 2D DFT
>    14.2  Representing the Fourier Transform in 2D
>        14.2.1  Range of Values
>        14.2.2  Centered Representation
>    14.3  Frequency and Orientation in 2D
>        14.3.1  Effective Frequency
>        14.3.2  Frequency Limits and Aliasing in 2D
>        14.3.3  Orientation
>        14.3.4  Geometric Correction of the 2D Spectrum
>        14.3.5  Effects of Periodicity
>        14.3.6  Windowing
>        14.3.7  Windowing Functions
>    14.4  2D Fourier Transform Examples
>    14.5  Properties of the DFT
>        14.5.1  Linear Filter Operations in the Spectral Domain
>        14.5.2  Linear Convolution and Correlation
>        14.5.3  Inverse Filters
>    14.6  Exercises
> 15  The Discrete Cosine Transform (DCT)
>    15.1  One Dimensional DCT
>        15.1.1  DCT Basis Functions
>        15.1.2  Implementing the One Dimensional DCT
>    15.2  Two Dimensional DCT
>        15.2.1  Separability
>        15.2.2  Example
>    15.3  Additional Spectral Transformations
>    15.4  Exercises
> 16  Geometrical Image Operations
>    16.1  Coordinate Transformations in 2D
>        16.1.1  Simple Transformations
>        16.1.2  Homogeneous Coordinates
>        16.1.3  Affine Transformations (Three Point Transformations)
>        16.1.4  Projective Transformations (Four Point Transformations)
>        16.1.5  Bilinear Transformations
>        16.1.6  Additional Non-Linear Image Deformations
>    16.2  Re-Sampling
>        16.2.1  Source-to-Target Mapping
>        16.2.2  Target-to-Source Mapping
>    16.3  Interpolation
>        16.3.1  Simple Interpolation Methods
>        16.3.2  Ideal Interpolation
>        16.3.3  Interpolation Using Convolution
>        16.3.4  Cubic Interpolation
>        16.3.5  Interpolation in 2D
>        16.3.6  Aliasing
>    16.4  Java Implementation
>        16.4.1  Geometrical Transformations
>        16.4.2  Pixel Interpolation
>        16.4.3  Usage Example
>    16.5  Exercises
> 17  Image Comparison
>    17.1  Template Matching in Intensity Images
>        17.1.1  Distance between Image Patterns
>        17.1.2  Dealing with Rotation and Scale Changes
>        17.1.3  Implementation
>    17.2  Comparison of Binary Images
>        17.2.1  Direct Comparison of Binary Images
>        17.2.2  The Distance Transform
>        17.2.3  Chamfer Matching
>    17.3  Exercises
> A  Mathematical Notation
>    A.1  Often Used Symbols
>    A.2  Complex Numbers C
>    A.3  Algorithmic Complexity and *O* Notation
> B  Java Notes
>    B.1  Arithmetic
>        B.1.1  Integer Division
>        B.1.2  Modulus Operator
>        B.1.3  Unsigned Bytes
>        B.1.4  Mathematical Functions (Math-Class)
>        B.1.5  Rounding
>        B.1.6  Inverse Tangent Function
>        B.1.7  Float and Double (Classes)
>    B.2  Arrays in Java
>        B.2.1  Creating Arrays
>        B.2.2  Size of Arrays
>        B.2.3  Access to Array Elements
>        B.2.4  Two Dimensional Arrays
> C  ImageJ Short Reference
>    C.1  Installation and Setup
>    C.2  ImageJ API
>        C.2.1  Images (Package ij)
>        C.2.2  Image Processing (Package ij.process)
>        C.2.3  Plugins (Packages ij.plugin, ij.plugin.filter)
>        C.2.4  GUI Classes (Package ij.gui)
>        C.2.5  Window Management (Package ij)
>        C.2.6  Utility Classes (Package ij)
>        C.2.7  Input-Output (Package ij.io)
>    C.3  Image and Image Stacks Creation
>        C.3.1  ImagePlus (Class)
>        C.3.2  ImageStack (Class)
>        C.3.3  NewImage (Class)
>        C.3.4  ImageProcessor (Class)
>    C.4  Image Processor Creation
>        C.4.1  ImageProcessor (Class)
>        C.4.2  ByteProcessor (Class)
>        C.4.3  ColorProcessor (Class)
>        C.4.4  FloatProcessor (Class)
>        C.4.5  ShortProcessor (Class)
>    C.5  Image Parameters
>        C.5.1  ImageProcessor (Class)
>    C.6  Accessing Pixels
>        C.6.1  ImageProcessor (Class)
>    C.7  Converting from Images
>        C.7.1  ImageProcessor (Class)
>        C.7.2  ImagePlus, ImageConverter (Classes)
>    C.8  Histogram and Image Statistics
>        C.8.1  ImageProcessor (Class)
>    C.9  Point Operations
>        C.9.1  ImageProcessor (Class)
>        C.9.2  Blitter (Interface)
>    C.10  Filter
>        C.10.1  ImageProcessor (Class)
>    C.11  Geometrical Operations
>        C.11.1  ImageProcessor (Class)
>    C.12  Graphical Operations on Images
>        C.12.1  ImageProcessor (Class)
>    C.13  Displaying Images
>        C.13.1  ImagePlus (Class)
>    C.14  Image Stack Operations
>        C.14.1  ImagePlus (Class)
>        C.14.2  ImageStack (Class)
>        C.14.3  Stack Example
>    C.15  Region of Interest (ROI)
>        C.15.1  ImageProcessor (Class)
>        C.15.2  ImageStack (Class)
>        C.15.3  ImagePlus (Class)
>        C.15.4  Roi, Line, OvalRoi, PolygonRoi (Classes)
>    C.16  Image Properties
>        C.16.1  ImagePlus (Class)
>    C.17  Interaction
>        C.17.1  IJ (Class)
>        C.17.2  ImageProcessor (Class)
>        C.17.3  GenericDialog (Class)
>    C.18  Plugins
>        C.18.1  PlugIn(Interface)
>        C.18.2  PlugInFilter(Interface)
>        C.18.3  Executing Plugins
>    C.19  Window Management
>        C.19.1  WindowManager (Class)
>    C.20  Additional Functions
>        C.20.1  ImagePlus (Class)
>        C.20.2  IJ (Class)
> D  Source Code
>    D.1  Harris Corner Detector
>        D.1.1  File Corner.java
>        D.1.2  File HarrisCornerDetector.java
>        D.1.3  File HarrisCornerPlugin_.java
>    D.2  Combined Region Marking and Contour Following
>        D.2.1  File ContourTracingPlugin_.java
>        D.2.2  File Node.java
>        D.2.3  File Contour.java
>        D.2.4  File OuterContour.java
>        D.2.5  File InnerContour.java
>        D.2.6  File ContourSet.java
>        D.2.7  File ContourTracer.java
>        D.2.8  File ContourOverlay.java
>
Reply | Threaded
Open this post in threaded view
|

Re: Image Processing with ImageJ book now available.

Kenneth Sloan-2
In reply to this post by Mark Burge
right - it's in my bookstore now, and Amazon's pre-ordered copy  
arrived a week of so ago.  I'll sell a few for you next semester...

Before I go looking for it - do you have any PowerPoint lecture  
slides on the website?

On Dec 27, 2007, at 9:51 PM, Mark Burge wrote:

> Colleagues,
>
> We are excited to announce that "Digital Image Processing: An  
> Algorithmic
> Introduction Using Java" is now available in English.  The English  
> edition
> is a revised and expanded translation of the second German edition of
> "Digitale Bildverarbeitung: Eine Einfuhrung mit Java und ImageJ".  
> Complete
> source code for all of the ImageJ plugins, our ImageJ tutorial, and  
> other
> resources are available from the associated website,  
> www.imagingbook.com.
>
> ISBN: 978-1-84628-379-6
> Full color, hardback, 560 pages, 271 figures and 17 tables,  
> Springer Verlag
> 2008
> http://www.amazon.com/dp/1846283795/
>
> This book provides a modern, self-contained, introduction to  
> digital image
> processing. We designed the book to be used by both learners  
> desiring a firm
> foundation to build on, and practitioners in search of critical  
> analysis and
> modern implementations of the most important techniques. This is  
> the first
> English edition of the original German language book which has been  
> widely
> used by:
>
>    - Imaging professionals, scientists, and engineers who use image
>    processing as a tool and wish to develop a deeper understanding  
> and create
>    custom solutions to imaging problems in their field.
>    - IT professionals wanting a self study course featuring easily
>    adaptable code and completely worked out examples enabling them  
> to be
>    productive right away.
>    - Faculty and students desiring an example rich, introductory  
> textbook
>    suitable for an advanced undergraduate or graduate level course  
> which
>    features exercises, projects, and examples which have been honed  
> during our
>    years of experience teaching this material.  While we  
> concentrate on
>    practical applications and concrete implementations, we do so  
> without
>    glossing over the important formal details and mathematics  
> necessary for a
>    deeper understanding of the algorithms.
>
> In preparing this text we started from the premise that simply  
> creating a
> recipe book of imaging solutions would not provide the deeper  
> understanding
> needed to apply these techniques to novel problems, so instead our  
> solutions
> are developed stepwise from three different perspectives: (a) in
> mathematical form (b) as abstract, pseudo code algorithms and (c) as
> complete Java programs. We use a common notation to intertwine all  
> three
> perspectives, providing multiple, but linked, views of the problem  
> and its
> solution.  Numerous complete Java implementations are provided, all  
> of which
> work within ImageJ, the programmer extensible imaging system  
> developed,
> maintained, and distributed by Wayne Rasband of the National  
> Institutes of
> Health (NIH).
>
> Sincerely,
>
> Wilhelm Burger and Mark Burge
>
> 1  Crunching Pixels
>     1.1  Programming with Images
>     1.2  Image Analysis and "Intelligent" Processing
> 2  Digital Images
>     2.1  Types of Digital Images
>     2.2  Image Acquisition
>         2.2.1  The Pinhole Camera Model
>         2.2.2  The "Thin" Lens
>         2.2.3  Going Digital
>         2.2.4  Image Size and Resolution
>         2.2.5  Image Coordinate System
>         2.2.6  Pixel Values
>     2.3  Image File Formats
>         2.3.1  Raster vs. Vector Images
>         2.3.2  Tagged Image File Format (TIFF)
>         2.3.3  Graphics Interchange Format (GIF)
>         2.3.4  Portable Network Graphics (PNG)
>         2.3.5  JPEG
>         2.3.6  Windows Bitmap (BMP)
>         2.3.7  Portable Bitmap Format (PBM)
>         2.3.8  Additional File Formats
>         2.3.9  Bits and Bytes
>     2.4  Exercises
> 3  ImageJ
>     3.1  Software for Digital Images
>         3.1.1  Software for Image Manipulation
>         3.1.2  Software for Image Processing
>     3.2  Properties of ImageJ
>         3.2.1  Features
>         3.2.2  Available Tools
>         3.2.3  ImageJ Plugins
>         3.2.4  An Example Plugin "inverter"
>     3.3  Additional Information about ImageJ and Java
>         3.3.1  ImageJ Resources
>         3.3.2  Programming with Java
>     3.4  Exercises
> 4  Histograms
>     4.1  What is a Histogram?
>     4.2  What can be discovered from a Histogram?
>         4.2.1  Brightness, Contrast, and Dynamic Range
>         4.2.2  Image Defects
>     4.3  Computing the Histogram
>     4.4  Histograms for Images with more than 8 bits
>         4.4.1  Binning
>         4.4.2  Example
>         4.4.3  Implementation
>     4.5  Histograms of Color Images
>         4.5.1  Intensity Histogram
>         4.5.2  Histogram of Individual Color Channels
>         4.5.3  Combined Color Histogram
>     4.6  Cumulative Histogram
>     4.7  Exercises
> 5  Point Operations
>     5.1  Changing Pixel Intensity
>         5.1.1  Contrast and Brightness
>         5.1.2  Clamping
>         5.1.3  Automatic Contrast Enhancement
>         5.1.4  Inverting Images
>         5.1.5  Thresholding
>         5.1.6  Point Operations and Histograms
>     5.2  Linear Histogram Equalization
>         5.2.1  Histogram Specification
>     5.3  Gamma Correction
>         5.3.1  Why Gamma?
>         5.3.2  The Gamma Function
>         5.3.3  Real Gamma Values
>         5.3.4  Applying Gamma Correction
>         5.3.5  Implementation
>         5.3.6  Gamma Function with Offset
>     5.4  Point Operations in ImageJ
>         5.4.1  Point Operations with Look-up Tables
>         5.4.2  Standard Arithmetic Operations
>         5.4.3  Point Operations with Multiple Images
>         5.4.4  ImageJ Plugins for Multiple Images
>     5.5  Exercises
> 6  Filters
>     6.1  What is a Filter?
>     6.2  Linear Filters
>         6.2.1  The Filter Matrix
>         6.2.2  Using Filters
>         6.2.3  Computing Filter Operations
>         6.2.4  Filter Plugin Example
>         6.2.5  Integer Coefficients
>         6.2.6  Arbitrary Size Filters
>         6.2.7  Types of Linear Filters
>     6.3  Formal Properties of Linear Filters
>         6.3.1  Linear Convolution
>         6.3.2  Properties of Linear Convolution
>         6.3.3  Separability of Filters
>         6.3.4  Impulse Response
>     6.4  Non-linear Filters
>         6.4.1  Minimum- and Maximum-Filter
>         6.4.2  Median Filter
>         6.4.3  The Weighted Median Filter
>         6.4.4  Additional Non-linear Filters
>     6.5  Filter Implementation
>         6.5.1  Efficiency of Filter Programs
>         6.5.2  Handling Image Borders
>     6.6  Filter Operations in ImageJ
>         6.6.1  Linear Filters
>         6.6.2  Gaussian Filters
>         6.6.3  Non-linear Filters
>     6.7  Exercises
> 7  Edges and Contours
>     7.1  How do Edges Arise
>     7.2  Gradient Based Edge Detection
>         7.2.1  Partial Derivatives and the Gradient
>         7.2.2  Derivative Filters
>     7.3  Filters for Edge Detection
>         7.3.1  Prewitt and Sobel Operators
>         7.3.2  Roberts Operator
>         7.3.3  Compass Operators
>         7.3.4  Edge Operators in ImageJ
>     7.4  Additional Edge Operators
>         7.4.1  Edge Detection with Second Derivatives
>         7.4.2  Edges at Different Scales
>         7.4.3  Canny Filter
>     7.5  From Edges to Contours
>         7.5.1  Contour Following
>         7.5.2  Edge Images
>     7.6  Edge Enhancement
>         7.6.1  Edge Enhancement using the Laplace Filter
>         7.6.2  Unsharp Masking
>     7.7  Exercises
> 8  Finding Points of Interest
>     8.1  Points of Interest
>     8.2  Harris Corner Detector
>         8.2.1  Local Structure Matrix
>         8.2.2  Corner Response Function (CRF)
>         8.2.3  Determining Corner Points
>         8.2.4  Example
>     8.3  Implementation
>         8.3.1  Step 1 - Computing the Corner Response Function
>         8.3.2  Step 2 - Determining the Corner Points
>         8.3.3  Displaying the Corner Points
>         8.3.4  Summary
>     8.4  Exercises
> 9  Detecting Simple Curves
>     9.1  Salient Structures
>     9.2  Hough Transform
>         9.2.1  Parameter Spaces
>         9.2.2  Accumulator Array
>         9.2.3  A Better Representation for Lines
>     9.3  Implementing the Hough Transform
>         9.3.1  Filling the Accumulator Array
>         9.3.2  Analyzing the Accumulator Array
>         9.3.3  Extensions to the Hough Transform
>     9.4  Hough Transforms for Circles and Ellipses
>         9.4.1  Circles and Arcs
>         9.4.2  Ellipses
>     9.5  Exercises
> 10  Morphological Filters
>     10.1  Shrinking and Growing
>         10.1.1  Image Neighborhoods
>     10.2  Basic Morphological Operations
>         10.2.1  The Structuring Element
>         10.2.2  Point Sets
>         10.2.3  Dilation
>         10.2.4  Erosion
>         10.2.5  Properties of Dilation and Erosion
>         10.2.6  Design of Morphological Filters
>         10.2.7  Example Usage: Outlining
>     10.3  Composite Operations
>         10.3.1  Opening
>         10.3.2  Closing
>         10.3.3  Properties of Opening and Closing
>     10.4  Morphological Filters for Grayscale and Color Images
>         10.4.1  Structuring Elements
>         10.4.2  Grayscale Dilation and Erosion
>         10.4.3  Grayscale Opening and Closing
>     10.5  Implementing Morphological Filters
>         10.5.1  Binary Images in ImageJ
>         10.5.2  Dilation and Erosion
>         10.5.3  Opening and Closing
>         10.5.4  Outlining
>         10.5.5  Morphological Operations in ImageJ
>     10.6  Exercises
> 11  Regions in Binary Images
>     11.1  Finding Image Regions
>         11.1.1  Region Marking with Flood Filling
>         11.1.2  Sequential Region Marking
>         11.1.3  Region Marking - Summary
>     11.2  Region Contours
>         11.2.1  Internal and External Contours
>         11.2.2  Combining Region Marking and Contour Finding
>         11.2.3  Implementation
>         11.2.4  Example
>     11.3  Representing Image Regions
>         11.3.1  Matrix Representation
>         11.3.2  Run Length Encoding
>         11.3.3  Chain Codes
>     11.4  Properties of Binary Regions
>         11.4.1  Shape Features
>         11.4.2  Geometric Properties
>         11.4.3  Statistical Shape Properties
>         11.4.4  Moment Based Geometrical Properties
>         11.4.5  Projections
>         11.4.6  Topological Properties
>     11.5  Exercises
> 12  Color Images
>     12.1  RGB Color Images
>         12.1.1  Organization of Color Images
>         12.1.2  Color Images in ImageJ
>     12.2  Color Spaces and Color Conversion
>         12.2.1  Conversion to Grayscale
>         12.2.2  Color Image De-saturation
>         12.2.3  HSV/HSB and HLS Color Spaces
>         12.2.4  TV Component Color Spaces - YUV, YIQ, YCbCr
>         12.2.5  Color Space for Printing - CMY and CMYK
>     12.3  Colorimetric Color Spaces
>         12.3.1  CIE Color Space
>         12.3.2  CIE L*a*b*
>         12.3.3  sRGB
>         12.3.4  Adobe RGB
>         12.3.5  Colors and Color Spaces in Java
>     12.4  Color Image Statistics
>         12.4.1  How many Colors are in an Image?
>         12.4.2  Histograms
>     12.5  Color Quantization
>         12.5.1  Scalar Color Quantization
>         12.5.2  Vector Quantization
>     12.6  Exercises
> 13  Introduction to Spectral Techniques
>     13.1  The Fourier Transform
>         13.1.1  Sine and Cosine Functions
>         13.1.2  Representing Periodic Functions with Fourier Series
>         13.1.3  The Fourier Transform
>         13.1.4  Fourier Transform Pairs
>         13.1.5  Important Properties of the Fourier Transform
>     13.2  Transition to Discrete Data
>         13.2.1  Sampling
>         13.2.2  Discrete and Periodic Functions
>     13.3  The Discrete Fourier Transform (DFT)
>         13.3.1  Definition of the DFT
>         13.3.2  Discrete Basis Functions
>         13.3.3  Yet Again Aliasing!
>         13.3.4  Units in Spatial and Spectral Spaces
>         13.3.5  The Power Spectrum
>     13.4  Implementation of the DFT
>         13.4.1  Direct Implementation
>         13.4.2  Fast Fourier Transform (FFT)
>     13.5  Exercises
> 14  The Discrete Fourier Transform in 2D
>     14.1  Definition of the 2D DFT
>         14.1.1  2D Basis Functions
>         14.1.2  Implementing the 2D DFT
>     14.2  Representing the Fourier Transform in 2D
>         14.2.1  Range of Values
>         14.2.2  Centered Representation
>     14.3  Frequency and Orientation in 2D
>         14.3.1  Effective Frequency
>         14.3.2  Frequency Limits and Aliasing in 2D
>         14.3.3  Orientation
>         14.3.4  Geometric Correction of the 2D Spectrum
>         14.3.5  Effects of Periodicity
>         14.3.6  Windowing
>         14.3.7  Windowing Functions
>     14.4  2D Fourier Transform Examples
>     14.5  Properties of the DFT
>         14.5.1  Linear Filter Operations in the Spectral Domain
>         14.5.2  Linear Convolution and Correlation
>         14.5.3  Inverse Filters
>     14.6  Exercises
> 15  The Discrete Cosine Transform (DCT)
>     15.1  One Dimensional DCT
>         15.1.1  DCT Basis Functions
>         15.1.2  Implementing the One Dimensional DCT
>     15.2  Two Dimensional DCT
>         15.2.1  Separability
>         15.2.2  Example
>     15.3  Additional Spectral Transformations
>     15.4  Exercises
> 16  Geometrical Image Operations
>     16.1  Coordinate Transformations in 2D
>         16.1.1  Simple Transformations
>         16.1.2  Homogeneous Coordinates
>         16.1.3  Affine Transformations (Three Point Transformations)
>         16.1.4  Projective Transformations (Four Point  
> Transformations)
>         16.1.5  Bilinear Transformations
>         16.1.6  Additional Non-Linear Image Deformations
>     16.2  Re-Sampling
>         16.2.1  Source-to-Target Mapping
>         16.2.2  Target-to-Source Mapping
>     16.3  Interpolation
>         16.3.1  Simple Interpolation Methods
>         16.3.2  Ideal Interpolation
>         16.3.3  Interpolation Using Convolution
>         16.3.4  Cubic Interpolation
>         16.3.5  Interpolation in 2D
>         16.3.6  Aliasing
>     16.4  Java Implementation
>         16.4.1  Geometrical Transformations
>         16.4.2  Pixel Interpolation
>         16.4.3  Usage Example
>     16.5  Exercises
> 17  Image Comparison
>     17.1  Template Matching in Intensity Images
>         17.1.1  Distance between Image Patterns
>         17.1.2  Dealing with Rotation and Scale Changes
>         17.1.3  Implementation
>     17.2  Comparison of Binary Images
>         17.2.1  Direct Comparison of Binary Images
>         17.2.2  The Distance Transform
>         17.2.3  Chamfer Matching
>     17.3  Exercises
> A  Mathematical Notation
>     A.1  Often Used Symbols
>     A.2  Complex Numbers C
>     A.3  Algorithmic Complexity and *O* Notation
> B  Java Notes
>     B.1  Arithmetic
>         B.1.1  Integer Division
>         B.1.2  Modulus Operator
>         B.1.3  Unsigned Bytes
>         B.1.4  Mathematical Functions (Math-Class)
>         B.1.5  Rounding
>         B.1.6  Inverse Tangent Function
>         B.1.7  Float and Double (Classes)
>     B.2  Arrays in Java
>         B.2.1  Creating Arrays
>         B.2.2  Size of Arrays
>         B.2.3  Access to Array Elements
>         B.2.4  Two Dimensional Arrays
> C  ImageJ Short Reference
>     C.1  Installation and Setup
>     C.2  ImageJ API
>         C.2.1  Images (Package ij)
>         C.2.2  Image Processing (Package ij.process)
>         C.2.3  Plugins (Packages ij.plugin, ij.plugin.filter)
>         C.2.4  GUI Classes (Package ij.gui)
>         C.2.5  Window Management (Package ij)
>         C.2.6  Utility Classes (Package ij)
>         C.2.7  Input-Output (Package ij.io)
>     C.3  Image and Image Stacks Creation
>         C.3.1  ImagePlus (Class)
>         C.3.2  ImageStack (Class)
>         C.3.3  NewImage (Class)
>         C.3.4  ImageProcessor (Class)
>     C.4  Image Processor Creation
>         C.4.1  ImageProcessor (Class)
>         C.4.2  ByteProcessor (Class)
>         C.4.3  ColorProcessor (Class)
>         C.4.4  FloatProcessor (Class)
>         C.4.5  ShortProcessor (Class)
>     C.5  Image Parameters
>         C.5.1  ImageProcessor (Class)
>     C.6  Accessing Pixels
>         C.6.1  ImageProcessor (Class)
>     C.7  Converting from Images
>         C.7.1  ImageProcessor (Class)
>         C.7.2  ImagePlus, ImageConverter (Classes)
>     C.8  Histogram and Image Statistics
>         C.8.1  ImageProcessor (Class)
>     C.9  Point Operations
>         C.9.1  ImageProcessor (Class)
>         C.9.2  Blitter (Interface)
>     C.10  Filter
>         C.10.1  ImageProcessor (Class)
>     C.11  Geometrical Operations
>         C.11.1  ImageProcessor (Class)
>     C.12  Graphical Operations on Images
>         C.12.1  ImageProcessor (Class)
>     C.13  Displaying Images
>         C.13.1  ImagePlus (Class)
>     C.14  Image Stack Operations
>         C.14.1  ImagePlus (Class)
>         C.14.2  ImageStack (Class)
>         C.14.3  Stack Example
>     C.15  Region of Interest (ROI)
>         C.15.1  ImageProcessor (Class)
>         C.15.2  ImageStack (Class)
>         C.15.3  ImagePlus (Class)
>         C.15.4  Roi, Line, OvalRoi, PolygonRoi (Classes)
>     C.16  Image Properties
>         C.16.1  ImagePlus (Class)
>     C.17  Interaction
>         C.17.1  IJ (Class)
>         C.17.2  ImageProcessor (Class)
>         C.17.3  GenericDialog (Class)
>     C.18  Plugins
>         C.18.1  PlugIn(Interface)
>         C.18.2  PlugInFilter(Interface)
>         C.18.3  Executing Plugins
>     C.19  Window Management
>         C.19.1  WindowManager (Class)
>     C.20  Additional Functions
>         C.20.1  ImagePlus (Class)
>         C.20.2  IJ (Class)
> D  Source Code
>     D.1  Harris Corner Detector
>         D.1.1  File Corner.java
>         D.1.2  File HarrisCornerDetector.java
>         D.1.3  File HarrisCornerPlugin_.java
>     D.2  Combined Region Marking and Contour Following
>         D.2.1  File ContourTracingPlugin_.java
>         D.2.2  File Node.java
>         D.2.3  File Contour.java
>         D.2.4  File OuterContour.java
>         D.2.5  File InnerContour.java
>         D.2.6  File ContourSet.java
>         D.2.7  File ContourTracer.java
>         D.2.8  File ContourOverlay.java

--
Kenneth Sloan                                          
[hidden email]
Computer and Information Sciences                        +1-205-934-2213
University of Alabama at Birmingham              FAX +1-205-934-5473
Birmingham, AL 35294-1170                http://KennethRSloan.com/