Webcam Pulse Detector
github.com
github.com
The alternative is not to disclose it, with the risk for you that nobody will reverse engineer or discover by themselves, or the risk for everyone else that this knowledge could be lost forever.
† pending approval, and unless successfully challenged in court (where the patent applies).
Compulsory Licensing[1] is maybe what you're thinking of, but from what I can tell seems to apply mostly to drug patents, or things {the,a} government wants from you. It has a wider applicability in copyrighted forms of IP, I believe.
Patents that are part of some organised standard are often required to be placed under 'FRAND[2] (Fair, reasonable, and non-discriminatory)' compulsory licences to allow for interoperability whilst still allowing the patent holder to receive (reasonable) royalties if they wish.
[1] https://en.wikipedia.org/wiki/Compulsory_licensing
[2] https://en.wikipedia.org/wiki/Reasonable_and_non-discriminat...
If I add a patented process to an important standard, but I don't own the patents, you still don't get those patents just because they are part of some important standard.
They only grant the right to exclude others from doing something. So if i own a patent on X, it gives me the right to prevent others from doing X.
Even if i license my patent on X to you, it does not necessarily mean you can do X, because doing X may also require other patents that my patent is an extension of. In other words:
Imagine we have patented processes, each building on the last. Patent A covers doing thing one Patent B covers doing thing one, then thing two Patent C covers doing thing one, then thing two, then thing three.
Granting you only the right to perform patent C does not enable you to perform the process described by patent C, you'd still need licenses for patent B and patent A to do that.
http://en.wikipedia.org/wiki/Compulsory_license
PS: The only real exception in the USA is the US Government get's to ignore patents at it's digression.
[1] https://play.google.com/store/apps/details?id=si.modula.andr...
See also: http://people.csail.mit.edu/mrub/vidmag/
OpenCV Error: Assertion failed (p.checkVector(2, CV_32S) >= 0) in polylines, file /tmp/buildd/opencv-2.3.1/modules/core/src/drawing.cpp, line 2064
Maybe somebody that knows more about OpenCV than I do can figure out what's wrong.
I did have to downgrade to the ffmpeg (ffmpeg @1.2_1+gpl2+nonfree) port (from ffmpeg-devel) due to build errors in opencv, but worked ok after that.
Couple of the openMDAO packages didn't install either, but didn't seem to harm anything.
This would probably be a bad metric though, you might accidentally be selecting for sociopathic traits or something which might be undesirable in a politician.
I really like their apps and I'm quite proud that they originate from my neck of the woods.
Probably only applicable if you work from home though.
[1] http://www.nonin.com/OEMSolutions/WristOx2-Model-3150-OEM
brew install gfortran
sudo easy_install scipy
sudo port install opencv +python27
export PYTHONPATH=/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/:$PYTHONPATH
wget http://openmdao.org/releases/0.5.0/go-openmdao.py
sudo python ./go-openmdao.py
cd ~/Downloads/webcam-pulse-detector-master/openmdao-0.5.0
. bin/activate
cd ~/Downloads/webcam-pulse-detector-master && python get_pulse.py
Hope it's helpful to anyone else doing the same. OpenCV is segfaulting now, but I may update this later if I get it.
brew upgrade
brew tap homebrew/science
brew install opencv
brew install gfortran
sudo easy_install scipy
mkdir OpenMDAO
cd OpenMDAO/
brew install wget
wget http://openmdao.org/releases/0.5.0/go-openmdao.py
export PYTHONPATH=/usr/local/Cellar/opencv/2.4.4a/lib/python2.7/site-packages/:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/:$PYTHONPATH
sudo python ./go-openmdao.py
cd openmdao-0.5.0/
. bin/activate
#get the project in webcam-pulse-detector I used the github app
cd ../../webcam-pulse-detector/
python get_pulse.py
gulp. fortran?
Imagine being able to look at someone and know their pulse. You'd have a wearable lie detector.
Reminds me of this question on Stack Overflow:
http://stackoverflow.com/questions/12416772/is-there-an-equi...
http://abcnews.go.com/blogs/technology/2013/04/passthoughts-...
Webcams typically have a 15-30 fps framerate. Heartrates are typically 30-200 bpm (~= 0.5 to 3.3 bps).
15 fps (worst case framerate) vs 3 bps (worst case heart rate)
This is what I suspect could happen, with two possible heart rates matching the same set of samples:
http://upload.wikimedia.org/wikipedia/commons/2/28/AliasingS...
Sedentary (calm, sitting) heartrates go from ~40bpm for extremely fit people to ~90-100 for particularly unfit people. Higher than 100 is unusual for sedentary people, and works out to ~ 1.5bps. The waveforms in the pulse itself (note pulse, not ECG, which has much faster elements) speed up with the pulse, but I would estimate (could be wrong) that your highest frequency significant elements would be around 5hz for a 1.5bps heartrate.
Your example from wikimedia has a signal that is ten times faster than the sample rate - and the nyquist limit says this would be aliased. My back-of-the-envelope calcs above suggest a 5Hz signal at the high end against a 15Hz sampling at the low end, which is a ratio of 3:1, which is enough to satisfy nyquist.
Disclaimer: I am an ex-neuro tech and ex-sleep tech. I am used to sticking electrodes onto people and studying them. The exact form of the pulse wasn't big in my area, so maybe a cardio tech can chime in and correct me.
Err - why do you say that? If your heart rate is much higher then either you aren't human or your are probably dying.
Did you read my original comment?
Human heart rates range roughly between 30 to 200 beats per minute. That maxes out at a bit over 3 beats per second.
It seems quite sensitive to image saturation for losing lock though.
But why is he analyzing the green channel then? :)
I am not confident in this explanation, and still don't know why green over blue.
I'm not sure either, but I can tell you that if you examine digitized (RGB) 35mm film -- across all 35mm film stocks -- the blue channel is the most noisy.
So my guess is: He might have chosen green over blue due to the blue channel being noisier.
50% of the sensor sites are green (25% each for red and blue), so there is more signal given the same amount of noise.
The Foveon sensor does sample RGB at every pixel by using 3 layers, but it is only used in a few cameras.