Я не так давно гуглил опенсоус вейвлет-проекты. Кстати именно потому вспомнил Вашу просьбу. И почти везде - полнейшее гавно(неуниверсальные процедуры - под определенный базис, системные вызовы внутри вычислительной функции, FIR "в лоб" с поэлементным сдвигом массива, нигде не применена быстрая свертка - хотя где-где а в вейвлетах ей самое место, ну и float восновном). Еще опенджпег правда не просмотрел. Он, кстати, целочисленный насколько помню - хорошо для ARM7-9. Но все-равно - того что видел вполне достаточно что-бы отсоветовать гуглить...
Вот и я о том же. Чтобы найти нужное на интернет-помойке, необходимо уже знать, что ищешь

Очень многое запрятано в недра разнообразных библиотек, исходников для которых днем с огнем не сыщешь.
DRUID3, поскольку я вижу, что вы человек эрудированный, то спрошу вас вот еще о чем. Не встречали ли вы такого подхода, когда используемый для разложения ортогональный базис берется не с потолка (sin, cos, вейвлеты, теоретико-числовые и пр.), а вычисляется, как собственные векторы некоторой матрицы, строящейся прямо на основе тех экспериментальных данных, которые требуется разложить?
В сжатии графики я такие алгоритмы встречала, но реализацию для потоковых сигналов найти не смогла, хотя где-то когда-то слышала, что такое возможно и там. В графике нагляднее, т.к. график - уже матрица, а матрицы допускают, так называемое, сингулярное разложение (SVD). При этом собственные вектора взаимноортогональны по вычислению, а стало быть, заведомо годятся для базиса. Выбираем те, для которых собственные числа самые большие - вот тебе и базисная система. Причем по ней не только всё должно гладко разлагаться, но и даже теоретически результат такого разложения должен обладать наименьшей погрешностью редукции (здесь - понижения размерности) реального пространства измерений, до пространства, образуемого базисом.
Кажется (но точно не помню) такую матрицу составляли, как циркулянт - укладывали форму сигнала в верхнюю строку, а каждую ниже лежащую получали циклическим сдвигом на единичку (на одну временную дискрету) влево от того, что находится этажом выше. Например, для сигнала data[5] = { 1, 2, 3, 4, 5 }; матрица получалась такой:
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4
Если бы у нее был еще N+1 рядок, то снова получилась бы исходная последовательность. Такой циркулянт всегда симметричен относительно главной диагонали, а следовательно, всегда приводим к диагональной форме. Вот его главные собственные вектора и используются как базис для разложения.
Вы где-нибудь встречали что-нибудь подобное? А то я не уверена, что излагаю что-то реальное, а не свои фантазии из головы, где всё поперепуталось
