[HN Gopher] Quaternions in Signal and Image Processing
___________________________________________________________________
Quaternions in Signal and Image Processing
Author : teleforce
Score : 73 points
Date : 2024-07-01 05:47 UTC (17 hours ago)
(HTM) web link (ieeexplore.ieee.org)
(TXT) w3m dump (ieeexplore.ieee.org)
| teleforce wrote:
| Abstract:
|
| 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.
| the__alchemist wrote:
| 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.
| teleforce wrote:
| Check this application of quaternion for robust UAV flight
| control:
|
| Quaternion vs Euler Angles for UAV position control:
|
| https://www.youtube.com/watch?v=0VAc_G79POE
| frozenport wrote:
| "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.
| bdjsiqoocwk wrote:
| > Maxwell's equations got a lot better when they dumped them,
|
| Tell me you don't understand special relativity.
| messe wrote:
| Tell me you don't understand differential forms.
| Iwan-Zotow wrote:
| geometric algebra anyone?
| bdjsiqoocwk wrote:
| My PhD suggests otherwise lol
| rowanG077 wrote:
| 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?
| okaleniuk wrote:
| Rotors. https://marctenbosch.com/quaternions/
| MyFirstSass wrote:
| Thank you for this link.
|
| 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.
| empiricus wrote:
| From your link: "We can notice that 3D Rotors look a lot
| like Quaternions". "In fact the code/math is basically the
| same!"
| dandanua wrote:
| 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.
| klodolph wrote:
| 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".
| bee_rider wrote:
| They do sound weird.
|
| I propose we call them fanciful numbers.
| zardo wrote:
| 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.
| klodolph wrote:
| 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.
| rowanG077 wrote:
| The article itself says they are the same in 3D space. Not
| very convincing that they are actually better. In fact a
| rotor is a unit quaternion...
| 141205 wrote:
| 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.
| bsdooby wrote:
| Dare to elaborate why Maxwell's equations got better, and the
| use cases in the gaming industry which improved thanks to
| dropping them?
| esturk wrote:
| Assuming this is not a tongue in cheek question, you can read
| about it more here:
|
| https://hsm.stackexchange.com/questions/8173/did-maxwell-
| ori...
|
| 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.
| teleforce wrote:
| 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.
| someguydave wrote:
| are you referring to a particular EM modeling software or
| codebase?
| teleforce wrote:
| I'm referring to the EM model of propagation including its
| polarization in 3D representing the real world scenario.
| roger_ wrote:
| Preprint: http://w3.cran.univ-
| lorraine.fr/perso/sebastian.miron/docume...
| theanonymousone wrote:
| My friend worked on this for his Msc thesis (2010-11). I went to
| his defence presentation but still couldn't figure out what these
| "things" are :-|
|
| These and Monads will bite me forever.
| BenoitP wrote:
| You should jump straight to geometric algebra. It's actually
| simple there. Quaternions and Complex Numbers are about just
| some not so special multivectors.
|
| Here are 2 45mn videos you'll not regret:
|
| https://youtu.be/htYh-Tq7ZBI?si=qi9HfU40qKcc_HNc
|
| https://youtu.be/60z_hpEAtD8?si=1M3dDAh7vPjx2Q8Y
| adelpozo wrote:
| 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.
| James_K wrote:
| Quaternions cannot be understood without first understanding
| geometric algebra, at which point the quaternions themselves
| cease to be of consequence.
| chpatrick wrote:
| 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.
| James_K wrote:
| An idea which is encapsulated much better by geometric
| algebra, in which quaternions and complex numbers follow the
| same rules.
| chpatrick wrote:
| That's true but you definitely don't need to understand it
| first.
| James_K wrote:
| I think it would be self-damaging not to.
| catgary wrote:
| 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).
| James_K wrote:
| 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.
___________________________________________________________________
(page generated 2024-07-01 23:01 UTC)