There is an error in the code, unfortunately. In integrate_g_simpson, this for loop is not constructed correctly:

“for (uint32_t i=1; i < t; nn; i += 2)"

From looking at the page source I'm guessing this should be the correct loop? :

"for (uint32_t i=1; i < nn; i += 2)"

Also, a full code dump (in github, zip file, or whatever you prefer) would be awesome ðŸ™‚

]]>Needlets, and Wavelets in general, are ways of representing signals that bias the information content in different ways than the SH method. Classical SH is the smoothest possible solution to representing signals on the sphere and are generated to represent low frequency data first and subsequently higher and higher frequencies afterwards. Wavelets can be generated to represent low-and-mid signals first and clean up the rest of the information content later, partially sharing frequency ranges across bands. It’s a different way of representing signals that allows you to concentrate on squeezing out the information you are interested in the first few coefficients and move the non-interesting data into later coefficients. Wavelets have other rules (self similar scaling and translation) that make them easier to generate, but these rules are arbitrary “rules of the game” that are not fundamental to the problem of signal representation.

We will never be using all the coefficients of a signal (and SH requires many, many levels to converge, ringing all the way down) so front-loading the information into the first few coefficients will give us fast convergence. Fast convergence is something SH does not have and would be useful, but none of the signal processing literature talks about speed of convergence. They do however talk about sparsity of a representation which is approximately the same thing. So that’s the route I have been looking in. The goal is to make a system for spherical signal representation that can be computed fast (polynomial or table based), converges fast (for the kinds of information I am interested in) and is efficiently directable (this requires rotational symmetry).

So to directly answer your question, by ignoring some of the symmetry in the spherical signal we get a low frequency signal using less coefficients with less ringing that’s not as smooth as SH but converges faster when you add higher frequency bands. Some win, some loss, net advantage.

]]>N(1,2) is order 3 and can cover the sphere with 6 points, and N(0,2) is constant and covers the sphere with 1 point.

If I understand this all correctly, and I probably don’t, that means these 7 basis functions can be used to encode arbitrary spherical functions (appropriately band-limited).

So that’s 7 coefficients for an order-3 scheme, whereas SH requires 16 coefficients for same…

What I want to know is, would a light probe expressed in this basis with just 7 coefficients be as faithful as the 16-coefficient SH representation, or necessarily blurrier?

]]>