0% found this document useful (0 votes)
31 views

BurgerBurgeUticsVol2 Contents

This document appears to be the table of contents for a book titled "Principles of Digital Image Processing: Core Algorithms". The book covers topics such as regions in binary images, detecting simple curves using the Hough transform, corner detection algorithms, color quantization, and colorimetric color spaces. It includes 134 figures and 10 tables across 6 chapters.

Uploaded by

Vaibhav Mathur
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views

BurgerBurgeUticsVol2 Contents

This document appears to be the table of contents for a book titled "Principles of Digital Image Processing: Core Algorithms". The book covers topics such as regions in binary images, detecting simple curves using the Hough transform, corner detection algorithms, color quantization, and colorimetric color spaces. It includes 134 figures and 10 tables across 6 chapters.

Uploaded by

Vaibhav Mathur
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Wilhelm Burger Mark J.

Burge

Principles of Digital Image


Processing
Core Algorithms
With 134 gures and 10 tables

Springer-Verlag
Berlin Heidelberg NewYork
London Paris Tokyo
Hong Kong Barcelona
Budapest

Contents

Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1 Programming with Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Image Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
2
3

2.

Regions in Binary Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


2.1 Finding Image Regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 Region Labeling with Flood Filling . . . . . . . . . . . . . . . . . . .
2.1.2 Sequential Region Labeling . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.3 Region LabelingSummary . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Region Contours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1 External and Internal Contours . . . . . . . . . . . . . . . . . . . . . .
2.2.2 Combining Region Labeling and Contour Finding . . . . . .
2.2.3 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.4 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Representing Image Regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Matrix Representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.2 Run Length Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.3 Chain Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Properties of Binary Regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 Shape Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.2 Geometric Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.3 Statistical Shape Properties . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.4 Moment-Based Geometrical Properties . . . . . . . . . . . . . . . .
2.4.5 Projections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5
6
6
11
17
17
18
20
22
25
26
26
27
28
32
32
33
36
38
44

viii

Principles of Digital Image Processing Core Algorithms

2.4.6 Topological Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45


2.5 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.

Detecting Simple Curves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


3.1 Salient Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Hough Transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Parameter Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2 Accumulator Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.3 A Better Line Representation . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Implementing the Hough Transform . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 Filling the Accumulator Array . . . . . . . . . . . . . . . . . . . . . . .
3.3.2 Analyzing the Accumulator Array . . . . . . . . . . . . . . . . . . . .
3.3.3 Hough Transform Extensions . . . . . . . . . . . . . . . . . . . . . . . .
3.4 Hough Transform for Circles and Ellipses . . . . . . . . . . . . . . . . . . . .
3.4.1 Circles and Arcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.2 Ellipses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49
49
50
51
54
54
55
56
56
60
63
64
66
67

4.

Corner Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1 Points of Interest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Harris Corner Detector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1 Local Structure Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.2 Corner Response Function (CRF) . . . . . . . . . . . . . . . . . . . .
4.2.3 Determining Corner Points . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.4 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 Step 1: Computing the Corner Response Function . . . . . .
4.3.2 Step 2: Selecting Good Corner Points . . . . . . . . . . . . . . .
4.3.3 Displaying the Corner Points . . . . . . . . . . . . . . . . . . . . . . . .
4.3.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69
69
70
70
71
72
72
72
76
79
83
83
84

5.

Color Quantization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1 Scalar Color Quantization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Vector Quantization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1 Populosity algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.2 Median-cut algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.3 Octree algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.4 Other methods for vector quantization . . . . . . . . . . . . . . . .
5.3 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

85
86
88
88
88
89
94
95

Contents

ix

6.

Colorimetric Color Spaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97


6.1 CIE Color Spaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.1.1 CIE XYZ color space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.1.2 CIE x, y chromaticity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.1.3 Standard illuminants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.1.4 Gamut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.1.5 Variants of the CIE color space . . . . . . . . . . . . . . . . . . . . . . 103
6.2 CIE L a b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.2.1 Transformation CIE XYZ L a b . . . . . . . . . . . . . . . . . . . 104
6.2.2 Transformation L a b CIE XYZ . . . . . . . . . . . . . . . . . . . 105
6.2.3 Measuring color dierences . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.3 sRGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.3.1 Linear vs. nonlinear color components . . . . . . . . . . . . . . . . . 107
6.3.2 Transformation CIE XYZsRGB . . . . . . . . . . . . . . . . . . . . 108
6.3.3 Transformation sRGBCIE XYZ . . . . . . . . . . . . . . . . . . . . 108
6.3.4 Calculating with sRGB values . . . . . . . . . . . . . . . . . . . . . . . . 109
6.4 Adobe RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.5 Chromatic Adaptation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.5.1 XYZ scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
6.5.2 Bradford adaptation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.6 Colorimetric Support in Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.6.1 sRGB colors in Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.6.2 Prole connection space (PCS) . . . . . . . . . . . . . . . . . . . . . . . 115
6.6.3 Color-related Java classes . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
6.6.4 A L a b color space implementation . . . . . . . . . . . . . . . . . . 120
6.6.5 ICC proles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
6.7 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

7.

Introduction to Spectral Techniques . . . . . . . . . . . . . . . . . . . . . . . . 125


7.1 The Fourier Transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
7.1.1 Sine and Cosine Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
7.1.2 Fourier Series of Periodic Functions . . . . . . . . . . . . . . . . . . . 130
7.1.3 Fourier Integral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
7.1.4 Fourier Spectrum and Transformation . . . . . . . . . . . . . . . . . 131
7.1.5 Fourier Transform Pairs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.1.6 Important Properties of the Fourier Transform . . . . . . . . . 136
7.2 Working with Discrete Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.2.1 Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.2.2 Discrete and Periodic Functions . . . . . . . . . . . . . . . . . . . . . . 144
7.3 The Discrete Fourier Transform (DFT) . . . . . . . . . . . . . . . . . . . . . . 144
7.3.1 Denition of the DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

Principles of Digital Image Processing Core Algorithms

7.3.2 Discrete Basis Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147


7.3.3 Aliasing Again! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
7.3.4 Units in Signal and Frequency Space . . . . . . . . . . . . . . . . . . 152
7.3.5 Power Spectrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
7.4 Implementing the DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
7.4.1 Direct Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
7.4.2 Fast Fourier Transform (FFT) . . . . . . . . . . . . . . . . . . . . . . . 155
7.5 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
8.

The Discrete Fourier Transform in 2D . . . . . . . . . . . . . . . . . . . . . . 157


8.1 Denition of the 2D DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
8.1.1 2D Basis Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8.1.2 Implementing the Two-Dimensional DFT . . . . . . . . . . . . . . 158
8.2 Visualizing the 2D Fourier Transform . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Range of Spectral Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.2 Centered Representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
8.3 Frequencies and Orientation in 2D . . . . . . . . . . . . . . . . . . . . . . . . . . 164
8.3.1 Eective Frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
8.3.2 Frequency Limits and Aliasing in 2D . . . . . . . . . . . . . . . . . . 164
8.3.3 Orientation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
8.3.4 Normalizing the 2D Spectrum . . . . . . . . . . . . . . . . . . . . . . . . 166
8.3.5 Eects of Periodicity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
8.3.6 Windowing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.3.7 Windowing Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.4 2D Fourier Transform Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
8.5 Applications of the DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
8.5.1 Linear Filter Operations in Frequency Space . . . . . . . . . . . 175
8.5.2 Linear Convolution versus Correlation . . . . . . . . . . . . . . . . 177
8.5.3 Inverse Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
8.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

9.

The Discrete Cosine Transform (DCT) . . . . . . . . . . . . . . . . . . . . . 183


9.1 One-Dimensional DCT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
9.1.1 DCT Basis Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
9.1.2 Implementing the One-Dimensional DCT . . . . . . . . . . . . . . 186
9.2 Two-Dimensional DCT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
9.2.1 Separability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
9.2.2 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
9.3 Other Spectral Transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
9.4 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

Contents

xi

10. Geometric Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191


10.1 2D Mapping Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
10.1.1 Simple Mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
10.1.2 Homogeneous Coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
10.1.3 Ane (Three-Point) Mapping . . . . . . . . . . . . . . . . . . . . . . . . 195
10.1.4 Projective (Four-Point) Mapping . . . . . . . . . . . . . . . . . . . . . 197
10.1.5 Bilinear Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
10.1.6 Other Nonlinear Image Transformations . . . . . . . . . . . . . . . 204
10.1.7 Local Image Transformations . . . . . . . . . . . . . . . . . . . . . . . . 207
10.2 Resampling the Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.2.1 Source-to-Target Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.2.2 Target-to-Source Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
10.3 Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
10.3.1 Simple Interpolation Methods . . . . . . . . . . . . . . . . . . . . . . . . 211
10.3.2 Ideal Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
10.3.3 Interpolation by Convolution . . . . . . . . . . . . . . . . . . . . . . . . 217
10.3.4 Cubic Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
10.3.5 Spline Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
10.3.6 Lanczos Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
10.3.7 Interpolation in 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
10.3.8 Aliasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
10.4 Java Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
10.4.1 Geometric Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . 238
10.4.2 Pixel Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
10.4.3 Sample Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
10.5 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
11. Comparing Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
11.1 Template Matching in Intensity Images . . . . . . . . . . . . . . . . . . . . . . 257
11.1.1 Distance between Image Patterns . . . . . . . . . . . . . . . . . . . . . 258
11.1.2 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
11.1.3 Matching under Rotation and Scaling . . . . . . . . . . . . . . . . . 267
11.2 Matching Binary Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
11.2.1 Direct Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
11.2.2 The Distance Transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
11.2.3 Chamfer Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
11.3 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
A. Mathematical Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
A.1 Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
A.2 Set Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
A.3 Complex Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

xii

Principles of Digital Image Processing Core Algorithms

B. Source Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283


B.1 Combined Region Labeling and Contour Tracing . . . . . . . . . . . . . 283
B.1.1 Contour_Tracing_Plugin (Class) . . . . . . . . . . . . . . . . . . . . 283
B.1.2 Contour (Class) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
B.1.3 BinaryRegion (Class) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
B.1.4 ContourTracer (Class) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
B.1.5 ContourOverlay (Class) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
B.2 Harris Corner Detector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
B.2.1 Harris_Corner_Plugin (Class) . . . . . . . . . . . . . . . . . . . . . . 294
B.2.2 File Corner (Class) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
B.2.3 File HarrisCornerDetector (Class) . . . . . . . . . . . . . . . . . . 296
B.3 Median-Cut Color Quantization . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
B.3.1 ColorQuantizer (Interface) . . . . . . . . . . . . . . . . . . . . . . . . . 301
B.3.2 MedianCutQuantizer (Class) . . . . . . . . . . . . . . . . . . . . . . . . 301
B.3.3 ColorHistogram (Class) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
B.3.4 Median_Cut_Quantization (Class) . . . . . . . . . . . . . . . . . . . 310
Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy