On the influence of interpolation method on rotation invariance in texture recognition
 Gustaf Kylberg^{1} and
 IdaMaria Sintorn^{1, 2}Email author
https://doi.org/10.1186/s1364001601176
© Kylberg and Sintorn. 2016
Received: 22 June 2015
Accepted: 17 March 2016
Published: 1 April 2016
Abstract
In this paper, rotation invariance and the influence of rotation interpolation methods on texture recognition using several local binary patterns (LBP) variants are investigated.
We show that the choice of interpolation method when rotating textures greatly influences the recognition capability. Lanczos 3 and Bspline interpolation are comparable to rotating the textures prior to image acquisition, whereas the recognition capability is significantly and increasingly lower for the frequently used third order cubic, linear and nearest neighbour interpolation. We also show that including generated rotations of the texture samples in the training data improves the classification accuracies. For many of the descriptors, this strategy compensates for the shortcomings of the poorer interpolation methods to such a degree that the choice of interpolation method only has a minor impact.
To enable an appropriate and fair comparison, a new texture dataset is introduced which contains hardware and interpolated rotations of 25 texture classes. Two new LBP variants are also presented, combining the advantages of local ternary patterns and Fourier features for rotation invariance.
Keywords
1 Introduction
In many computer vision and image analysis applications, the texture of an object is an important property that can be utilized for classification or segmentation procedures. However, texture analysis in digital images is not a trivial task and numerous texture descriptors have been proposed. In some applications, e.g. face recognition as in [1], the orientation of the object is known, while in many other applications the orientation of an object may be arbitrary and hence also the texture. In the latter case, the texture can be rotated to a main orientation or principal direction, see e.g. [2] where the Radon transform is used to accomplish this, or alternatively, a texture descriptor invariant to rotation can be used. A third way to achieve rotation invariance is to add rotated versions of the textures to the training data. This technique of adding a priori information to achieve invariance towards something through adding virtual training samples is explored in [3].
Rotation invariant texture descriptors have been widely studied, as reviewed in [4]. Texture descriptors invariant to viewpoint (adding even more degrees of freedom) have also been studied in for example [5]. However, the problem of arbitrary viewpoints is not addressed in this paper.
Rotation invariance for a texture descriptor can be achieved locally (at each pixel position) or globally (for the region/patch investigated). In [6], clusters of filter bank responses, denoted textons, are computed and the histogram of occurring textons are used as features. They propose a filter bank, denoted MR8, for which global rotation invariance is achieved by using the maximum response over six different orientations. A possible advantage with globally rotation invariant descriptors is that such a descriptor can retain the distribution of local orientations while this information will be lost in a local rotational invariant descriptor. Note however, that in the case of MR8, this information is lost when only keeping the maximum response over orientations. In [7], a globally rotation invariant descriptor retaining distributions over orientations is introduced based on Fourier transformed responses from Gabor filter banks. In [8], a local rotation invariant descriptor is introduced based on the local binary pattern (LBP) descriptor and [9, 10] proposed globally rotation invariant descriptors based on Fourier transformed of the LBP.
The LBP descriptor has over the past decades resulted in a whole family of texture descriptors. For this study on rotation invariance, we have selected the classic LBP descriptor together with seven extensions, including two different approaches to rotation invariance. The descriptors are the following: (i) the classic L B P descriptor [8], (ii) L B P ^{ r i }—the approach to local rotation invariance [8], (iii) L B P ^{ D F T }—an approach to rotation invariance where globally rotation invariant Fourier features are extracted [10], (iv) I L B P (improved LBP) which is a more noise robust extension of the LBP [11], (v) I L B P ^{ r i } using the approach to local rotation invariance, (vi) I L B P ^{ D F T } using the approach to global rotation invariance, (vii) L T P ^{ D F T } (local ternary patterns) where three rather than two states are considered in the local neighbourhood ([12]) and using the approach to global rotation invariance, (viii) I L T P ^{ D F T } combining ILBP, LTP and the approach to global rotation invariance. By studying these descriptors, we can get a baseline performance from the classic LBP and see how two well used extensions to the LBP perform. In addition, we can see how invariant the two different approaches to rotation invariance are.
In this paper, we investigate and compare the following: local rotation invariance, global rotation invariance, including rotations in the training data, and the effect of the different interpolation methods when rotating textures, in the setting of retaining discriminant texture information. In order to do this, we introduce a new texture dataset, the Kylberg Sintorn Rotation Dataset. The dataset includes images of hardwarerotated textures as well as texture images rotated by the interpolation kernels: nearest neighbour, linear, third order cubic, cubic Bspline and Lanczos 3. The dataset has 25 classes of different types of textured surfaces and is publicly available [13]. The images in the dataset are acquired in raw format avoiding compression artefacts.
2 The Kylberg Sintorn rotation dataset
There are, to our knowledge, two texture datasets available which contain images of rotated textures; the Outex dataset [14] and the Mondial Marmi dataset [10].
The Mondial Marmi dataset contains images of slabs of Italian marble. The textured surfaces are rotated prior to image acquisition to allow for studying rotation invariance in texture analysis. The imaging is done with a compact camera storing the images in JPEG format with notable compression artefacts.
The Outex dataset is a large dataset with 320 texture classes imaged at different resolutions, orientations and illuminations. Unfortunately, there are periodic stripelike artefacts in the images. In addition, for a given class, orientation, resolution and scale, the image data to generate samples from is rather limited.
Due to, for our purposes, undesirable artefacts in these rotation texture datasets (periodic stripes in Outex and JPEG compression in Mondial Marmi), a new dataset with rotations of textures was acquired. The Kylberg Sintorn Rotation Dataset is a generic texture dataset with similar types of textured surfaces as in the Outex dataset but with the same general dataset structure (many samples of each texturerotation combination) as the Mondial Marmi dataset. Furthermore, the acquisition setup used in the Kylberg Sintorn Rotation Dataset avoids the aforementioned limitations and artefacts.
2.1 Hardware rotation
The acquisition setup allows for rotation of the camera around the central axis of the camera lens. By rotating the camera rather than the textured surface, the same lighting conditions are kept throughout the image acquisition. For each texture class, one image is acquired for each orientation. The textures are imaged in the nine orientations θ∈{0°,40°,80°,…,320° } chosen not to be even multiples of 90° for which the choice of interpolation methods would not make a difference.
2.2 Rotation by interpolation
2.2.1 Nearest neighbour
2.2.2 Linear
2.2.3 Cubic
2.2.4 Lanczos
and \(a\in \mathbb {N}\) sets the number of lobes to include of the sincfunction. In this paper, a=3 is used, resulting in the Lanczos kernel shown in Fig. 3. Interpolation of 2D signals using Lanczos kernels was introduced in [17].
2.2.5 Spline interpolation
The pieces fit smoothly together, forming a continuous function, going through the original data points.
MATLAB R2012b and the toolbox DIPimage [19] were used for all the interpolations.
2.3 Texture sample generation
3 LBPbased descriptors
If a point p does not coincide with a pixel centre, linear interpolation is used to compute the grey value g _{ p }. Finally, the histogram of occurring binary codes in a region is the feature vector of this region.
and the function s is defined as in Eq. 2. Note that p _{ c } is part of the binary code making it N+1 bits long.
In our implementation, as described above, the interval coded with zero is halfbound while in [21] it is open. Instead of using a code with base 3 to encode the three states in Eq. 5, LTP uses two binary codes representing the positive and the negative components of the ternary code, i.e., two binary codes coding for the two states {−1, 1}. These binary codes are collected in two separate histograms, and as a last step, the histograms are concatenated to form the LTP feature vector [21].
In analogy with the extension of LBP to ILBP, where the neighbourhood mean value (g _{mean}) is used as the local threshold and the centre pixel (g _{ c }) is included in the code, LTP can be extended to ILTP. This was done in [22]. For ILTP, the same scheme of using two concatenated binary codes as the final feature vector as for LTP is employed [22].
3.1 Rotation invariance
There are different approaches to making the classical LBP descriptor rotation invariant. One way is to group the binary codes that are rotations of one another (i.e. circular shifts of the binary code). Next, the occurrences of each group are computed and used as feature values. This approach is introduced in [8], and the descriptor is denoted \(\text {LBP}_{N,R}^{\text {ri}}\). For example, when N=8 is used, there are 36 such rotation invariant groups. Since occurrences of rotation groups are considered, the relative distribution within rotation groups is lost. It also means that the \(\text {LBP}_{N,R}^{\text {ri}}\) descriptor achieves rotation invariance by normalizing rotation locally, as described in [23].
Another way of making LBP rotation invariant is introduced in [9, 23]. The occurrences of rotation codes within the rotation groups are not summed, as in \(\text {LBP}_{N,R}^{\text {ri}}\), but Fourier transformed and the resulting power spectrum is used as the feature vector. The descriptor is called LBP histogram Fourier features (\(\text {LBP}_{N,R}^{\text {HF}}\)). Since the Fourier features are computed on the global histogram of binary codes in the region/patch investigated, \(\text {LBP}_{N,R}^{\text {HF}}\) achieves rotation invariance globally, and hence, retains the relative distribution within rotation groups [23]. However, the \(\text {LBP}_{N,R}^{\text {HF}}\) descriptor in [9] only considers uniform binary codes (binary codes with at the most two transitions between 0 and 1). It was generalized in [10] to include all binary codes, uniform and nonuniform, and called LBP ^{ D F T }. Together with the LBP ^{ D F T } descriptor, the corresponding ILBP ^{ D F T } descriptor was also introduced in [10].
When having the aforementioned methods at hand, two interesting additional descriptors can be compiled; LTP ^{ D F T } and ILTP ^{ D F T }. Thus combining the generalized version of the Fourier features from [10], achieving global rotation invariance, with the promising descriptors LTP from [21] and ILTP from [22].
Texture descriptor dimensionality. Length of feature vector using N=8
Descriptor  Dim.  Descriptor  Dim. 

LBP _{8,1}  256  ILBP _{8,1}  511 
LBP\(_{8,1}^{\text {ri}}\)  36  ILBP\(_{8,1}^{\text {ri}}\)  71 
LBP\(_{8,1}^{\text {DFT}}\)  163  ILBP\(_{8,1}^{\text {DFT}}\)  325 
LTP\(_{8,1}^{\text {DFT}}\)  326  ILTP\(_{8,1}^{\text {DFT}}\)  651 
4 Classification procedure
The interpolation methods and texture descriptors are evaluated by comparing the obtained classification accuracies. A first nearest neighbour (1NN) classifier with Euclidean metric is used. The 1NN classifier is used to be able to compare classification results obtained on the same and fair basis. To validate the trained classifier 10folded crossvalidation is performed by randomly assigning each texture sample an index n∈{1,2,…,10}, creating 10 disjoint subsets with equal number of samples (stratified samples). In the first crossvalidation fold, samples with n∈{2,3,…,10} will be the training data and samples with n=1 will serve as test data. In the second fold, samples with n=2 will be the test data and the rest is used for training, and so on.
The indices for the crossvalidation folds are created once and then kept fixed throughout the experiments. The classification results from the 10 folds are combined into a single confusion matrix estimation and the mean and standard deviation of the classification accuracy is computed.
5 Evaluating interpolation methods and rotation invariance
Mean classification accuracy at θ=0°. Standard deviations in brackets
Descriptor  Mean  Std.  Descriptor  Mean  Std. 

L B P _{8,1}  96.4  (1.2)  I L B P _{8,1}  95.4  (0.9) 
\(\mathrm {LBP^{ri}_{8,1}}\)  97.2  (0.9)  \(\mathrm {ILBP^{ri}_{8,1}}\)  96.9  (0.9) 
\(\mathrm {LBP^{DFT}_{8,1}}\)  98.7  (0.7)  \(\mathrm {ILBP^{DFT}_{8,1}}\)  97.5  (0.7) 
\(\mathrm {LTP^{DFT}_{8,1}}\)  98.9  (0.5)  \(\mathrm {ILTP^{DFT}_{8,1}}\)  99.6  (0.4) 
5.1 Interpolation method
Figure 5 shows that the obtained classification accuracies differ greatly for the different interpolation methods (Additional file 1). This indicates that the characteristic properties of the textures are retained to a widely varying degree under rotation. Lanczos and Bspline interpolation results in accuracies similar to, or even better than, that of the hardware rotated textures. Nearest neighbour, linear and cubic interpolation all show lower accuracies for all descriptors compared.
In a few cases, the result achieved using Lanczos and Bspline interpolation exceeds the result obtained using the hardware rotated textures, especially at θ∈{80°,280° }, see Fig. 6. This can, to a certain degree, be explained by that, in the case of hardware rotations, the sensor noise is sampled again and again for the different orientations, while the interpolated images all originate from one image with the sensor noise sampled once. The set of images which are rotated by interpolation is hence more homogeneous, and in addition, these two orientations are closest to ideal orientations of the original image, as was discussed above with respect to the higher performance for nearest neighbour interpolation for those two angles. Another explanation can be found by studying the perclass accuracies (data not shown). The classifier runs into problems with class number 12 and 20 for the hardware rotated textures while they are easier to classify in the Lanczos and Bspline interpolated data.
The tests were repeated using N=8 and R=2 for the eight LBP descriptors (data not shown). The interpolation methods appeared in the same order, accuracywise, with one exception. The nearest neighbour interpolation was found to perform on a level between linear and cubic interpolation. The descriptors generally achieved higher accuracies in the same order indicating that the selected parameters for the comparison is not optimal if the best overall classification result of the dataset is the objective. However, at R=1, the effects of interpolation methods and difference in the descriptor rotation invariance are more prominent and this is the main focus of this study.
5.2 Rotation invariance
Mean classification accuracy (and standard deviations in brackets) across the eight rotation tests. A rotation test refers to training on θ=0° and testing on one of the other rotations θ≠0°
Descriptor  Mean  Std.  Descriptor  Mean  Std. 

L B P _{8,1}  52.9  (8.9)  I L B P _{8,1}  52.0  (7.3) 
\(\mathrm {LBP^{ri}_{8,1}}\)  77.4  (3.2)  \(\mathrm {ILBP^{ri}_{8,1}}\)  85.9  (2.2) 
\(\mathrm {LBP^{DFT}_{8,1}}\)  79.3  (4.6)  \(\mathrm {ILBP^{DFT}_{8,1}}\)  79.4  (6.1) 
\(\mathrm {LTP^{DFT}_{8,1}}\)  89.5  (3.9)  \(\mathrm {ILTP^{DFT}_{8,1}}\)  90.4  (3.7) 
Figure 6 shows that the crossvalidation folds give very similar results. This means that the standard deviations over orientations, see Fig. 5, are not due to inadequate validation of the classifier but a genuine variation in descriptor performance.
5.2.1 Reference methods
To put the rotation invariance of the LBPbased descriptor into perspective, three additional descriptors were evaluated in the same way. The rotation invariant Gabor filter bank achieved a mean accuracy over rotation tests of 90.4 %, Haralick features 75.3 % and MR8 56.6 %. These values should be compared to the mean classification accuracies reported in Table 3 (also showed as black lines in Fig. 5). The Gabor filter bank achieves as good results as the best descriptor tested in the LBP family \(\left (\text {ILTP}_{8,1}^{\text {DFT}}\right)\) while Haralick achieves just below the local rotation invariant \(\mathrm {{LBP}_{8,1}^ ri}\) descriptor. Below follows condensed details of how the reference methods were used.
For the Gabor filter bank, definitions and guidelines as described in [7, 24] were used. The frequency ratio was set to \(\sqrt {2}\), the number of orientations was set to eight, and the number of frequencies to six. The Gaussian envelope was set to (γ,η)=(3,2), and the kernel size was set to 19×19.
The Haralick features were defined and used as described in [25]. The contrast, correlation, energy and homogeneity measures were computed for four greylevel cooccurrence matrices (four directions) using quantization into 16 grey levels and a distance of two pixels.
MR8 was defined and used as in [26].
6 Computational cost
To assess the computational cost of the different interpolation methods and texture descriptors, the relative computation time was measured.
6.1 Interpolation methods
6.2 Texture descriptors
7 Rotation representation in classification
In the first test, using training samples ∈{0°,40° }, the training set becomes twice as large. To make sure that the observed improvement originate from better representation of the rotated textures rather than a larger training set, we carried out a complementary test where every other sample was removed from the training set, making it the same size as in the previous tests. These results are shown as grey dots in the background in Fig. 9 and prove that the improvement is not from an increase in the number of training samples.
8 Conclusions

Lanczos 3 interpolation, closely followed by Bsplines outperform the other interpolation strategies in all tests. The same levels of texture recognition are achieved using these two interpolation methods as those using hardwarerotated textures.

As expected, the interpolation methods closer to the ideal sinc function retain the texture information best. The commonly used linear and cubic interpolation clearly have shortcomings in preserving texture information in the setting of texture recognition.

The best performing interpolation methods are only slightly more computationally expensive. Lanczos stands out as it is both the best interpolation method in terms of preserving texture information and faster to compute than the second best interpolation method Bspline.

Both the local rotation invariant versions (by counting occurrences of rotation groups), and the global rotation invariant versions (by computing Fourier descriptors of the groups) of the LBPbased texture descriptors are less rotation variant than the classic LBP descriptor but they still suffer from rotation variance.

The LTP ^{ D F T } and ILTP ^{ D F T } descriptors perform better than the other tested descriptors. They both show high classification accuracies and low standard deviations over different orientations.

The ILTP ^{ D F T } achieves the same high classification accuracy as an optimized and rotation invariant Gabor filter bank. The other reference descriptors are inferior to all the tested rotation invariant forms of the LBP descriptors.

Even though the more advanced descriptors in the LBP family are more computationally expensive than the basic LBP, they are all computationally inexpensive compared to common filter bankbased texture descriptors such as Gabor filter banks and MR8.

Including several different orientations of the textures in the training data has great positive impact on the classification accuracies. This also compensates to a large extent the shortcomings of choosing a simple interpolation method. Hence, a simple strategy that should be generally considered!
Linear and cubic interpolation is still commonly used even though they are easily outperformed in terms of retaining texture information. For example, in the image processing software ImageJ, linear interpolation is the default, in GIMP cubic is default (although Lanzos 3 is offered as an option) and MATLAB only supports nearest neighbour, linear and cubic interpolation when rotating images. The software library OpenCV has linear interpolation as default while cubic is optional.
Furthermore, these tests show that the use of rotation invariant texture descriptors may not be enough to achieve rotation invariant texture recognition; representing different orientations of the textures in the training data shows to be very important, even if the extra orientations are artificially generated by rotating already existing samples by means of interpolation.
In the light of these findings, the use of linear interpolation to compute the intensity samples in the local neighbourhoods in all the LBP_{ N,R }based descriptors should perhaps be revised.
Declarations
Acknowledgements
The authors would like to thank Cris Luengo for expanding the set of interpolation kernels implemented in DIPimage. This work has been part of the MiniTEM E!6143 project funded by EU and EUREKA through the Eurostars Programme.
Open Access This article is distributed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made.
Authors’ Affiliations
References
 X Tan, B Triggs, Enhanced local texture feature sets for face recognition under difficult lighting conditions. IEEE Trans. Image Process. 19(6), 1635–1650 (2010).MathSciNetView ArticleGoogle Scholar
 K JafariKhouzani, H SoltanianZadeh, Radon transform orientation estimation for rotation invariant texture analysis. IEEE Trans. Pattern Anal. Mach. Intell. 27(6), 1004–1008 (2005).MathSciNetView ArticleGoogle Scholar
 B Schölkopf, Support vector learning (PhD thesis, Technische Universität Berlin, 1997).Google Scholar
 J Zhang, T Tan, Brief review of invariant texture analysis methods. Pattern Recogn. 35(3), 735–747 (2002).View ArticleMATHGoogle Scholar
 Y Xu, H Ji, C Fermüller, Viewpoint invariant texture description using fractal analysis. Int. J. Comput. Vis. 83(1), 85–100 (2009).View ArticleGoogle Scholar
 M Varma, A Zisserman, A statistical approach to texture classification from single images. Int. J. Comput. Vision. 62(12), 61–81 (2005).View ArticleGoogle Scholar
 F Bianconi, A Fernández, A Mancini, in Proceedings of the 20th International Congress on Graphical Engineering. Assessment of rotationinvariant texture classification through gabor filters and discrete Fourier transform (ACMValencia, Spain, 2008).Google Scholar
 T Ojala, T Mäenpää, Multiresolution GrayScale and Rotation Invariant Texture Classification with Local Binary Patterns. IEEE Trans. Pattern Anal. Mach. Intell. 24(7), 971–987 (2002).View ArticleGoogle Scholar
 T Ahonen, J Matas, C He, M Pietikäinen, in Proceedings of the 16th Scandinavian Conference on Image Analysis. LNCS, 5575. Rotation invariant image description with local binary pattern histogram Fourier features (SpringerBerlin Heidelberg, 2009), pp. 61–70.Google Scholar
 A Fernández, O Ghita, E González, F Bianconi, PF Whelan, Evaluation of robustness against rotation of LBP, CCR and ILBP features in granite texture classification. Mach. Vis. Appl. 22(6), 913–926 (2011).View ArticleGoogle Scholar
 H Jin, Q Liu, H Lu, X Tong, in Proceedings of the Third International Conference on Image and Graphics. Face detection using improved LBP under Bayesian framework, (IEEE Computer Society, WashingtonDC, USA, 2004), pp. 306–309. doi:http://dx.doi.org/10.1109/ICIG.2004.62.Google Scholar
 A Fernández, M Álvarez, F Bianconi, Texture description through histograms of equivalent patterns. J. Math. Imaging Vis. 45:, 76–102 (2013).MathSciNetView ArticleMATHGoogle Scholar
 G Kylberg, IM Sintorn, Kylberg Sintorn Rotation dataset (2015). http://www.cb.uu.se/~gustaf/KylbergSintornRotation/. Accessed 1 Jan 2016.
 T Ojala, T Mäenpää, M Pietikäinen, J Viertola, J Kyllönen, S Huovinen, in Proceedings of the 16th International Conference on Pattern Recognition, Quebec, Canada. Outex  New Framework for Empirical Evaluation of Texture Analysis Algorithms (IEEE Computer SocietyWashington, DC, USA, 2002), pp. 701–706.Google Scholar
 R Keys, Cubic convolution interpolation for digital image processing. IEEE Trans. Acoust. Speech Signal Process. 29(6), 1153–1160 (1981).MathSciNetView ArticleMATHGoogle Scholar
 C Lanczos, Applied Analysis. PrenticeHall mathematics series (PrenticeHall, New Jersey, 1956).Google Scholar
 CE Duchon, Lanczos Filtering in One and Two Dimensions. J. Appl. Meteor. 18(8), 1016–1022 (1979).View ArticleGoogle Scholar
 H Hou, H Andrews, Cubic splines for image interpolation and digital filtering. IEEE Trans. Acoust. Speech Signal Process. 26(6), 508–517 (1978).View ArticleMATHGoogle Scholar
 C Luengo, DIPimage, a Matlab toolbox for scientific image processing and analysis. http://www.diplib.org/. Accessed 1 Jan 2016.
 T Ojala, M Pietikäinen, D Harwood, A comparative study of texture measures with classification based on featured distributions. Pattern Recogn. 29(1), 51–59 (1996).View ArticleGoogle Scholar
 X Tan, B Triggs, in Analysis and Modeling of Faces and Gestures. Lecture Notes in Computer Science, 4778, ed. by SK Zhou, W Zhao, X Tang, and S Gong. Enhanced local texture feature sets for face recognition under difficult lighting conditions (SpringerSpringerVerlag Berlin Heidelberg, 2007), pp. 168–182.View ArticleGoogle Scholar
 L Nanni, S Brahnam, A Lumini, A local approach based on a Local Binary Patterns variant texture descriptor for classifying pain states. Expert Syst. Appl. 37(12), 7888–7894 (2010).View ArticleGoogle Scholar
 G Zhao, T Ahonen, J Matas, M Pietikainen, Rotationinvariant image and video description with local binary pattern features. IEEE Trans. Image Process. 21(4), 1465–1477 (2012).MathSciNetView ArticleGoogle Scholar
 F Bianconi, A Fernández, Evaluation of the effects of Gabor filter parameters on texture classification. Pattern Recog. 40(12), 3325–3335 (2007).View ArticleMATHGoogle Scholar
 RM Haralick, K Shanmugam, I Dinstein, Textural Features for Image Classification. IEEE Trans. Syst. Man Cybern. 3(6), 610–621 (1973).View ArticleGoogle Scholar
 M Varma, A Zisserman, in Proceedings of the 7th European Conference on Computer Vision, Copenhagen, Denmark. Computer Vision, 3. Classifying images of materials: Achieving viewpoint and illumination independence (SpringerBerlin, 2002), pp. 255–271.Google Scholar