commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Eric Barnhill <ericbarnh...@gmail.com>
Subject Re: [math] IIR filter library (Butterworth,Bessel,...)
Date Sun, 23 Oct 2016 18:28:03 GMT
>
>
>> Interesting! I think also looking at what is already existing in
> the commons library your contribution is clearly on the image processing
> side. Is that right? It's badly needed. I also would love to have it.
> Crucial point here is that this is in signal processing terminology
> a-causal so you essentially have all the data before you start processing
> it (= Fourier Transform, convolution).
>

Yes, I work with 3+D complex valued images so I am always extending code to
handle these cases. This is how I started contributing here.


> Looking at what is missing in the apache commons just now is:
> - IIR filters + design (my IIRJ)
> - 2D (image) filtering/convolution (your JVCL)
> - FIR filters (causal with delay line) + design (linear phase filters)
>

I agree this would be a great set of tools.

Regarding image processing, a source that needs to be considered, to avoid
being redundant, is ImgLib2. ImgLib2 a great library (inherently ND and
generically typed) but I find the learning curve on ImgLib to be pretty
steep and the approach quite specialized. So the question for a possible
commons contribution is, is there room for a more "everyday" filtering
library fitting the commons mission, which benefits from being more readily
intuitive than ImgLib2? I think probably so. Certainly nothing out of line
with the more base components of commons-math.

As an example in my case, I am interested in extending my image processing
filters to ND but I am not sure this makes sense for commons -- probably
methods overloaded for 2D and 3D would suffice, and if I want to get
fancier I should develop within ImgLib.

I'm not too crazy about proper FIR filters in JAVA because even in C++ they
> are just too slow and one would need to write them as JNI calls to C to
> make them run fast enough (for example a 50Hz notch for ECG at 1kHz
> requires 500taps at a bandwidth of 4Hz -- in theory!). Not sure how excited
> people here are about C/JNI calls. However the FIR filter _design_ =
> creating an impulse response is useful for a-causal offline computation
> using the convolution operation (but the 1D convolution is already
> implemented isn't it?).


The commons math guidelines, which I assume for now extend to spin-off
projects, are here http://commons.apache.org/proper/commons-math/ . One
stipulation is no external dependencies beyond commons-math and the Java
SDK. This is one reason I have not tried to integrate my convolution
library which has JOCL and JTransforms dependencies.

Though I should emphasize that I am a noob myself, I would suspect that
high-performance aspects of signal processing requiring native calls
probably don't suit commons terribly well and should perhaps be some sort
of extension library. That's certainly something I would be happy to work
on too. For example, maybe a base commons-filter library could be worked
out, which could be readily extensible with JNI, GPU, etc.

Eric

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message