Release 1.0.1, November 1999
\
+———————————————————————-:+ | Contents | | | | ——————————————————————-
Preface
- : Disclaimer
-
About This Book
-
Related Documentation
-
Additional Information
-
Style Conventions
1 Introduction to Java Advanced Imaging
- : 1.1 The Evolution of Imaging in Java
-
-
1.2 Why Another Imaging API?
-
- 1.3 JAI Features
-
1.3.1 Cross-platform Imaging
-
1.3.2 Distributed Imaging
-
1.3.3 Object-oriented API
-
1.3.4 Flexible and Extensible
-
1.3.5 Device Independent
-
1.3.6 Powerful
-
1.3.7 High Performance
-
1.3.8 Interoperable
-
1.4 A Simple JAI Program
2 Java AWT Imaging
: 2.1 Introduction
: 2.1.1 The AWT Push Model [](../j2d-concepts)
: 2.1.2 AWT Push Model Interfaces and Classes
[](../j2d-concepts)
: 2.2 The Immediate Mode Model
: 2.2.1 Rendering Independence [](../j2d-concepts)
: 2.2.2 Rendering-independent Imaging in Java AWT
[](../j2d-concepts)
: 2.2.3 The Renderable Layer vs. the Rendered Layer
[](../j2d-concepts)
: 2.2.4 The Render Context
[](../j2d-concepts)
: 2.3 Renderable and Rendered Classes
: 2.3.1 The Renderable Layer [](../j2d-concepts)
: 2.3.2 The Rendered Layer
[](../j2d-concepts)
- : 2.4 Java Image Data Representation
-
- 2.5 Introducing the Java Advanced Imaging API
-
2.5.1 Similarities with the Java 2D API
-
2.5.2 JAI Data Classes
3 Programming in Java Advanced Imaging
- : 3.1 Introduction
-
3.2 An Overview of Graphs
-
- 3.3 Processing Graphs
-
3.3.1 Rendered Graphs
-
3.3.2 Renderable Graphs
-
3.3.3 Reusing Graphs
-
3.4 Remote Execution
-
- 3.5 Basic JAI API Classes
-
3.5.1 The JAI Class
-
3.5.2 The PlanarImage Class
-
3.5.3 The CollectionImage Class
-
3.5.4 The TiledImage Class
-
3.5.5 The OpImage Class
-
3.5.6 The RenderableOp Class
-
3.5.7 The RenderedOp Class
-
- 3.6 JAI API Operators
-
3.6.1 Point Operators
-
3.6.2 Area Operators
-
3.6.3 Geometric Operators
-
3.6.4 Color Quantization Operators
-
3.6.5 File Operators
-
3.6.6 Frequency Operators
-
3.6.7 Statistical Operators
-
3.6.8 Edge Extraction Operators
-
3.6.9 Miscellaneous Operators
-
- 3.7 Creating Operations
-
3.7.1 Operation Name
-
3.7.2 Parameter Blocks
-
3.7.3 Rendering Hints
4 Image Acquisition and Display
: 4.1 Introduction
: 4.1.1 Image Data [](../acquisition)
: 4.1.2 Basic Storage Types
[](../acquisition)
: 4.2 JAI Image Types
: 4.2.1 Planar Image [](../acquisition)
: 4.2.2 Tiled Image [](../acquisition)
: 4.2.3 Snapshot Image [](../acquisition)
: 4.2.4 Remote Image [](../acquisition)
: 4.2.5 Collection Image [](../acquisition)
: 4.2.6 Image Sequence [](../acquisition)
: 4.2.7 Image Stack [](../acquisition)
: 4.2.8 Image MIP Map [](../acquisition)
: 4.2.9 Image Pyramid [](../acquisition)
: 4.2.10 Multi-resolution Renderable Images
[](../acquisition)
- : 4.3 Streams
-
- 4.4 Reading Image Files
-
4.4.1 Standard File Readers for Most Data Types
-
4.4.2 Reading TIFF Images
-
4.4.3 Reading FlashPix Images
-
4.4.4 Reading JPEG Images
-
4.4.5 Reading GIF Images
-
4.4.6 Reading BMP Images
-
4.4.7 Reading PNG Images
-
4.4.8 Reading PNM Images
-
4.4.9 Reading Standard AWT Images
-
4.4.10 Reading URL Images
-
4.5 Reformatting an Image
-
4.6 Converting a Rendered Image to Renderable
-
4.7 Creating a Constant Image
-
- 4.8 Image Display
-
4.8.1 Positioning the Image in the Panel
-
4.8.2 The ImageCanvas Class
-
4.8.3 Image Origin
5 Color Space
- : 5.1 Introduction
-
- 5.2 Color Management
-
5.2.1 Color Models
-
5.2.2 Color Space
-
5.2.3 ICC Profile and ICC Color Space
-
5.3 Transparency
-
5.4 Color Conversion
-
5.5 Non-standard Linear Color Conversion (BandCombine)
6 Image Manipulation
- : 6.1 Introduction
-
- 6.2 Region of Interest Control
-
6.2.1 The ROI Class
-
6.2.2 The ROIShape Class
-
- 6.3 Relational Operators
-
6.3.1 Finding the Maximum Values of Two Images
-
6.3.2 Finding the Minimum Values of Two Images
-
- 6.4 Logical Operators
-
6.4.1 ANDing Two Images
-
6.4.2 ANDing an Image with a Constant
-
6.4.3 ORing Two Images
-
6.4.4 ORing an Image with a Constant
-
6.4.5 XORing Two Images
-
6.4.6 XORing an Image with a Constant
-
6.4.7 Taking the Bitwise NOT of an Image
-
- 6.5 Arithmetic Operators
-
6.5.1 Adding Two Source Images
-
6.5.2 Adding a Constant Value to an Image
-
6.5.3 Adding a Collection of Images
-
6.5.4 Adding Constants to a Collection of Rendered Images
-
6.5.5 Subtracting Two Source Images
-
6.5.6 Subtracting a Constant from an Image
-
6.5.7 Subtracting an Image from a Constant
-
6.5.8 Dividing One Image by Another Image
-
6.5.9 Dividing an Image by a Constant
-
6.5.10 Dividing an Image into a Constant
-
6.5.11 Dividing Complex Images
-
6.5.12 Multiplying Two Images
-
6.5.13 Multiplying an Image by a Constant
-
6.5.14 Multiplying Two Complex Images
-
6.5.15 Finding the Absolute Value of Pixels
-
6.5.16 Taking the Exponent of an Image
-
- 6.6 Dithering an Image
-
6.6.1 Ordered Dither
-
6.6.2 Error-diffusion Dither
-
6.7 Clamping Pixel Values
-
6.8 Band Copying
-
6.9 Constructing a Kernel
7 Image Enhancement
- : 7.1 Introduction
-
- 7.2 Adding Borders to Images
-
7.2.1 The Border Operation
-
7.2.2 Extending the Edge of an Image
-
7.3 Cropping an Image
-
7.4 Amplitude Rescaling
-
- 7.5 Histogram Equalization
-
7.5.1 Piecewise Linear Mapping
-
7.5.2 Histogram Matching
-
- 7.6 Lookup Table Modification
-
7.6.1 Creating the Lookup Table
-
7.6.2 Performing the Lookup
-
7.6.3 Other Lookup Table Operations
-
- 7.7 Convolution Filtering
-
7.7.1 Performing the Convolve Operation
-
7.7.2 Box Filter
-
7.8 Median Filtering
-
- 7.9 Frequency Domain Processing
-
7.9.1 Fourier Transform
-
7.9.2 Cosine Transform
-
7.9.3 Magnitude Enhancement
-
7.9.4 Magnitude-squared Enhancement
-
7.9.5 Phase Enhancement
-
7.9.6 Complex Conjugate
-
7.9.7 Periodic Shift
-
7.9.8 Polar to Complex
-
7.9.9 Images Based on a Functional Description
-
- 7.10 Single-image Pixel Point Processing
-
7.10.1 Pixel Inverting
-
7.10.2 Logarithmic Enhancement
-
- 7.11 Dual Image Pixel Point Processing
-
7.11.1 Overlay Images
-
7.11.2 Image Compositing
-
7.12 Thresholding
8 Geometric Image Manipulation
- : 8.1 Introduction
-
- 8.2 Interpolation
-
8.2.1 Nearest-neighbor Interpolation
-
8.2.2 Bilinear Interpolation
-
8.2.3 Bicubic Interpolation
-
8.2.4 Bicubic2 Interpolation
-
8.2.5 Table Interpolation
-
- 8.3 Geometric Transformation
-
8.3.1 Translation Transformation
-
8.3.2 Scaling Transformation
-
8.3.3 Rotation Transformation
-
8.3.4 Affine Transformation
-
- 8.4 Perspective Transformation
-
8.4.1 Performing the Transform
-
8.4.2 Mapping a Quadrilateral
-
8.4.3 Mapping Triangles
-
8.4.4 Inverse Perspective Transform
-
8.4.5 Creating the Adjoint of the Current Transform
-
8.5 Transposing
-
8.6 Shearing
-
- 8.7 Warping
-
8.7.1 Performing a Warp Operation
-
8.7.2 Polynomial Warp
-
8.7.3 General Polynomial Warp
-
8.7.4 Grid Warp
-
8.7.5 Quadratic Warp
-
8.7.6 Cubic Warp
-
8.7.7 Perspective Warp
-
8.7.8 Affine Warp
9 Image Analysis
- : 9.1 Introduction
-
9.2 Finding the Mean Value of an Image Region
-
9.3 Finding the Extrema of an Image
-
- 9.4 Histogram Generation
-
9.4.1 Specifying the Histogram
-
9.4.2 Performing the Histogram Operation
-
9.4.3 Reading the Histogram Data
-
9.4.4 Histogram Operation Example
-
9.5 Edge Detection
-
9.6 Statistical Operations
10 Graphics Rendering
: 10.1 Introduction
: 10.1.1 Simple 2D Graphics [](../graphics)
: 10.1.2 Renderable Graphics
[](../graphics)
: 10.2 A Review of Graphics Rendering
: 10.2.1 Overview of the Rendering Process
[](../graphics)
: 10.2.2 Stroke Attributes [](../graphics)
: 10.2.3 Rendering Graphics Primitives
[](../graphics)
- : 10.3 Graphics2D Example
-
10.4 Adding Graphics and Text to an Image
11 Image Properties
: 11.1 Introduction
: 11.1.1 The PropertySource Interface
[](../properties)
: 11.1.2 The PropertyGenerator Interface
[](../properties)
- : 11.2 Synthetic Properties
-
11.3 Regions of Interest
-
11.4 Complex Data
12 Client-Server Imaging
- : 12.1 Introduction
-
12.2 Server Name and Port Number
-
12.3 Setting the Timeout Period and Number of Retries
-
- 12.4 Remote Imaging Test Example
-
12.4.1 Simple Remote Imaging Example
-
12.4.2 RemoteImaging Example Across Two Nodes
-
- 12.5 Running Remote Imaging
-
12.5.1 Step 1: Create a Security Policy File
-
12.5.2 Step 2: Start the RMI Registry
-
12.5.3 Step 3: Start the Remote Image Server
-
12.5.4 Step 4: Run the Local Application
-
- 12.6 Internet Imaging Protocol (IIP)
-
12.6.1 IIP Operation
-
12.6.2 IIPResolution Operation
13 Writing Image Files
- : 13.1 Introduction
-
13.2 Writing to a File
-
13.3 Writing to an Output Stream
-
- 13.4 Writing BMP Image Files
-
13.4.1 BMP Version
-
13.4.2 BMP Data Layout
-
13.4.3 Example Code
-
- 13.5 Writing JPEG Image Files
-
13.5.1 JFIF Header
-
13.5.2 JPEG DCT Compression Parameters
-
13.5.3 Quantization Table
-
13.5.4 Horizontal and Vertical Subsampling
-
13.5.5 Compression Quality
-
13.5.6 Restart Interval
-
13.5.7 Writing an Abbreviated JPEG Stream
-
13.5.8 Example Code
-
- 13.6 Writing PNG Image Files
-
13.6.1 PNG Image Layout
-
13.6.2 PNG Filtering
-
13.6.3 Bit Depth
-
13.6.4 Interlaced Data Order
-
13.6.5 PLTE Chunk for Palette Images
-
13.6.6 Ancillary Chunk Specifications
-
13.7 Writing PNM Image Files
-
- 13.8 Writing TIFF Image Files
-
13.8.1 TIFF Compression
-
13.8.2 TIFF Tiled Images
14 Extending the API
- : 14.1 Introduction
-
14.2 Package Naming Convention
-
- 14.3 Writing New Operators
-
14.3.1 Extending the OpImage Class
-
14.3.2 Extending the OperationDescriptor Interface
-
- 14.4 Iterators
-
14.4.1 RectIter
-
14.4.2 RookIter
-
14.4.3 RandomIter
-
14.4.4 Example RectIter
-
- 14.5 Writing New Image Decoders and Encoders
-
14.5.1 Image Codecs
A Program Examples
- : A.1 Lookup Operation Example
-
A.2 Adding an OperationDescriptor Example
B Java Advanced Imaging API Summary
- : B.1 Java AWT Imaging
-
- B.2 Java 2D Imaging
-
B.2.1 Java 2D Imaging Interfaces
-
B.2.2 Java 2D Imaging Classes
-
- B.3 Java Advanced Imaging
-
B.3.1 JAI Interfaces
-
B.3.2 JAI Classes
-
B.3.3 JAI Iterator Interfaces
-
B.3.4 JAI Iterator Classes
-
B.3.5 JAI Operator Classes
-
B.3.6 JAI Widget Interfaces
-
B.3.7 JAI Widget Classes
Glossary
\