Title: Mobile Motion Tracking using Onboard Camera
1Mobile Motion Tracking using Onboard Camera
- Supervisor
- Prof. LYU, Rung Tsong Michael
- Presented by
- Lam Man Kit, Wong Yuk Man
2Outline
1. Motivation Objective
2. Motion Input
3. Previous Work
4. Improvement New Components
5. Applications
6. Experimental Result
7. Demo
3Motivation
- Rapid increase in the use of camera-phone.
- Camera-phones processing power is increasing
- Symbian OS makes programming on mobile phone
possible
4Objective
- Develop motion input method on Symbian phone
without requiring additional hardware - This acts as an innovative input method for
applications such as - Camera mouse to control the cursor
- New input method for interactive games
- Gesture input
5What is Motion Input?
A
6Why Motion Input?
- Motion input is quick and convenient
- Common way to play game on mobile phone is to use
joystick or keypad - Limited freedom of movement
- Lack of maneuverability
- Difficult to press the small-sized keypad
- Motion input doesnt have these problems!
7Motion Tracking
- Motion tracking is a process to find the motion
vector of the current frame from the reference
frame - We use block matching algorithm to find the
motion vector
8Block Matching Algorithm
Comparison of blocks
New Position
The motion vector which corresponds to the best
match
(dx,dy)
9Block Matching Algorithm
- Evaluate the "goodness" of a match by
- Sum of Absolute Difference
- Select the candidate block with the lowest error
10Motion Tracking
- Block matching algorithm
- Traditional block matching algorithm is slow
- Our solution Hybrid-type fast block matching
algorithm - That is Adaptive Spiral SEA PPNM SSD algorithm
- Adaptive Search Window
- Spiral Scan Method
- Successive Elimination Algorithm
- Progressive Partial Norm Matching
- Sum of Squared Difference
11Previous Work
- In the previous semester,
- Developed a testing platform in both Window and
Symbian OS - Developed our own block matching algorithm and
feature selection algorithm - Built a real-time translational motion tracking
engine - Developed some applications using the engine
12Improvement on Feature Selection
- A good feature block
- High variance -gt complex block
- Not in a repeated pattern
- If a good feature block is found, the performance
of the motion tracking will be improved - We have made improvements to our existing
algorithm
13Old Feature Selection
- Divide the current frame into squares
- Apply Feature Selection Algorithm to each square
- However, the best feature block may appear
between two squares
Best feature block
14New Feature Selection
- More blocks are sampled
- Sample 26x26 squares with size 15x15 in a 54x54
window - Old feature selection only samples 12x12 squares
- Search in spiral way and stop searching when
selection criteria are matched - Prefer to find a feature block in the center
- Prevent out of bound problem (block appear out of
screen)
15New Feature Selection
- If a feature block is found on the edge, the
following will happen - The tracking algorithm will fail to find the
exact match - Solution
- Apply additional constraint
16New Feature selection
- In order to find a feature block that is not on
the edge, we apply a checking algorithm - Important difference in all directions -gt
interest point
17New Feature Selection
- Now our newest feature selection algorithm
becomes - Find a block with a large variance which
indicates the complexity of the block - Check if the block is on the edge or not by
calculating the SAD between the candidate block
and its 4 neighbors - If either one of the SAD is small -gt the block is
on edge -gt reject - Else the block is not on edge
18Rotation Tracking Engine
- Observation and Motivation
- As we rotate the phone, the object can still be
tracked correctly (center of object always
roughly equals center of green box)
19Rotation Tracking Engine
- First approach
- Track one block by translational motion tracking
engine, rotate the current block and then find
which rotation of the current block best match
with the previous block - Fail if tracking object is the same for different
angle
One-block approach
20Rotation Tracking Engine
- Our approach
- If two blocks are tracked simultaneously, angle
of line connecting the two blocks indicates the
rotation angle of the phone - Use only translational motion tracking
Two-block approach
21Rotation Tracking Engine
- Modification of adaptive search window method to
suit rotation tracking - Phones motion can be both linear motion and
circular motion - Linear Adaptive method used in translational
motion tracking is not used in this engine - Why need adaptive search window method?
- To increase performance based on the fact that
during block matching, reaching the best
candidate block earlier increases the elimination
effect of SEA, PPNM, PDE
22Rotation Tracking Engine
- What to predict?
- Predict the coordinates of the blocks in the next
frame - Given the coordinates of the tracking blocks in
the current frame and the previous frames - When to predict?
- After each run of rotation tracking algorithm
Line L1
Line L2
?
?
Line L3
23Rotation Tracking Engine
- Solution
- Angle between L2 and L3 ?
- ? Tan-1(slope(L2)) Tan-1(slope(L3))
- Coordinates of the next tracking block (xL1, yL1)
are calculated by multiplying the column matrix
of coordinates of the previous block with a
rotation matrix
24Rotation Tracking Engine
- Solution
- The prediction of the positions of the next
tracking blocks should also take the
translational movement into account - Horizontal displacement Tx
- Tx ( xL21 xL22 xL31 - xL32 )/2
- Vertical displacement Ty
- Ty ( yL21 yL22 yL31 - yL32 )/2
- Coordinates of the next tracking block (xL1, yL1)
is calculated by
25Rotation Tracking Engine
- Reducing error by using level
- Increase/decrease one level only when change is
large - To give less sensitive but more desirable output
for game - e.g. skiing game skier face only to 7 directions
- Reduce difficulty of the game, increase
reliability of the engine
26Rotation Tracking Engine
- Some screenshot showing how rotation tracking is
carried out and how the result is displayed
27Rotation Tracking Engine
A short video demo
28Tailor-made background for both engines
- Objective
- Max. performance measurement
- Increase usability
- Condition
- Feature selection can always find a good feature
point - Within certain distance
- No repeat pattern
- Very distinct pattern
- Pattern is nearly the same when rotated. E.g.
Circle is good for rotation detection
29Virtual Mouse
- An application that make full use of the
translational motion tracking engine - Remote control the mouse of PC by mobile phone
using motion as input - Advantages
- It allows input in many directions and provides
high levels of control - Many buttons left for other purposes
- E.g. Joystick can be used as course adjustment of
mouse cursor - E.g. Some buttons can be used as shortcuts of
applications
30Virtual Mouse
31Virtual Mouse
- Server
- Configure Bluetooth device to provide RFComm
Service and regards the Bluetooth transmission
port as Comm. Port - Server receives message from that Comm. Port
- Call function in MouseAction.h to make the mouse
move and trigger mouse click event
32Virtual Mouse
- Client
- Search for Bluetooth device nearby
- Connect to the selected Bluetooth device
- Every time motion tracking algorithm finishes,
results are sent to server (14 times/sec) - Joystick and keypad can also be used to control
mouse in PC (Multi-button mouse)
33Car Racing Game
- A Car Racing Game is developed using the motion
tracking engine. - Game lags. It is because
- The engine takes time to find the motion vector
- CPU speed of the Symbian phones is low
- Solutions
- Double Buffering
- Direct Screen Access
34Skiing Game
- We have developed a skiing game that makes use of
the rotation tracking engine - Rotate the phone to control the angle of the
skier - After using the rotation tracking engine
- The game becomes more interactive
- The game has more degree of freedom for rotating
the skier
35Skiing Game
36Skiing Game
- The process of using the rotation tracking engine
is very simple - Create an instance of the tracking engine
- Call the function of the engine to find the
motion vector - Use the motion vector for the game logic
37Skiing Game
38Experimental Result on Symbian phone
- Testing Environment
- Platform
- Symbian Phone Nokia 6600
- Algorithm
- Our final (hybrid-type) algorithm (Block matching
algorithm featured with Adaptive Window, Spiral
Scan, SEA, PPNM and PDE method) - Algorithm parameter
- Block size 17 x 17 (pixels)
- Search window size 16 x 16 (pixels)
- Number of block to track in each run of algorithm
1 block ONLY
39Result
40Experimental Result on Symbian phone
- Testing Result (avg time to run)
- Final algorithm
- 7ms
- Partial Spiral algorithm
- 22ms
- Full Exhaustive Search algorithm (the most
simplest one) - 55ms
41Result
42Conclusion
- We have developed
- The real-time motion tracking algorithm and
feature selection method - The translational and rotational motion tracking
engine on Symbian - A series of applications/games that make full use
of our engines
43Demo
44Demo
- Act as an innovative input device for games
45Q A
46 47Experimental Result1 - Backgrounds
48Experimental Result2 - Backgrounds
49Stereo
- If we want to track the movement in 3D, we have
to - Use two cameras
- Know the focal length of the cameras
- Know the distance between two cameras
- Depth can be recovered with two images and
triangulation
50Stereo
- Therefore, stereo has two steps
- Finding matching points in the images
- Then using them to compute depth.
P
P1
P2
O2
O1
51Stereo
- Suppose we have found the matching point P. Now
the step to compute the depth is as follow
Note y-axis is perpendicular to the slide
b distance between two cameras
f focal length of the cameras
52Stereo
- If b is the distance between the two cameras, and
f is the focal length of the cameras, we have - Use similar triangular, we can solve to get
53Mono
- In our project, only one camera is available in
the Symbian phone - If we want to find the z-axis movement, we can
find it by comparing the size of the capture
image - Getting closer -gt larger image
- Getting farther -gt smaller image
- However, we have tried that using this algorithm
is not accurate enough