Skip to main content

Messages

This section allows you to view all Messages made by this member. Note that you can only see Messages made in areas you currently have access to.

Messages - Milarepa

2
Project development, ideas, and suggestions / Re: Decorrelation: real-time ICA on an FPGA
So far I've not been very successful in this endeavor. FPGA tutorials have gotten me to a blinking light, but nowhere further.
However, I've got some more applications, for which it can be used: Audio Signal, yes, audio signals!

http://cnl.salk.edu/~tewon/Blind/blind_audio.html
With real time ICA you would be able to recognize the voices of two simultaneously talking speakers and even separate them from background noise.
You feed it several (basically the more the better, but stereo works just fine) channels of audio, you get back separate audio channels, each containing one speaker, or one instrument or whatever you record.

I'd really like to get started with this, if you have any tips on where to put out a bounty on this matter or find people who would in principle want to collaborate on a 'module' using FPGA ICA, please feel free to reply or pm!
3
Project development, ideas, and suggestions / Re: Decorrelation: real-time ICA on an FPGA
After a little googlin' I found some sources that are not behind paywalls:

http://www.design-reuse.com/articles/18 ... rithm.html
Abstract: "We propose IP core of on-line ICA algorithm. The on-line ICA algorithm can decompose input signals into statistically independent components. We demonstrate that we can recover original chaotic signals from linearly mixed chaotic signals without any information of mixing. We implement the ICA and chaos generator modules to Xilinx Virtex-II FPGA on the HERON ready-to-go systems..."
- They provide some math, but no sourcecode or cores.

http://ethesis.nitrkl.ac.in/1380/1/MY_F ... S.BVSR.pdf (PDF warning!)
Abstract: "...In this thesis Independent Component Analysis (ICA) based methods are used for
blind detection in MIMO systems. ICA relies on higher order statistics (HOS) to recover the
transmitted streams from the received mixture. Blind separation of the mixture is achieved
based on the assumption of mutual statistical independence of the source streams. The use of
HOS makes ICA methods less sensitive to Gaussian noise. ICA increase the spectral


efficiency compared to conventional systems, without any training/pilot data required...."
- A whole thesis. Quite extensive. Covers also a lot of groundwork, if you want to delve a bit deeper into ICA.

http://www.iiis.org/CDs2010/CD2010IMC/C ... A154PI.pdf (PDF warning)
Abstract:In this work we proposed the design, simulation and synthesis of a hardware that performs the
Independent Component Analysis (ICA) in a recon gurable hardware platform, more speci cally a FPGA. The
simulation of the hardware was done by models implemented in Simulink environment and the synthesis was
possible through the Altera system-level design software DSP Builder, that contains speci c FPGA blocks that
can be synthesized in hardware. In order to validate the hardware, manually generated data and real electroen-cephalogram signals were used in the experiments
- Well this article is quite interesting for me because it covers EEG signals.

BTW: This entry is already quite high in the google search ranking... should be somewhere on the second page.

downloads.hindawi.com/journals/asp/2005/173453.pdf (PDF warning)
4
Project development, ideas, and suggestions / Re: Decorrelation: real-time ICA on an FPGA
Right? :-D
Analog frontend: exactly, my idea was to send ADC values digitally. This way, the whole thing could be even more modular. Also, I have a nice frontend already, so why mess with the running system...

ICA is a concept that might really be useful to the open source community. It's been around for quite a long time and it's really versatile, because you can decorrelate basically all signals that have some common sources, if you have enough channels.
We use it a lot for machine learning purposes, since the outcomes are co much better if you have clean signals. But the problem is of course, it defeats the purpose if it's not in real time...
5
Project development, ideas, and suggestions / Decorrelation: real-time ICA on an FPGA
Hi guys

I'm working with Brain Computer Interfaces and there is one thing that I really wish I had:
real time Independent Component Analysis  (rt-ICA) implemented in my measurement hardware.

ICA (and it's little sister, principal component analysis, PCA) is a method of decorrelating data received over a number of channels. If you record several signals that are spatially mixed over a number of channels equal or greater then the number of signals, ICA can separate these signals into components, each of those containing (at least in the best-case scenario) a clean signal, minimally correlating with the other components. Now, while my field isn't of that much interest to most of you, there are other, more accessible applications:

Imagine you record audio in a room. You have, say 3 people talking obsessively in parallel, several sources of noise, and more then 3 microphones recording to one audio track each. You save all audio tracks, and then you do an ICA, regarding each audio track as a channel. The ICA will give you as many components as you have audio tracks. The first three components will contain the audio of three speakers, loud, clear and mostly free of noise and interference from the other speakers. The other components will contain the noise, you can disregard them. (Although, one man's noise is the other man's signal, I know...) It's like magic! I have used it successfully to separate the voice of lecturers from noisy vents and background talking, using only stereo recordings of my Smartpen.

The disadvantage is that it takes quite some processing time...
However, I've looked it up and it seems as if real time versions of this have been implemented on FPGAs since 2003 (!!). Just google 'ICA FPGA' and you will find tons of examples.

Anyone else interested in such awesomeness? Ideas about feasibility of a little shield capable of blind source separation from several channels?

Best
Milarepa
6
Project development, ideas, and suggestions / RF mesh shared variable space
Hi guys

I have what I think is a great idea. At least I'd like to have one of these:
Wouldn't it be great if we had a little board featuring a little RF transmitter, a cheap uC and some kind of storage so we could store variables with a sort of 'hyperglobal' scope so they could be accessed from all the devices within a mesh network? All RF devices I could find which would do such a thing are way overkill for your standard home control or weather station stuff since we really mostly need a few bytes of data and timing is not really an issue.
With an appropriate library you could then access variable with simple commands in you script, hiding all the complicated stuff:
Code: [Select]
ReadVar(network, variable, securityrelatedaccesscode)

Several smart people have already worked with mesh networks:
Here an arduino mailbox checker with the
**URL*** (sorry, can't post URL, just google arduino mesh networks)
using the (expensive) synapse-wireless dot c0m/

or on the playground, there's quite some talk about:
hoperf dot c0m
which seem also a bit more expensive.

Can't there be a 10-15 bucks or lower solution to this problem? (Except just using a 4 bucks RF module and coding the communication myself?)
Or is there already a solution out there which solves my issue with RF communication that I have missed?

What do you think?

All the best
Milarepa

( ! ) Fatal error: Uncaught exception 'Elk_Exception' with message 'Please try again. If you come back to this error screen, report the error to an administrator.' in /var/www/dangerousprototypes/forum/sources/database/Db-mysql.class.php on line 696
( ! ) Elk_Exception: Please try again. If you come back to this error screen, report the error to an administrator. in /var/www/dangerousprototypes/forum/sources/database/Db-mysql.class.php on line 696
Call Stack
#TimeMemoryFunctionLocation
10.01292329512session_write_close ( )...(null):0
20.01322461112ElkArte\sources\subs\SessionHandler\DatabaseHandler->write( )...(null):0
30.01322461888Database_MySQL->query( ).../DatabaseHandler.php:119
40.05732600632Database_MySQL->error( ).../Db-mysql.class.php:273