<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nous Technology Limited</title>
    <description>The latest articles on DEV Community by Nous Technology Limited (@nousrun).</description>
    <link>https://dev.to/nousrun</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4013899%2Fdbb0f3fb-79c8-4a67-8ed0-d4634eee4182.png</url>
      <title>DEV Community: Nous Technology Limited</title>
      <link>https://dev.to/nousrun</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nousrun"/>
    <language>en</language>
    <item>
      <title>Keypoints Are Not Movement Understanding: Designing a State Layer for Sports Video AI</title>
      <dc:creator>Nous Technology Limited</dc:creator>
      <pubDate>Wed, 08 Jul 2026 07:07:55 +0000</pubDate>
      <link>https://dev.to/nousrun/keypoints-are-not-movement-understanding-designing-a-state-layer-for-sports-video-ai-kag</link>
      <guid>https://dev.to/nousrun/keypoints-are-not-movement-understanding-designing-a-state-layer-for-sports-video-ai-kag</guid>
      <description>&lt;p&gt;Pose estimation has made sports video analysis look much easier than it really is.&lt;/p&gt;

&lt;p&gt;Give a model a phone video of a tennis player, and it can return a set of body landmarks: shoulder, elbow, wrist, hip, knee, ankle. Run that across frames, and you get a moving skeleton. Add a few overlays, and suddenly the system appears to “understand” the athlete.&lt;/p&gt;

&lt;p&gt;But keypoints are not understanding.&lt;/p&gt;

&lt;p&gt;They are coordinates.&lt;/p&gt;

&lt;p&gt;They tell us where parts of the body appear to be. They do not automatically tell us whether the athlete was balanced, late, loaded, recovering, drifting, or ready for the next ball.&lt;/p&gt;

&lt;p&gt;For sports AI, this distinction matters. A tennis player does not lose a point because a wrist coordinate moved from &lt;code&gt;(x1, y1)&lt;/code&gt; to &lt;code&gt;(x2, y2)&lt;/code&gt;. A player loses the point because the body failed to organize itself in time: the split step was late, the hips opened too early, the recovery step lagged, or the player contacted the ball while already falling out of position.&lt;/p&gt;

&lt;p&gt;That is why a useful sports video system needs more than a pose layer.&lt;/p&gt;

&lt;p&gt;It needs a movement state layer.&lt;/p&gt;




&lt;h2&gt;
  
  
  The pose layer is only the beginning
&lt;/h2&gt;

&lt;p&gt;Most computer vision pipelines for sports video start with something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;video
  -&amp;gt; frame extraction
  -&amp;gt; pose estimation
  -&amp;gt; keypoints
  -&amp;gt; visualization
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a good start. It gives the system a structured representation of the athlete instead of only raw pixels.&lt;/p&gt;

&lt;p&gt;But this pipeline still treats each frame too independently.&lt;/p&gt;

&lt;p&gt;In tennis, the interesting signal is rarely inside one frame. It is usually distributed across a short sequence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prepare -&amp;gt; load -&amp;gt; rotate -&amp;gt; contact -&amp;gt; recover -&amp;gt; reset
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A single frame can show that the player’s knees are bent. It cannot fully explain whether the player loaded early enough, transferred weight efficiently, or recovered in time for the next shot.&lt;/p&gt;

&lt;p&gt;That requires temporal interpretation.&lt;/p&gt;

&lt;p&gt;The system needs to ask questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did the player establish balance before the swing?&lt;/li&gt;
&lt;li&gt;Did the lower body start the movement before the upper body?&lt;/li&gt;
&lt;li&gt;Did the player contact the ball while moving forward, sideways, or backward?&lt;/li&gt;
&lt;li&gt;How long did recovery take after contact?&lt;/li&gt;
&lt;li&gt;Was the player ready for the next ball?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not raw keypoint questions. They are movement state questions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Coordinates need to become events
&lt;/h2&gt;

&lt;p&gt;A better pipeline does not stop at pose estimation.&lt;/p&gt;

&lt;p&gt;It turns coordinates into events.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;video
  -&amp;gt; keypoints
  -&amp;gt; normalized body geometry
  -&amp;gt; temporal features
  -&amp;gt; movement events
  -&amp;gt; movement states
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example, a tennis swing may contain events such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;split step
unit turn
maximum racket preparation
forward acceleration
contact
follow-through
first recovery step
neutral reset
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Some of these events are visible in the racket. Some are visible in the torso. Some are visible in the feet. Some are not obvious unless the system compares multiple frames before and after contact.&lt;/p&gt;

&lt;p&gt;This is where sports video analysis becomes different from simple pose visualization.&lt;/p&gt;

&lt;p&gt;A pose overlay can show the body.&lt;/p&gt;

&lt;p&gt;An event layer can explain what the body is doing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why tennis is a good stress test
&lt;/h2&gt;

&lt;p&gt;Tennis is a difficult sport for video understanding because the meaningful movement is fast, asymmetric, and context-dependent.&lt;/p&gt;

&lt;p&gt;The player may hit the same forehand in several different body states:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;balanced forehand
late forehand
open-stance forehand
defensive forehand
running forehand
recovery forehand
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To a ball-tracking system, these may all look like successful shots if the ball goes in.&lt;/p&gt;

&lt;p&gt;To a movement system, they are not the same.&lt;/p&gt;

&lt;p&gt;A clean-looking shot can still be a bad movement pattern if the player is late, unstable, or unable to recover. The ball may cross the net, but the body may already be losing the next point.&lt;/p&gt;

&lt;p&gt;This is the gap between shot analysis and athlete analysis.&lt;/p&gt;

&lt;p&gt;Shot analysis describes the result.&lt;/p&gt;

&lt;p&gt;Athlete analysis describes the body process that produced the result.&lt;/p&gt;




&lt;h2&gt;
  
  
  From keypoints to movement states
&lt;/h2&gt;

&lt;p&gt;A movement state is a higher-level interpretation of body organization across time.&lt;/p&gt;

&lt;p&gt;Instead of storing only:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"left_knee"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;312&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;640&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"right_knee"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;420&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;638&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"left_hip"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;520&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"right_hip"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;430&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;522&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the system should eventually infer something closer to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"pre-contact"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"balance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"drifting_left"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"load"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"late"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rotation_sequence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"upper_body_first"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"recovery_risk"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"high"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"next_ball_readiness"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"low"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This second representation is not a replacement for keypoints. It is built on top of them.&lt;/p&gt;

&lt;p&gt;The keypoints are the measurement substrate.&lt;/p&gt;

&lt;p&gt;The movement state is the usable signal.&lt;/p&gt;




&lt;h2&gt;
  
  
  The hard part: normalization
&lt;/h2&gt;

&lt;p&gt;Phone sports video is messy.&lt;/p&gt;

&lt;p&gt;The camera angle changes. The player size changes. The court position changes. Lighting changes. The video may be filmed from behind, from the side, or from a diagonal angle. The player may be partially occluded.&lt;/p&gt;

&lt;p&gt;That means raw pixel coordinates are often not enough.&lt;/p&gt;

&lt;p&gt;Before building movement states, the system usually needs normalization layers such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body-relative coordinates
joint angle estimation
torso orientation
stance width
center-of-mass proxy
court-relative direction
frame-to-frame velocity
phase-relative timing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is not just to know where the wrist is on the screen.&lt;/p&gt;

&lt;p&gt;The goal is to understand what the wrist, torso, hips, legs, and feet are doing relative to the athlete’s own movement structure.&lt;/p&gt;

&lt;p&gt;This is why sports AI cannot be only a detection problem. It becomes a representation problem.&lt;/p&gt;

&lt;p&gt;For a deeper technical framing of single-camera movement reconstruction, we published a white paper on SpatialForm’s approach to phone sports video and 3D kinematic representation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.nous.run/WhitePaper/" rel="noopener noreferrer"&gt;SpatialForm Single-Camera 3D Kinematics White Paper&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  A simple conceptual pipeline
&lt;/h2&gt;

&lt;p&gt;A practical movement-understanding system might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Detect athlete body landmarks
2. Smooth and validate keypoints across frames
3. Normalize body geometry
4. Estimate temporal features
5. Detect movement phases
6. Identify movement events
7. Infer movement states
8. Present the result in a reviewable form
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last step matters.&lt;/p&gt;

&lt;p&gt;If the system only outputs abstract numbers, most athletes and coaches will not use it. The result needs to be inspectable. The user should be able to see the movement, pause it, compare phases, and understand why the system labeled a state as late, unstable, or not ready.&lt;/p&gt;

&lt;p&gt;In other words, the output should not be only a score.&lt;/p&gt;

&lt;p&gt;It should be a movement representation.&lt;/p&gt;

&lt;p&gt;This is also why we use the term &lt;a href="https://www.nous.run/PerformanceForm/" rel="noopener noreferrer"&gt;Performance Form&lt;/a&gt; to describe the intermediate representation between raw video and athlete-side movement understanding.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why “readiness” is more useful than isolated technique labels
&lt;/h2&gt;

&lt;p&gt;Many sports AI products try to label isolated technical errors:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;elbow too low
knee angle too small
shoulder rotation insufficient
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These labels can be useful, but they are often too static.&lt;/p&gt;

&lt;p&gt;In real play, the more important question is usually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Was the athlete ready for the next action?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For tennis, this is especially important.&lt;/p&gt;

&lt;p&gt;A player can hit a technically acceptable shot and still fail to recover. A player can make contact cleanly and still be late for the next ball. A player can win one stroke and lose the rally because the body never returned to a ready state.&lt;/p&gt;

&lt;p&gt;That is why movement understanding should include recovery and next-action readiness, not only contact mechanics.&lt;/p&gt;

&lt;p&gt;The point is not to judge a frozen pose.&lt;/p&gt;

&lt;p&gt;The point is to understand the movement cycle.&lt;/p&gt;




&lt;h2&gt;
  
  
  Keypoints are the alphabet, not the language
&lt;/h2&gt;

&lt;p&gt;Pose estimation gives sports AI an alphabet.&lt;/p&gt;

&lt;p&gt;But an alphabet is not a sentence.&lt;/p&gt;

&lt;p&gt;A sequence of body landmarks becomes useful only when the system learns how those landmarks form movement events, phases, and states.&lt;/p&gt;

&lt;p&gt;For tennis video analysis, the real value is not simply drawing a skeleton on top of a player. The value is turning ordinary phone video into a structured view of how the athlete prepared, moved, hit, recovered, and reset.&lt;/p&gt;

&lt;p&gt;That middle layer is where the hard work begins.&lt;/p&gt;

&lt;p&gt;At SpatialForm, we describe this kind of intermediate representation as &lt;a href="https://www.nous.run/PerformanceForm/" rel="noopener noreferrer"&gt;Performance Form&lt;/a&gt;: a reviewable movement structure built from phone sports video, designed to make athlete-side movement easier to inspect.&lt;/p&gt;

&lt;p&gt;For readers interested in the tennis-specific side of this problem, we also wrote more about &lt;a href="https://www.nous.run/TennisSwingAnalysis/" rel="noopener noreferrer"&gt;tennis swing analysis from phone sports video&lt;/a&gt; and the technical foundation behind &lt;a href="https://www.nous.run/WhitePaper/" rel="noopener noreferrer"&gt;single-camera 3D kinematics&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The broader lesson is simple:&lt;/p&gt;

&lt;p&gt;Sports AI should not stop at seeing the body.&lt;/p&gt;

&lt;p&gt;It should help us understand the movement behind the shot.&lt;br&gt;
&lt;strong&gt;Updated July 2026:&lt;/strong&gt; SpatialForm applies this idea to &lt;a href="https://www.nous.run/TennisSwingAnalysis/" rel="noopener noreferrer"&gt;tennis swing analysis from ordinary phone video&lt;/a&gt;, extending the review beyond ball flight and contact to the athlete’s timing, balance, recovery, and readiness for the next action.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>computervision</category>
      <category>machinelearning</category>
      <category>sports</category>
    </item>
    <item>
      <title>What Ball Tracking Misses in Tennis Video Analysis</title>
      <dc:creator>Nous Technology Limited</dc:creator>
      <pubDate>Fri, 03 Jul 2026 17:13:23 +0000</pubDate>
      <link>https://dev.to/nousrun/what-ball-tracking-misses-in-tennis-video-analysis-2m1k</link>
      <guid>https://dev.to/nousrun/what-ball-tracking-misses-in-tennis-video-analysis-2m1k</guid>
      <description>&lt;p&gt;Most tennis video analysis starts with the ball.&lt;/p&gt;

&lt;p&gt;Where did it land?&lt;br&gt;&lt;br&gt;
How fast did it move?&lt;br&gt;&lt;br&gt;
Was the shot in or out?&lt;br&gt;&lt;br&gt;
What was the trajectory?&lt;/p&gt;

&lt;p&gt;Those are useful questions. But they are not the whole story.&lt;/p&gt;

&lt;p&gt;In tennis, a player can hit a clean-looking shot and still be late for the next ball. A rally can start breaking down before the ball leaves the racket. The visible result may be the shot, but the cause often sits inside the athlete’s movement: timing, balance, recovery, and readiness.&lt;/p&gt;

&lt;p&gt;That is the layer we are exploring with SpatialForm.&lt;/p&gt;

&lt;p&gt;We are building SpatialForm as an early AI sports product at NOUS TECHNOLOGY LIMITED. It focuses on turning ordinary phone sports video into &lt;strong&gt;Performance Form&lt;/strong&gt; — a visible movement layer for reviewing timing, balance, recovery, and next-ball readiness.&lt;/p&gt;

&lt;p&gt;Official site: &lt;a href="https://www.nous.run/" rel="noopener noreferrer"&gt;SpatialForm official site&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Ball tracking explains the result
&lt;/h2&gt;

&lt;p&gt;Ball tracking is valuable because it turns the most obvious part of tennis into data. It can help answer questions like where the ball landed, how fast it moved, and what happened after contact.&lt;/p&gt;

&lt;p&gt;For players, this is useful. For coaches, it creates a clearer record of the rally.&lt;/p&gt;

&lt;p&gt;But the ball is often the receipt, not the transaction.&lt;/p&gt;

&lt;p&gt;By the time the ball has landed, the movement decision has already happened. A player may lose the rally because the split step was late. Because the first step went in the wrong direction. Because the body was off-balance at contact. Because recovery was slow.&lt;/p&gt;

&lt;p&gt;None of those problems are fully explained by the ball alone.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tennis often breaks down before contact
&lt;/h2&gt;

&lt;p&gt;Many tennis mistakes look like shot problems. A forehand goes long. A backhand lands short. A clean shot does not lead to control of the point.&lt;/p&gt;

&lt;p&gt;But if you look earlier in the sequence, the issue may not be the swing itself. It may be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the player loaded too late&lt;/li&gt;
&lt;li&gt;the first step was delayed&lt;/li&gt;
&lt;li&gt;the contact point was reached under poor balance&lt;/li&gt;
&lt;li&gt;the body was still moving away from the next ball&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why normal replay is limited. A replay can show what happened, but it does not always make the movement structure obvious. The important frame is often not the contact frame. It may be the frame before contact. Or three frames before contact.&lt;/p&gt;

&lt;p&gt;That is where the athlete layer starts to matter.&lt;/p&gt;




&lt;h2&gt;
  
  
  The athlete layer behind every shot
&lt;/h2&gt;

&lt;p&gt;When we say “athlete layer,” we mean the visible movement structure behind the shot. Not medical diagnosis. Not lab-grade biomechanics. Not replacing a coach.&lt;/p&gt;

&lt;p&gt;We mean practical movement signals that can be reviewed from video:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;timing &amp;amp; loading&lt;/li&gt;
&lt;li&gt;balance &amp;amp; transfer&lt;/li&gt;
&lt;li&gt;contact stability&lt;/li&gt;
&lt;li&gt;recovery &amp;amp; court re-entry&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the gap between shot analysis and Performance Form. Shot tracking explains the ball. Performance Form explains whether the athlete was ready for the next action.&lt;/p&gt;

&lt;p&gt;More on Performance Form: &lt;a href="https://www.nous.run/PerformanceForm/" rel="noopener noreferrer"&gt;Performance Form&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why phone video is a tough computer vision problem
&lt;/h2&gt;

&lt;p&gt;Using ordinary phone video sounds simple, but it creates several hard engineering problems. Phone videos are not recorded in controlled lab conditions.&lt;/p&gt;

&lt;p&gt;For a computer vision system, they bring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unstable camera angles &amp;amp; motion blur&lt;/li&gt;
&lt;li&gt;changing lighting &amp;amp; partial occlusion&lt;/li&gt;
&lt;li&gt;racket and limb overlap&lt;/li&gt;
&lt;li&gt;inconsistent player distance from the camera&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The harder challenge is turning noisy visual information into a useful movement review. Standard pose estimation models can struggle here because a practical tennis movement analysis system needs to understand &lt;em&gt;time&lt;/em&gt;, not just shape.&lt;/p&gt;

&lt;p&gt;It needs to ask: what happened before contact? Did the player recover? Was the movement sequence repeatable? A single pose frame is not enough. The value comes from the sequence.&lt;/p&gt;




&lt;h2&gt;
  
  
  From phone sports video to Performance Form
&lt;/h2&gt;

&lt;p&gt;SpatialForm is built around the idea that ordinary sports video can reveal more than a replay. The goal is to transform phone video into a reviewable movement signal.&lt;/p&gt;

&lt;p&gt;At a high level, that means looking beyond a single shot result and focusing on the athlete’s movement sequence:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;load → prepare → contact → recover → reset&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For tennis, the important question is not only: &lt;em&gt;Where did the ball go?&lt;/em&gt;&lt;br&gt;&lt;br&gt;
It is also: &lt;em&gt;Was the athlete ready for the next action?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Starting with tennis, the goal is to make these movement signals easier to see from the videos players and coaches already record.&lt;/p&gt;

&lt;p&gt;Tennis Swing Analysis page: &lt;a href="https://www.nous.run/TennisSwingAnalysis/" rel="noopener noreferrer"&gt;Tennis Swing Analysis&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters for players and coaches
&lt;/h2&gt;

&lt;p&gt;Most amateur players already record video, but it is deeply underused. A player may watch a clip and say: &lt;em&gt;"I was late. My balance was off."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The problem is that these observations are often vague. They are felt, but not clearly seen. If movement signals can be made more visible, video review becomes actionable. A coach can point to a moment before contact. A player can compare recovery between two shots.&lt;/p&gt;

&lt;p&gt;This does not remove the human coach. It gives the player and coach a clearer visual layer to discuss.&lt;/p&gt;




&lt;h2&gt;
  
  
  What we are building
&lt;/h2&gt;

&lt;p&gt;The product direction is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phone Sports Video → Performance Form → Personal Athletic Intelligence&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of only asking what happened to the ball, SpatialForm asks what happened to the athlete behind the shot. The long-term goal is to help players understand movement patterns that are hard to see in normal replay.&lt;/p&gt;

&lt;p&gt;This is still early. We are not claiming that a phone replaces a professional biomechanics lab. The goal is more practical: Can ordinary sports video become a better movement review tool?&lt;/p&gt;

&lt;p&gt;That is the question we are exploring.&lt;/p&gt;

&lt;p&gt;Official site: &lt;a href="https://www.nous.run/" rel="noopener noreferrer"&gt;SpatialForm official site&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing thought
&lt;/h2&gt;

&lt;p&gt;Ball tracking is useful. But in tennis, the ball is only one part of the story.&lt;/p&gt;

&lt;p&gt;The next layer of sports video analysis is not just where the ball went. It is whether the athlete was ready for the next action.&lt;/p&gt;

&lt;p&gt;That is the layer SpatialForm is working to make visible from ordinary phone sports video.&lt;br&gt;
&lt;strong&gt;Updated July 2026:&lt;/strong&gt; SpatialForm applies this idea to &lt;a href="https://www.nous.run/TennisSwingAnalysis/" rel="noopener noreferrer"&gt;tennis swing analysis from ordinary phone video&lt;/a&gt;, extending the review beyond ball flight and contact to the athlete’s timing, balance, recovery, and readiness for the next action.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>computervision</category>
      <category>sports</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
