LINUX.ORG.RU

[only C] Библиотека для двумерного вейвлет-преобразования


0

0

И опять я со своими вейвлетами. Для фильтрации я использовал вейвлеты из GSL. Все бы ничего, но захотел я реализовать алгоритм автофокусировки и столкнулся с тем, что двумерные вейвлет-преобразованя из GSL на самом деле - комбинация одномерных по строкам и столбцам. Потому-то и скорость получается сверхнизкая (картинка 1024х1024 точки обсчитывалась 15 минут).

Что нужно: более-менее высокая скорость вычислений и нормальная реализация двумерного вейвлет-преобразования (т.е. картинка на каждой итерации разбивается на 4: аппроксимирующая - в 4 раза сжатая - и детализирующие - горизонтальная, вертикальная и диагональная). На входе - изображение (т.е. массив данных char, int или double), на выходе - вейвлет-образ (такой же массив).

Гуглил - нашел несколько похожих библиотек, но на С++ (мне плюсы не нужны) или C# (а уж мастдай - тем более). Еще нашел библиотечку для фильтрации изображений вейвлетами, но из нее собственно вейвлет-преобразования надо «выпиливать». Есть библиотеки JPEG2000, но их конечный результат - тоже не совсем то, что мне надо.

Неужели так мало людей работают с нормальными 2D вейвлет-преобразованиями? В матлабе, между прочим, вейвлеты считаются правильно...

☆☆☆☆☆

Последнее исправление: Eddy_Em (всего исправлений: 1)

Ответ на: комментарий от namezys

И да, «плюсовая» библиотека WAILI у меня собираться почему-то не захотела, хотя все зависимости установил...

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от namezys

Да задачка-то элементарная: брать с камеры изображение, получать его вейвлет-образ, анализировать и, в случае необходимости, подавать команды на объектив (а вейвлеты нужны как раз, чтобы узнать в какую сторону и насколько изменять фокусное расстояние).

Куда уж здесь классы? Да и не нравятся мне плюсы.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от namezys

Как оно реализовано внутри библиотеки, меня не интересует (многие математические библиотеки вообще на фортране написаны - но линкуются нормально и с сишными, и с плюсовыми программами). Главное, чтобы компилировалось, линковалось с сишными программами и правильно работало.

Eddy_Em ☆☆☆☆☆
() автор топика

Ладно. Раз уж никто ничего подсказать не может, буду выпиливать вейвлет-преобразования из скачанной утилитки Онура Гулерюза.

Eddy_Em ☆☆☆☆☆
() автор топика

в гимпе есть плагин wavelet decompose, там обычные си, можешь оттуда код выдрать

nu11 ★★★★★
()
Ответ на: комментарий от Eddy_Em

> Зачем мне выдумывать всякие классы, когда задачка очень простая?

Готовые используй.

буду выпиливать вейвлет-преобразования из скачанной утилитки Онура Гулерюза.

Да, это, конечно, проще.

tailgunner ★★★★★
()

> мне плюсы не нужны

Какой ты, однако, брезгливый.

Мой тебе совет, переходи на C++ (используя в собственном коде его «бесплюсовое» подмножество) и не мучай себя и окружаюших.

anonymous
()
Ответ на: комментарий от Eddy_Em

> Найти бы еще, к чему ее дописывать :)

сами преобразования реализовать на С++, оформить как dll-ку и тянуть из сишного кода

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Да ее можно и слинковать, в принципе, с сишным кодом. Просто где взять такую библиотеку (завершенную, как GSL).

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

Зачем мне выдумывать всякие классы, когда задачка очень простая?

Готовые используй.

Где их взять-то?

Разве не ты сказал «нашел несколько похожих библиотек, но на С++»?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Разве не ты сказал «нашел несколько похожих библиотек, но на С++»?

Вторым ключевым словом там было «похожих», потому что, к сожалению, они сыроваты. Ну ладно, попробую в понедельник что-нибудь «выпилить».

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

Нашел как раз то, что нужно, но оно под мастдай :( А как такое в линуксе компилировать - не представляю.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от LamerOk

Там все очень плохо :( Одним переписыванием инклюдов и изменением дефайнов не обойтись.

Eddy_Em ☆☆☆☆☆
() автор топика

«Выпилил» все, что мне нужно, из библиотечки Онура Гулерюза (Onur G. Guleryuz), прикрутил для просмотра openGL, сейчас заканчиваю стыковку с v4l2 для работы с игрушечным микроскопом (веб-камера и пластмассовый объектив). Потом останется лишь дописать модуль взаимодействия с контроллерами по RS-232, но это дорожка накатанная...

Eddy_Em ☆☆☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.