Login  Register

Re: Image Processing with ImageJ book now available.

Posted by dksamuel on Dec 28, 2007; 4:15am
URL: http://imagej.273.s1.nabble.com/Image-Processing-with-ImageJ-book-now-available-tp3697694p3697696.html

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
>