Login  Register

Re: Image Processing with ImageJ book now available.

Posted by Kenneth Sloan-2 on Dec 28, 2007; 6:39am
URL: http://imagej.273.s1.nabble.com/Image-Processing-with-ImageJ-book-now-available-tp3697694p3697695.html

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/