Kernel Functions on SO(3) edit page

A kernel on the rotation group is a radially symmetric scalar function:

\[ \widetilde\psi\colon\mathrm{SO}(3)\to\mathbb R. \]

Radial symmetry means that the value depends only on the rotation angle \(\omega®\in[0,\pi]\), not on the rotation axis. With \(t=\cos(\omega®/2)\), MTEX writes

\[ \widetilde\psi®=\psi(t). \]

Kernels set the shape of localized peaks in orientation space. Read Unimodal ODF Shapes for a direct comparison of their halfwidths, profiles and pole-figure projections. This page explains the series representation and the constructor for every kernel family.

One coefficient per harmonic degree

A general SO3FunHarmonic has \((2n+1)^2\) Fourier, Wigner-D or C-coefficients at degree \(n\). Radial symmetry reduces this entire block to one coefficient \(\widehat\psi_n\). MTEX uses the Chebyshev expansion

\[ \psi(t)=\sum_{n=0}^{\infty}(2n+1)\widehat\psi_n \mathcal U_{2n}(t), \]

where \(\mathcal U_{2n}\) is the Chebyshev polynomial of the second kind and degree \(2n\). An SO3Kernel stores the scaled coefficients \(a_n=(2n+1)\widehat\psi_n\) in its A property.

A custom kernel can therefore be constructed directly from its \(a_n\). The following values are \(a_0=1\), \(a_1=0\), \(a_2=3\) and \(a_3=1\).

psi = SO3Kernel([1;0;3;1])
plot(psi)
psi = SO3Kernel
  bandwidth: 3
  halfwidth: 40°

The oscillating curve is the Chebyshev series evaluated from \(-180^\circ\) to \(180^\circ\). Arbitrary coefficients need not define a nonnegative or normalized density.

From a kernel to a radial orientation function

An SO3FunRBF places a copy of a kernel at a chosen centre orientation. Here a de la Vallee Poussin kernel with \(20^\circ\) halfwidth produces one localized rotational function.

psi = SO3DeLaValleePoussinKernel('halfwidth',20*degree)
SO3F = SO3FunRBF(orientation.rand,psi)
plot(SO3F)
psi = SO3DeLaValleePoussinKernel
  bandwidth: 13
  halfwidth: 20°
 
 
SO3F = SO3FunRBF (1 → y↓→x)
 
  unimodal component
  kernel: de la Vallee Poussin, halfwidth 20°
  center: 1 orientations
 
  Bunge Euler angles in degree
     phi1     Phi    phi2  weight
  156.958 161.468 197.878       1

The sections show one peak about the sampled centre. The kernel controls how its value falls with angular distance; the SO3FunRBF supplies the centre and any symmetry-equivalent copies.

Pass a kernel to unimodalODF to choose the profile of a model ODF. uniformODF uses a kernel internally to represent its constant value, but does not require a kernel argument. Kernels are also used when estimating an ODF from EBSD orientations.

Halfwidth and bandwidth answer different questions

The halfwidth is the angular distance at which the profile has fallen to half its maximum. It describes spread and is not normally a cutoff. The bandwidth is the largest stored harmonic degree. It describes spectral cost, not visible width.

Many constructors accept a halfwidth or bandwidth in addition to their native parameter, but support differs by family. This constructor chooses a \(30^\circ\) de la Vallee Poussin halfwidth.

psi = SO3DeLaValleePoussinKernel('halfwidth',30*degree)
close all
plot(psi)
psi = SO3DeLaValleePoussinKernel
  bandwidth: 9
  halfwidth: 30°

The curve crosses half its peak at \(30^\circ\). It remains positive beyond that angle, so the halfwidth should not be read as a hard boundary.

Choosing a family

The available families emphasize different properties:

family

main characteristic

typical use

de la Vallee Poussin

nonnegative and finite for integer \(\kappa\)

ODFs, misorientation distributions and pole figures

Dirichlet

exact spectral cutoff with unit Fourier coefficients

physical-property calculations

Abel--Poisson

nonnegative with geometric spectral decay

smooth radial peaks

von Mises--Fisher

nonnegative exponential angular profile

smooth radial peaks

Gauss--Weierstrass

heat-kernel spectral decay

smoothing by harmonic degree

Sobolev

coefficients weighted by derivative order

Sobolev operators rather than densities

Laplace

inverse-power spectral decay

inverse differential operators

squared singularity

nonnegative rational singularity family

alternative radial profile

bump

constant inside a strict angular cutoff

compact support

The profile plot in each section answers what the kernel looks like in orientation space. The spectrum beside it shows \(\widehat\psi_n=a_n/(2n+1)\) and therefore its harmonic cost.

The de la Vallee Poussin kernel

For \(t\in[0,1]\), the de la Vallee Poussin kernel is

\[ K(t)=\frac{B(\frac32,\frac12)} {B(\frac32,\kappa+\frac12)}t^{2\kappa}, \]

where \(B\) is the beta function. For positive integer \(\kappa\in\mathbb N\setminus\{0\}\) it has the finite expansion

\[ \psi_\kappa(t)= \frac{(\kappa+1)2^{2\kappa-1}}{\binom{2\kappa-1}{\kappa}}t^{2\kappa} =\binom{2\kappa+1}{\kappa}^{-1} \sum_{n=0}^{\kappa}(2n+1)\binom{2\kappa+1}{\kappa-n} \mathcal U_{2n}(t). \]

This family is recommended for texture analysis because it is positive in orientation space and, for integer \(\kappa\), has no Fourier truncation error. A requested halfwidth generally gives a noninteger \(\kappa\); MTEX then stores coefficients down to its numerical cutoff.

psi1 = SO3DeLaValleePoussinKernel('halfwidth',15*degree)
psi2 = SO3DeLaValleePoussinKernel('halfwidth',20*degree)
psi1 = SO3DeLaValleePoussinKernel
  bandwidth: 17
  halfwidth: 15°
 
 
psi2 = SO3DeLaValleePoussinKernel
  bandwidth: 13
  halfwidth: 20°

The corresponding parameters are \(\kappa=40.34\) and \(22.64\). Compare their profiles and spectra in one figure.

figure
subplot(1,2,1)
plot(psi1,'linewidth',2)
hold on
plot(psi2,'linewidth',2)
hold off
subplot(1,2,2)
plotSpektra(psi1,'linewidth',2)
hold on
plotSpektra(psi2,'linewidth',2)
hold off
legend('halfwidth = 15°','halfwidth = 20°')

The \(15^\circ\) kernel is narrower and taller. Its coefficients persist to higher degrees, illustrating the cost of resolving a sharper peak.

The Dirichlet kernel

The Dirichlet kernel is the finite series

\[ \psi_N(t)=\sum_{n=0}^{N}(2n+1)\mathcal U_{2n}(t). \]

It integrates to one. Its Fourier coefficients equal one through bandwidth \(N\) and are zero above it. This exact cutoff is useful for calculating physical properties, although the orientation-space profile oscillates and can be negative.

psi1 = SO3DirichletKernel(10)
psi2 = SO3DirichletKernel(5)

figure
subplot(1,2,1)
plot(psi1,'linewidth',2)
hold on
plot(psi2,'linewidth',2)
hold off
subplot(1,2,2)
plotSpektra(psi1,'linewidth',2)
hold on
plotSpektra(psi2,'linewidth',2)
hold off
legend('bandwidth = 10','bandwidth = 5')
psi1 = SO3DirichletKernel
  bandwidth: 10
  halfwidth: 13°
 
 
psi2 = SO3DirichletKernel
  bandwidth: 5
  halfwidth: 24°

The bandwidth-10 profile has a sharper central lobe and more side lobes. The spectrum verifies that every retained Fourier coefficient is exactly one for both kernels.

The Abel--Poisson kernel

The nonnegative Abel--Poisson kernel uses \(\kappa\in(0,1)\) and the series

\[ \psi_\kappa(t)=\sum_{n=0}^{\infty}(2n+1)\kappa^{2n} \mathcal U_{2n}(t). \]

psi1 = SO3AbelPoissonKernel('halfwidth',15*degree)
psi2 = SO3AbelPoissonKernel('halfwidth',20*degree)
psi1 = SO3AbelPoissonKernel
  bandwidth: 19
  halfwidth: 15°
 
 
psi2 = SO3AbelPoissonKernel
  bandwidth: 15
  halfwidth: 20°

These halfwidths give \(\kappa=0.82\) and \(0.76\), respectively.

figure
subplot(1,2,1)
plot(psi1,'linewidth',2)
hold on
plot(psi2,'linewidth',2)
hold off
subplot(1,2,2)
plotSpektra(psi1,'linewidth',2)
hold on
plotSpektra(psi2,'linewidth',2)
hold off
legend('halfwidth = 15°','halfwidth = 20°')

Both profiles remain nonnegative and have long tails. The narrower kernel has the larger \(\kappa\), so its geometrically decaying coefficients remain significant to higher degree.

The von Mises--Fisher kernel

For \(\kappa>0\), the von Mises--Fisher kernel has the series

\[ \psi_\kappa(t)=\sum_{n=0}^{\infty} \frac{\mathcal I_n(\kappa)-\mathcal I_{n+1}(\kappa)} {\mathcal I_0(\kappa)-\mathcal I_1(\kappa)}\mathcal U_{2n}(t), \]

and the direct angular form

\[ \psi_\kappa\!\left(\cos\frac{\omega®}2\right)= \frac{\mathrm e^{\kappa\cos\omega®}} {\mathcal I_0(\kappa)-\mathcal I_1(\kappa)}. \]

Here \(\mathcal I_n\) is the modified Bessel function of the first kind,

\[ \mathcal I_n(\kappa)=\frac1\pi\int_0^\pi \mathrm e^{\kappa\cos\omega}\cos(n\omega)\,\mathrm d\omega. \]

psi1 = SO3vonMisesFisherKernel('halfwidth',15*degree)
psi2 = SO3vonMisesFisherKernel('halfwidth',20*degree)
psi1 = SO3vonMisesFisherKernel
  bandwidth: 18
  halfwidth: 15°
 
 
psi2 = SO3vonMisesFisherKernel
  bandwidth: 14
  halfwidth: 20°

These halfwidths give \(\kappa=20.34\) and \(11.49\), respectively.

figure
subplot(1,2,1)
plot(psi1,'linewidth',2)
hold on
plot(psi2,'linewidth',2)
hold off
subplot(1,2,2)
plotSpektra(psi1,'linewidth',2)
hold on
plotSpektra(psi2,'linewidth',2)
hold off
legend('halfwidth = 15°','halfwidth = 20°')

The exponential profiles are smooth and nonnegative. As before, the narrower peak requires appreciable coefficients at higher degrees.

The Gauss--Weierstrass kernel

The nonnegative Gauss--Weierstrass kernel uses \(\kappa>0\) and

\[ \psi_\kappa(t)=\sum_{n=0}^{\infty}(2n+1) \mathrm e^{-n(n+1)\kappa}\mathcal U_{2n}(t). \]

psi1 = SO3GaussWeierstrassKernel(0.025)
psi2 = SO3GaussWeierstrassKernel(0.045)

figure
subplot(1,2,1)
plot(psi1,'linewidth',2)
hold on
plot(psi2,'linewidth',2)
hold off
subplot(1,2,2)
plotSpektra(psi1,'linewidth',2)
hold on
plotSpektra(psi2,'linewidth',2)
hold off
legend('\kappa = 0.025 (15.14°)','\kappa = 0.045 (20.33°)')
psi1 = SO3GaussWeierstrassKernel
  bandwidth: 17
  halfwidth: 15°
 
 
psi2 = SO3GaussWeierstrassKernel
  bandwidth: 13
  halfwidth: 20°

The measured halfwidths are \(15.14^\circ\) and \(20.33^\circ\), rather than exactly \(15^\circ\) and \(20^\circ\). Larger \(\kappa\) damps high degrees more strongly and therefore produces the broader profile.

The Sobolev kernel

A Sobolev kernel of order \(s\) and bandwidth \(N\) is

\[ \psi_s(t)=\sum_{n=0}^{N}(2n+1)(n(n+1))^s \mathcal U_{2n}(t). \]

The coefficient at \(n=0\) is zero. Positive \(s\) amplifies high harmonic degrees, so this family represents a differential weighting rather than a nonnegative density kernel.

psi1 = SO3SobolevKernel(1,'bandwidth',15)
psi2 = SO3SobolevKernel(1.2,'bandwidth',15)

figure
subplot(1,2,1)
plot(psi1,'linewidth',2)
hold on
plot(psi2,'linewidth',2)
hold off
subplot(1,2,2)
plotSpektra(psi1,'linewidth',2)
hold on
plotSpektra(psi2,'linewidth',2)
hold off
legend('s = 1','s = 1.2')
psi1 = SO3SobolevKernel
  bandwidth: 15
  halfwidth: 8.1°
 
 
psi2 = SO3SobolevKernel
  bandwidth: 15
  halfwidth: 8°

Both profiles oscillate because they are truncated at bandwidth 15. The spectrum for \(s=1.2\) rises faster, placing more weight on fine angular variation.

The Laplace kernel

The Laplace kernel sets its degree-zero coefficient to zero and uses

\[ \psi(t)=\sum_{n=1}^{\infty} \frac{2n+1}{4n^2(2n+2)^2}\mathcal U_{2n}(t). \]

psi = SO3LaplaceKernel

figure
subplot(1,2,1)
plot(psi,'linewidth',2)
subplot(1,2,2)
plotSpektra(psi,'linewidth',2)
psi = SO3LaplaceKernel
  bandwidth: 4
  halfwidth: 55°

The profile is not a normalized density because its mean, the degree-zero coefficient, is zero. MTEX stores this kernel only to bandwidth 4, so the spectrum panel is four markers falling steeply and then stopping. The series itself continues past them with inverse-power decay.

The squared singularity kernel

The nonnegative squared singularity kernel depends on \(\kappa\in(0,1)\) and has the series

\[ \psi_\kappa(t)=\sum_{n=0}^{\infty} \widehat f_n(\kappa)\mathcal U_{2n}(t). \]

Its Chebyshev coefficients follow the three-term recursion

\[ \widehat f_0=1, \]

\[ \widehat f_1=\frac{1+\kappa^2}{2\kappa} -\frac1{\log\frac{1+\kappa}{1-\kappa}}, \]

\[ \widehat f_n= \frac{(2n-3)(2n+1)(1+\kappa^2)} {(2n-1)(n-1)2\kappa}\widehat f_{n-1}(\kappa) -\frac{2\kappa(n-2)(2n+1)}{2n-3}\widehat f_{n-2}(\kappa). \]

psi1 = SO3SquareSingularityKernel(0.2)
psi2 = SO3SquareSingularityKernel(0.3)

figure
subplot(1,2,1)
plot(psi1,'linewidth',2)
hold on
plot(psi2,'linewidth',2)
hold off
subplot(1,2,2)
plotSpektra(psi1,'linewidth',2)
hold on
plotSpektra(psi2,'linewidth',2)
hold off
legend('\kappa = 0.2','\kappa = 0.3')
psi1 = SO3SquareSingularityKernel
  bandwidth: 5
  halfwidth: 78°
 
 
psi2 = SO3SquareSingularityKernel
  bandwidth: 7
  halfwidth: 55°

The two parameters change both the central concentration and the rate of spectral decay. Unlike the Dirichlet and Sobolev profiles, both curves remain nonnegative.

The bump kernel

The bump kernel depends on a radius \(r\in(0,\pi)\). It is constant inside that radius and exactly zero outside it. With

\[ U_r=\{R\in\mathrm{SO}(3)\mid\lvert\omega®\rvert<r\}, \]

the normalized indicator is

\[ \widetilde\psi_r®=\frac1{\lvert U_r\rvert} \mathbf 1_{\{R\in U_r\}}. \]

The constant is chosen so that the mean on \(\mathrm{SO}(3)\) is one.

psi1 = SO3BumpKernel(30*degree)
psi2 = SO3BumpKernel(40*degree)

figure
subplot(1,2,1)
plot(psi1,'linewidth',2)
hold on
plot(psi2,'linewidth',2)
hold off
subplot(1,2,2)
plotSpektra(psi1,'linewidth',2)
hold on
plotSpektra(psi2,'linewidth',2)
hold off
legend('halfwidth = 30°','halfwidth = 40°')
psi1 = SO3BumpKernel
  bandwidth: 1024
  halfwidth: 30°
 
 
psi2 = SO3BumpKernel
  bandwidth: 1024
  halfwidth: 40°

The flat tops and abrupt cutoffs distinguish the bump kernels from every smooth family above. Representing that discontinuity requires many Chebyshev coefficients; both objects store bandwidth 1024. This can lead to high runtimes even though the real-space definition is simple.

close all

References

Next

Continue with Wigner-D Functions to see the harmonic basis whose radial coefficient blocks collapse to the single coefficient per degree used on this page.

Citing this page. This page is part of the documentation of MTEX, a free and open source MATLAB toolbox for analyzing and modeling crystallographic textures. It was written by The MTEX Developers and is published at https://mtex-toolbox.github.io/SO3Kernels.html. If you use MTEX, or reuse text or figures from this page, in your research, please cite

F. Bachmann, R. Hielscher, H. Schaeben: Texture Analysis with MTEX - Free and Open Source Software Toolbox, Solid State Phenomena 160 (2010), 63-68. 10.4028/www.scientific.net/SSP.160.63

BibTeX
@article{bachmann2010mtex,
  author  = {F. Bachmann and R. Hielscher and H. Schaeben},
  title   = {Texture Analysis with MTEX - Free and Open Source Software Toolbox},
  journal = {Solid State Phenomena},
  volume  = {160},
  pages   = {63-68},
  year    = {2010},
  doi     = {10.4028/www.scientific.net/SSP.160.63},
  url     = {https://doi.org/10.4028/www.scientific.net/SSP.160.63}
}

Other papers describing specific MTEX methods are listed under Publications — please cite the one that best fits your application. The MTEX source code is licensed under the GNU General Public License v2.0; the text and figures of this documentation are licensed under CC BY 4.0, which permits reuse — including by automated systems — provided The MTEX Developers and this page are credited.