Perpustakaan Ansi C yang dioptimalkan untuk DSP


8

Saya baru mengenal DSP? Di mana sumber daya yang bagus untuk algoritma DSP open source?

MATLAB hebat dalam membuat foto tetapi setelah kita pindah ke C coding, butuh waktu dan kita akhirnya membuat terlalu banyak kesalahan. Saya kira harus ada repositori yang baik dari kode C untuk berbagai implementasi filter dll. Setiap pointer akan baik.


1
Anda pasti perlu membawa sedikit fokus serta elaborasi dalam pertanyaan Anda. Apakah Anda benar-benar khawatir tentang Kecepatan eksekusi atau pembuatan dan perangkat lunak independen? apa ruang lingkup (Aplikasi) dan target? Apakah Anda mencoba membandingkan Matlab vs C vs xyz? atau apakah Anda benar-benar mengambil keputusan dalam C dan membutuhkan sumber daya di sana? Any pointers are good- umumnya merupakan tanda kurangnya penelitian sebelumnya di pihak Anda.
Dipan Mehta

Jawaban:


4

Bagian # 1: Mengenai perbandingan:

Tidak ada jawaban umum yang bagus untuk apa yang merupakan alternatif lebih cepat untuk Matlab. Itu semua tergantung pada platform yang Anda gunakan.

@Hilmar asnwer menunjukkan fitur-fitur seperti SIMD - yang mungkin dalam C. Tapi itu akan memerlukan dukungan lanaguage perakitan bersama dengan C.

Berikut ini perbandingan yang lebih luas:

  1. Jika Anda bekerja pada komputasi tujuan umum (seperti x86 atau PPC), saya kira tidak ada yang lebih baik (dan lebih cepat) dari C.

  2. Jika Anda bekerja pada perangkat keras DSP khusus, (atau platform yang disematkan seperti ARM) daripada perakitan asli akan jauh di depan dan C mungkin tidak cocok dengan itu (Meskipun C mungkin keseimbangan yang tepat antara membuat perangkat lunak yang fleksibel vs kecepatan eksekusi.

  3. Jika Anda membandingkan C dengan C ++, tidak seperti persepsi umum - C ++ dapat dibuat sama optimalnya di sebagian besar konteks dengan beberapa fitur pemrograman yang lebih baik.

  4. Untuk alat praktis lainnya - Anda dapat melihat beberapa alat skrip lain seperti TCL, atau Lua. Ini jelas lebih baik daripada level yang lebih rendah tetapi mungkin membahayakan kecepatan.

Bagian # 2: Referensi

Saya kira harus ada repositori kode C yang baik untuk berbagai implementasi filter, dll.

  1. OpenCV - mungkin yang terbaik untuk aplikasi penglihatan komputer.

  2. ImLab 2.3 - adalah aplikasi grafis open source gratis untuk Scientific Image Processing yang berjalan di Windows, Linux dan banyak sistem UNIX lainnya. Ini mendukung banyak jendela, tipe data termasuk bilangan bulat 32 bit, bilangan real 32 bit dan bilangan kompleks. Ini diimplementasikan dalam C ++ dan juga di C untuk menyediakan cara yang sangat sederhana untuk menambahkan fungsi baru. Ini memiliki banyak operasi gambar dan mendukung beberapa format file.

  3. ImageLib : adalah pustaka kelas C ++ yang menyediakan pemrosesan gambar dan fasilitas terkait. Set kelas utama menyediakan berbagai jenis gambar dan vektor, dengan modul tambahan yang mendukung skalar dan vektor quantisation, transformasi wavelet, transformasi DCT, dan operasi histogram sederhana.

  4. CImage - C ++ Perpustakaan Template Pemrosesan Gambar

  5. Camellia Library adalah pustaka Image Processing & Computer Vision sumber terbuka. Ditulis dalam plain C, cross-platform (Unix / Linux, Windows) dan tangguh. Ini sudah mencakup banyak fungsi untuk pemrosesan gambar (penyaringan, matematika morfologis, pelabelan, warping, gambar, proyek / proyek belakang, konversi warna, memuat / menyimpan gambar, dll.), Kebanyakan dari mereka sangat dioptimalkan dengan kecepatan tinggi. Ini juga didokumentasikan dengan oksigen dan contoh penggunaan disediakan.

  6. VXL : Perpustakaan C ++ untuk Penelitian dan Implementasi Visi Komputer

  7. GNU Scientific Library (GSL) adalah perpustakaan numerik untuk programmer C dan C ++

  8. Intel® Math Kernel Library (Intel® MKL) adalah perpustakaan matematika komputasi dari rutinitas matematika yang dioptimalkan secara ekstensif untuk aplikasi yang membutuhkan kinerja maksimal. Fungsi matematika inti termasuk BLAS, LAPACK, ScaLAPACK1, pemecah jarang, transformasi Fourier cepat, matematika vektor, dan banyak lagi.

  9. Anda dapat merujuk ke buku: Numerical Recepies in C - dan kode contoh.

temukan lebih banyak dari sini: http://www.cs.cmu.edu/~cil/v-source.html


4

Intinya adalah bahwa ANSI C bukan bahasa yang sangat baik untuk DSP waktu nyata. Banyak fitur yang chip DSP nyata tidak dapat diatasi dalam ANSI C. Ini termasuk generator alamat, pengalamatan bit-reverse, pengalamatan melingkar, SIMD, segmen memori, beberapa bus, tipe data fraksional, penggandaan fraksional, matematika titik tetap tertentu, nol overhead looping dll. Oleh karena itu sebagian besar kompiler untuk DSP memiliki serangkaian ekstensi bahasa yang luas (#pragma, inline assembler, kata kunci baru, dll). Namun ini jelas non-ANSI dan tidak portabel.

Menulis filter titik tetap sederhana FIR dalam ANSI C dapat dengan mudah menjadi 10 kali lebih efisien daripada menggunakan ekstensi yang tepat atau kode rakitan.


0

Anda dapat memeriksa menempatkan produk coder matlab. Ini memungkinkan Anda untuk menghasilkan kode C langsung dari kode matlab Anda tanpa harus khawatir tentang kesalahan manusia.

http://www.mathworks.co.uk/products/matlab-coder/?s_cid=HP_MI_matlabcoder

Namun, ini hanya mendukung sebagian bahasa dan memerlukan lisensi terpisah, tetapi mungkin cocok untuk kebutuhan Anda.

Tautan berikut berguna untuk menemukan subset dari Fungsi yang didukung

http://www.mathworks.co.uk/help/toolbox/eml/ug/bq1h2z7-11.html


0

Ceemple adalah lingkungan komputasi teknis JIT C ++ yang cepat, yang menggabungkan beberapa pustaka C / C ++ yang dioptimalkan untuk komputasi teknis, sehingga Anda dapat melakukan prototipe cepat dan penyebaran dalam Ceemple. Tersedia (gratis) dari http://www.ceemple.com .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.