Elliptic filters for android - filter

I need to implement a low pass elliptic filter for a pitch detection algorithm i'm trying to develop. are there any libraries out there that can be of any use here

Related

Feature extraction using discrete cosine transform (DCT)?

This question in this community discuss why in speech recognition, the front end generally does signal processing to allow feature extraction from the audio stream. It is nicely explained there,why to prefer DCT over DFT in the second step. But as this process is hardware based implies that there will be some standard circuits for DFT/DCT transform.
when I googled up for FFT algorithm I found some nice material here. But in my current project I need to use DCT. Can someone please point to any standard DCT algorithm/chip which can be used for feature extraction for speech signal?

Which algorithm should I use for car's head/tail light detection in FPGA

My project is to detect head/tail lights of cars from captured video and can be implemented on FPGA. I intend to use SURF algorithm, but I know it's a strong one. Moreover, my best FPGA kit is virtex 5. So is it possible to implement SURF or modified SURF on virtex 5? Or any simpler algorithm I could use?
Why do you want to use an FPGA?
I would first figure out how to do the (not trivial) problem of detecting car headlights in a more interactive environment than the FPGA simulation/synthesis chain!

HMM algorithm for gesture recognition

I want to develop an app for gesture recognition using Kinect and hidden Markov models. I watched a tutorial here: HMM lecture
But I don't know how to start. What is the state set and how to normalize the data to be able to realize HMM learning? I know (more or less) how it should be done for signals and for simple "left-to-right" cases, but 3D space makes me a little confused. Could anyone describe how it should be begun?
Could anyone describe the steps, how to do this? Especially I need to know how to do the model and what should be the steps of HMM algorithm.
One set of methods for applying HMMs to gesture recognition would be to apply a similar architecture as commonly used for speech recognition.
The HMM would not be over space but over time, and each video frame (or set of extracted features from the frame) would be an emission from an HMM state.
Unfortunately, HMM-based speech recognition is a rather large area. Many books and theses have been written describing different architectures. I recommend starting with Jelinek's "Statistical Methods for Speech Recognition" (http://books.google.ca/books?id=1C9dzcJTWowC&pg=PR5#v=onepage&q&f=false) then following the references from there. Another resource is the CMU sphinx webpage (http://cmusphinx.sourceforge.net).
Another thing to keep in mind is that HMM-based systems are probably less accurate than discriminative approaches like conditional random fields or max-margin recognizers (e.g. SVM-struct).
For an HMM-based recognizer the overall training process is usually something like the following:
1) Perform some sort of signal processing on the raw data
For speech this would involve converting raw audio into mel-cepstrum format, while for gestures, this might involve extracting image features (SIFT, GIST, etc.)
2) Apply vector quantization (VQ) (other dimensionality reduction techniques can also be used) to the processed data
Each cluster centroid is usually associated with a basic unit of the task. In speech recognition, for instance, each centroid could be associated with a phoneme. For a gesture recognition task, each VQ centroid could be associated with a pose or hand configuration.
3) Manually construct HMMs whose state transitions capture the sequence of different poses within a gesture.
Emission distributions of these HMM states will be centered on the VQ vector from step 2.
In speech recognition these HMMs are built from phoneme dictionaries that give the sequence of phonemes for each word.
4) Construct an single HMM that contains transitions between each individual gesture HMM (or in the case of speech recognition, each phoneme HMM). Then, train the composite HMM with videos of gestures.
It is also possible at this point to train each gesture HMM individually before the joint training step. This additional training step may result in better recognizers.
For the recognition process, apply the signal processing step, find the nearest VQ entry for each frame, then find a high scoring path through the HMM (either the Viterbi path, or one of a set of paths from an A* search) given the quantized vectors. This path gives the predicted gestures in the video.
I implemented the 2d version of this for the Coursera PGM class, which has kinect gestures as the final unit.
https://www.coursera.org/course/pgm
Basically, the idea is that you can't use HMM to actually decide poses very well. In our unit, I used some variation of K-means to segment the poses into probabilistic categories. The HMM was used to actually decide what sequences of poses were actually viable as gestures. But any clustering algorithm run on a set of poses is a good candidate- even if you don't know what kind of pose they are or something similar.
From there you can create a model which trains on the aggregate probabilities of each possible pose for each point of kinect data.
I know this is a bit of a sparse interview. That class gives an excellent overview of the state of the art but the problem in general is a bit too difficult to be condensed into an easy answer. (I'd recommend taking it in april if you're interested in this field)

what algorithm does DeviceMotion adopted to calculate attitude from accelerometer and gyro?

According to the reference,
The deviceMotion property is only available on devices having both an accelerometer and a gyroscope. This is because its sub-properties are the result of a sensor fusion algorithm i.e. both signals are evaluated together in order to decrease the estimation errors.
Emm, my question is where is the internal implementation, or algorithm that CMMotionManager use to do the calculation. I want some detail about this so called "senser fusion algorithm"
Popular fusion algorithms are for instance the Kalman filter and derivatives but I guess the CMMotionManager's internal implementation is based on simpler and thus faster algorithms. I expect some simple but good enough math calculation upon the senser data from accelerometer and gyroscope to finally calculate the roll, yaw and pitch
It is not clear what is actually implemented in Core Motion.
As for filters other than the Kalman filter: I have implemented sensor fusion for Shimmer 2 devices based on this manuscript.
You may find this answer on Complementrary Filters also helpful, see especially filter.pdf
I would not use roll, pitch and yaw for two reasons: (1) it messes up the stability of your app and (2) you cannot use it for interpolation.

Supervised Motion Detection Library

Can anyone recommend a motion detection library that's trainable via a supervised learning algorithm?
I have an IP webcam that I'm trying to detect motion from. I'm been using the motion software detector project to do this, but I'm getting a lot of false positives, despite weeks of tinkering with hundreds of settings. A cloud casting a shadow through a window or changing brightness will be classified as motion.
I've found numerous examples using OpenCV to do motion detection, but as far as I can tell, they essentially use the same methods that the motion software detector uses (i.e. it's not trainable, so it inevitably suffers from a lot of false positives).
I'm considering rolling my own, but I don't want to reinvent the wheel.
For such tasks (do you have a concrete task? motion detection is a very vast term...) the requirements largely vary according to:
Camera calibration, coordinate transformations, pose estimation
Feature extraction (Scale/Rotation/Translation/Colorization Invariance)
Concept drift (according to the given features)
...
For a simple application things are often specialized and simplified to make the task more developer-friendly and less error-prone. Therefore I think, there is no wheel (in the sense of a convenient all-purpose solution) that you would reinvent.
But have you noticed TLD? Apparantly it's an object tracking library that uses supervised learning to handle concept drift and such. There are some really cool demonstrations available, for example this.
if you know how to do motion detection using opencv, maybe you can use this Darwin framework to do supervised learning.

Resources