8,153
edits
Changes
Created page with "High Speed Video is a great way of analyzing your Running Form. While high end equipment is extremely expensive, there are a number of options for relatively inexpensive c..."
High Speed Video is a great way of analyzing your [[Running Form]]. While high end equipment is extremely expensive, there are a number of options for relatively inexpensive cameras with this ability.
=Cameras with High Speed Video=
{| class="wikitable"
! Camera
! Resolution
! Pixel Count
! Resolution
|-
| rowspan="3"|
[http://www.amazon.com/dp/B004H3X1F2 Casio EX-ZR100] ($360)
Casio EX-ZR10
| 432 x 320
| 138.2K
| 240
|-
| 224 x 160
| 35.8K
| 480
|-
| 224 x 64
| 14.3K
| 1000
|-
| rowspan="4"|
Casio EX-ZR1000
Casio EX-ZR700
Casio EX-ZR400
[http://www.amazon.com/Casio-Exilim-Ex-zr300-Digital-Ex-zr300gd/dp/B0085ME7HC Casio EX-ZR300] ($369)
[http://www.amazon.com/Casio-Exilim-Ex-zr200-Digital-Ex-zr200we/dp/B006596OUA Casio EX-ZR200] ($320)
Casio EX-ZR20
Casio EX-ZR15
| 640x480
| 307.2K
| 120
|-
| 512x384
| 196.6K
| 240
|-
| 224x160
| 35.8K
| 480
|-
| 224x64
| 14.3K
| 1000
|-
| rowspan="2"|
[http://www.amazon.com/Nikon-Digital-Camera-System-10-30mm/dp/B005OGQXJW Nikon J1] ($400)
| 640 x 240
| 153.6K
| 400 (5 second max)
|-
| 320 x 120
| 38.4K
| 1200 (5 second max)
|-
| rowspan="3"|
[http://www.amazon.com/GoPro-CHDHX-301-HERO3-Black-Edition/dp/B009TCD8V8 GoPro Hero3 Black Edition] ($400)
| 1280x960
| 1228.8K
| 100
|-
| 1280x720
| 921.6K
| 120
|-
| 848x480
| 407K
| 240
|-
| [http://www.amazon.com/GoPro-CHDHN-301-HERO3-Silver-Edition/dp/B009PK9S90 GoPro Hero3 Silver Edition] ($300)
| 848x480
| 407K
| 120
|}
=Camera Recommendations=
There are pros and cons to the various cameras.
* I've used the Casio cameras a number of times, and they are easy to use and work well. The resolution and quality of the higher frame rates it too poor to be of much use, so don't expect to be able to use the 1000 fps mode.
* You can sometimes get [http://go.fellrnr.com/?id=35454X937677&xs=1&url=http%3A%2F%2Fwww.ebay.com%2Fsch%2FDigital-Cameras-%2F31388%2Fi.html%3F_from%3DR40%26_nkw%3Dcasio%2Bexilim%2Bhigh%2Bspeed%26_sop%3D1 used High Speed EXILIM cameras on ebay] for a reasonable cost.
* The Nikon J1 is crippled by its 5 second maximum record time.
* The GoPro a good frame rate and a nice resolution, as well as a WiFi remote control
* There is no LCD screen for replay of the video on the GoPro, so you need to by the [http://www.amazon.com/GoPro-Touch-BacPac-HERO-Cameras/dp/B009PK9SB8 LCD Screen] for $80.
=Evaluating the video=
The simplest approach is to step through the video frame by frame, which is possible with many software video players. For a more detailed analysis you can extract each frame into a separate photo file using the free open source software [http://www.ffmpeg.org/ FFMpeg]. You can use the following command to extract separate images, but you probably want to extract a short relevant clip before you run this command or you will end up with too many image files to handle.
ffmpeg -i input.avi -f image2 image-%4d.jpeg
Where:
* Input.avi is the name of your input video file
* image-%4d.jpeg is the name of the output files, with %4d replaced by the frame number
=Sample Output=
Below are four consecutive frames from a recording at 120 fps to give a sense of the resolution and timing of the available video from a Casio camera. These pictures look identical on first glance, but there is slight movement visible if you rapidly swap between the images.
{| class="wikitable"
|- valign="top"
|[[File:HSVA-Sample-0413.jpg|none|thumb|x300px]]
|[[File:HSVA-Sample-0414.jpg|none|thumb|x300px]]
|[[File:HSVA-Sample-0415.jpg|none|thumb|x300px]]
|[[File:HSVA-Sample-0416.jpg|none|thumb|x300px]]
|}
=Automated Analysis Software=
I am hoping to write some software that will perform some automated analysis. Here are my current thoughts on the algorithm that could be used.
* Capture:
** Shoot so that the runner is shown from the waist down.
** Use good light to ensure a fast shutter speed.
** The runner should be against a relatively plain background, on flat, level ground.
** Put markers on the runner over the hip, knee, ankle, heel and forefoot.
* Processing:
** Scan the video, extracting each frame.
*** This may be the trickiest part, as working with video in code is rather nasty.
** Scan each frame to detect the five markers and reduce them to the x/y coordinates.
** For each set of five markers, identify the body positions:
*** The hip will be the highest.
*** The knee will be next highest.
*** The forefoot will be furthest away of the remaining three.
*** The heel and ankle can be found based on the angle between then and the forefoot.
** Find the frames that represent the first contact. This will be the first frame where either the forefoot or heel ceases to move.
** Find the frames that represent the last contact. This will be the first frame that follows first contact where both the forefoot and heel are in motion.
** For the first contact frame:
*** Measure the angle of the heel/forefoot line to estimate strike angle and therefore strike index. This can be categorized into FFS, MFS, RFS.
*** Find the horizontal distance from the middle of the foot to the hip to check for overstriding.
*** Look at the angle between the hip/knee and the knee/ankle to determine how straight the leg is. A straighter leg may indicate a higher impact force.
** Evaluate the frames between first and last contact:
*** Determine if the heel touches down at any point. This can further categorize FFS.
*** Look at the change in knee angle to see how the landing force is absorbed.
** Evaluate the frames between two first contact points:
*** Measure [[Cadence]].
*** Measure the contact time, the float time, and the ratio between the two.
*** Try to determine paw back from the maximum horizontal distance from the midfoot to the hip and the horizontal distance at contact.
*** Try to determine the probable horizontal speed of the foot at contact.
*** Try to evaluate the peak deceleration of the hip on landing to determine impact forces.
** Output metrics and possibly key images with overlays of the angles and lines.
=Cameras with High Speed Video=
{| class="wikitable"
! Camera
! Resolution
! Pixel Count
! Resolution
|-
| rowspan="3"|
[http://www.amazon.com/dp/B004H3X1F2 Casio EX-ZR100] ($360)
Casio EX-ZR10
| 432 x 320
| 138.2K
| 240
|-
| 224 x 160
| 35.8K
| 480
|-
| 224 x 64
| 14.3K
| 1000
|-
| rowspan="4"|
Casio EX-ZR1000
Casio EX-ZR700
Casio EX-ZR400
[http://www.amazon.com/Casio-Exilim-Ex-zr300-Digital-Ex-zr300gd/dp/B0085ME7HC Casio EX-ZR300] ($369)
[http://www.amazon.com/Casio-Exilim-Ex-zr200-Digital-Ex-zr200we/dp/B006596OUA Casio EX-ZR200] ($320)
Casio EX-ZR20
Casio EX-ZR15
| 640x480
| 307.2K
| 120
|-
| 512x384
| 196.6K
| 240
|-
| 224x160
| 35.8K
| 480
|-
| 224x64
| 14.3K
| 1000
|-
| rowspan="2"|
[http://www.amazon.com/Nikon-Digital-Camera-System-10-30mm/dp/B005OGQXJW Nikon J1] ($400)
| 640 x 240
| 153.6K
| 400 (5 second max)
|-
| 320 x 120
| 38.4K
| 1200 (5 second max)
|-
| rowspan="3"|
[http://www.amazon.com/GoPro-CHDHX-301-HERO3-Black-Edition/dp/B009TCD8V8 GoPro Hero3 Black Edition] ($400)
| 1280x960
| 1228.8K
| 100
|-
| 1280x720
| 921.6K
| 120
|-
| 848x480
| 407K
| 240
|-
| [http://www.amazon.com/GoPro-CHDHN-301-HERO3-Silver-Edition/dp/B009PK9S90 GoPro Hero3 Silver Edition] ($300)
| 848x480
| 407K
| 120
|}
=Camera Recommendations=
There are pros and cons to the various cameras.
* I've used the Casio cameras a number of times, and they are easy to use and work well. The resolution and quality of the higher frame rates it too poor to be of much use, so don't expect to be able to use the 1000 fps mode.
* You can sometimes get [http://go.fellrnr.com/?id=35454X937677&xs=1&url=http%3A%2F%2Fwww.ebay.com%2Fsch%2FDigital-Cameras-%2F31388%2Fi.html%3F_from%3DR40%26_nkw%3Dcasio%2Bexilim%2Bhigh%2Bspeed%26_sop%3D1 used High Speed EXILIM cameras on ebay] for a reasonable cost.
* The Nikon J1 is crippled by its 5 second maximum record time.
* The GoPro a good frame rate and a nice resolution, as well as a WiFi remote control
* There is no LCD screen for replay of the video on the GoPro, so you need to by the [http://www.amazon.com/GoPro-Touch-BacPac-HERO-Cameras/dp/B009PK9SB8 LCD Screen] for $80.
=Evaluating the video=
The simplest approach is to step through the video frame by frame, which is possible with many software video players. For a more detailed analysis you can extract each frame into a separate photo file using the free open source software [http://www.ffmpeg.org/ FFMpeg]. You can use the following command to extract separate images, but you probably want to extract a short relevant clip before you run this command or you will end up with too many image files to handle.
ffmpeg -i input.avi -f image2 image-%4d.jpeg
Where:
* Input.avi is the name of your input video file
* image-%4d.jpeg is the name of the output files, with %4d replaced by the frame number
=Sample Output=
Below are four consecutive frames from a recording at 120 fps to give a sense of the resolution and timing of the available video from a Casio camera. These pictures look identical on first glance, but there is slight movement visible if you rapidly swap between the images.
{| class="wikitable"
|- valign="top"
|[[File:HSVA-Sample-0413.jpg|none|thumb|x300px]]
|[[File:HSVA-Sample-0414.jpg|none|thumb|x300px]]
|[[File:HSVA-Sample-0415.jpg|none|thumb|x300px]]
|[[File:HSVA-Sample-0416.jpg|none|thumb|x300px]]
|}
=Automated Analysis Software=
I am hoping to write some software that will perform some automated analysis. Here are my current thoughts on the algorithm that could be used.
* Capture:
** Shoot so that the runner is shown from the waist down.
** Use good light to ensure a fast shutter speed.
** The runner should be against a relatively plain background, on flat, level ground.
** Put markers on the runner over the hip, knee, ankle, heel and forefoot.
* Processing:
** Scan the video, extracting each frame.
*** This may be the trickiest part, as working with video in code is rather nasty.
** Scan each frame to detect the five markers and reduce them to the x/y coordinates.
** For each set of five markers, identify the body positions:
*** The hip will be the highest.
*** The knee will be next highest.
*** The forefoot will be furthest away of the remaining three.
*** The heel and ankle can be found based on the angle between then and the forefoot.
** Find the frames that represent the first contact. This will be the first frame where either the forefoot or heel ceases to move.
** Find the frames that represent the last contact. This will be the first frame that follows first contact where both the forefoot and heel are in motion.
** For the first contact frame:
*** Measure the angle of the heel/forefoot line to estimate strike angle and therefore strike index. This can be categorized into FFS, MFS, RFS.
*** Find the horizontal distance from the middle of the foot to the hip to check for overstriding.
*** Look at the angle between the hip/knee and the knee/ankle to determine how straight the leg is. A straighter leg may indicate a higher impact force.
** Evaluate the frames between first and last contact:
*** Determine if the heel touches down at any point. This can further categorize FFS.
*** Look at the change in knee angle to see how the landing force is absorbed.
** Evaluate the frames between two first contact points:
*** Measure [[Cadence]].
*** Measure the contact time, the float time, and the ratio between the two.
*** Try to determine paw back from the maximum horizontal distance from the midfoot to the hip and the horizontal distance at contact.
*** Try to determine the probable horizontal speed of the foot at contact.
*** Try to evaluate the peak deceleration of the hip on landing to determine impact forces.
** Output metrics and possibly key images with overlays of the angles and lines.