Quaternions are still largely misunderstood and often considered an “exotic” signal representation without much practical utility despite the fact that they have been around the signal and image processing community for more than 30 years now. The main aim of this article is to counter this misconception and to demystify the use of quaternion algebra for solving problems in signal and image processing. To this end, we propose a comprehensive and objective overview of the key aspects of quaternion representations, models, and methods and illustrate our journey through the literature with flagship applications. We conclude this work by an outlook on the remaining challenges and open problems in quaternion signal and image processing.
I can't comment on the DSP applications in the article, but for representing rotations and orientations in 3D (Computer rendersing, robotics, aerospace etc), they can be effectively treated as black boxes. There are a handful of operations you can perform between quaternions and other quaternions, vectors, and scalers, to do anything you would want in this domain. Practially, you may just be calling functions like "Quaternion::from_unit_vecs()` etc.
Call it a Rotor if you'd like; it doesn't matter when viewing it this way! Both implementation and application will be the same. The conceptual aspect people prefer about rotors is N/A here. You could also call it a `Orientation` or `Rotation` (eg the struct/class name); maybe that's better than either.
“exotic” signal representation without much practical utility despite the fact that they have been around the signal and image processing community for more than 30 years now.
Maybe they aren't that good? Maxwell's equations got a lot better when they dumped them, same thing with the few uses in video game physics/camera tracing.
Actually Maxwell's equation become unintuitive and become very difficult to model when not using quaternion. Unlike other waveform for example sound, electromagnetic (EM) waves has polarization components that can be intuitively, properly and comprehensively modeled using quaternion. Currently we are using quaternion to model robust and reliable wireless PHY modulation based on polarization that can work in a very limited Line of sight (LoS) environment, the performance is much better than conventional wireless PHY.
I didn't think quaternions are even exotic and have used the extensively to represent rotations. I'm not familiar with video games but it seems a pretty natural fit to the problem. What is the alternative that is so much better?
In 3D space, rotors are quaternions with different labels. If rotors are better, then the only conclusion we can draw is that people don’t like the name “quaternion”.
I mean if you're in highschool and poking under the hood of Roblox or whatever to write your first mod, rotor is a better name for the thing that manages rotations than quaternion.
I would go for something like “orientation”. Or “rotation”. Ordinary English words that represent what are, more or less, ordinary, familiar concepts.
The fact that it’s a “quaternion” or a “rotor” is kind of an implementation detail.
Of these four terms, Quaternion is the most precisely correct. The reason is that rotors are, by definition, constrained. Quaternions can take any value. Due to floating-point precision problems, your rotor will not always be exactly a rotor, but may some multivector which is not a rotor.
This is kind of like representing a point on a sphere using (x,y,z) coordinates. You can call it PointOnSphere or Vector. I would rather call it Vector, because PointOnSphere implies a constraint which won’t be exactly satisfied, and I want to be reminded of that fact. The type name (Vector here, and Quaternion above) represents the object’s structure and the constraints which are actually enforced by the underlying representation.
Yeah, why remove quaternions if the math is the same as with rotors? They also have their own value, without applications to geometry. The article is good, though.
BTW, it's easy to understand the relations between i,j,k if you're familiar with Pauli matrices.
I just dabbled in webgl/threejs and tried creating a small movement engine and was confused from beginning to end. Quaternions as a black box is pretty accurate.
To add to what the other guy said, rotors (by extension Clifford Algebra) is better. A fatal issue with Quaternions is that while they handle rotations perfectly, things like the norm or cross product of two vectors is messy.
This is unsurprising when several of your coordinates become -1 when multiplied. That's why historically Gibbs Heaviside (dot and cross product) became the dominant vector algebra over quaternions.
Clifford Algebra is the better than both, as you can seamlessly do dot, cross (wedge in CA) and can also embed quaternions within the system. I've heard that it can also accommodate some of the nonmetrical aspects that make differential forms appealing for manifold integration, but that's currently outside of my range of knowledge.
The answer also includes a link that shows many other representations including Einstein's "4d generally covariant tensor calculus".
The point is that the most common formulation today is not the one Maxwell made (with 12 equations). The idea is preserved, but it was Gibbs and Heaviside that formulated the current 4 equation representation.
For the visually inclined I enjoyed Visualizing Quaternions by Andrew Hanson.
Haven’t yet read the article in the post but I am curious on the applications mentioned.
You should jump straight to geometric algebra. It's actually simple there. Quaternions and Complex Numbers are about just some not so special multivectors.
I think this is pretty on par with telling someone they need to understand category theory if they’re playing around with Haskell/FP. I have lots of experience using quaternions in robotics/animation, but I never found geometric algebra particularly compelling - and I’ve given it several tries to sit down and read through various textbooks (and I have a PhD in Category theory/differential geometry, I don’t think it can be attributed to a skill issue with algebra or geometry).
Notice my use of the term "understand". If you are just using from some library quaternions as a black-box, you really needn't understand anything about them, but if you want understand them it's probably easier to go through geometric algebra first. Otherwise you're basically just learning geometric algebra with half the rules missing and it makes no sense.
They're not that magical. Multiplication with complex numbers is a neat way to do 2D rotation and scaling. It's the same idea with multiple dimensions.
Quaternions are still largely misunderstood and often considered an “exotic” signal representation without much practical utility despite the fact that they have been around the signal and image processing community for more than 30 years now. The main aim of this article is to counter this misconception and to demystify the use of quaternion algebra for solving problems in signal and image processing. To this end, we propose a comprehensive and objective overview of the key aspects of quaternion representations, models, and methods and illustrate our journey through the literature with flagship applications. We conclude this work by an outlook on the remaining challenges and open problems in quaternion signal and image processing.