0

逆 fft 出力 (fftw_complex 形式、つまり 2 つの double) を受け取り、このデータを png などの画像ファイルに変換する汎用 C++ ライブラリを見つける必要があります。dfft をウォーターフォールして 2 次元データを取得できます (そして 10log10(re re+im im) を使用して各周波数成分の大きさを取得します) が、どの画像ライブラリが機能するかわかりません。

以前は zimage という古いプログラムを使用していましたが、現在は使用できないようです。Ubuntu 9.10 システムに MATLAB はありません (ただし、Octave はあります)。

Octave はウォーターフォール画像を生成できますか? また、スペクトログラムを wav サウンド ファイルに変換する必要もあります。

何か案は??

4

2 に答える 2

2

最も簡単に作成できる画像形式は PNM です。テキスト ファイルとして印刷し、ほとんどのグラフィック プログラムを使用して変換できます。ウィキペディアのページの例を次に示します。

P2 24 7 15
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
0  3  3  3  3  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0 15  0
0  3  3  3  0  0  0  7  7  7  0  0  0 11 11 11  0  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0  0  0
0  3  0  0  0  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15  0  0  0  0
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

そのテキストを「feep.pgm」という名前のファイルに保存すると、私の言いたいことがわかるでしょう。

http://en.wikipedia.org/wiki/Netpbm_format

10log10 情報をピクセル値にスケーリングする必要があります。

于 2010-09-16T07:15:27.800 に答える
0

OpenCVは、さまざまな形式の PNG ファイルを処理できるライブラリの 1 つです。を使用して、Ubuntu 9.10 システムですぐに利用できるはずですapt get libcv-dev(メモリから、パッケージ名を再確認する必要がある場合があります)。

/*
 * compile with:
 *
 * g++ -Wall -ggdb -I. -I/usr/include/opencv -L /usr/lib -lm -lcv -lhighgui -lcvaux filename.cpp -o filename.out
 */

#include <cv.h>    
#include <highgui.h>

/*
 * Your image dimensions.
 */
int width;
int height;

CvSize size = cvSize(width, height);

/*
 * Create 3-channel image, unsigned 8-bit per channel.
 */
IplImage *image = cvCreateImage(size, IPL_DEPTH_8U, 3);

for (int i = 0; i < width; ++i)
for (int j = 0; j < height; ++j)
{
    unsigned int r;
    unsigned int g;
    unsigned int b;

    /*
     * Keep in mind that OpenCV stores things in BGR order.
     */
    CvScalar bgr = cvScalar(b, g, r);
    cvSet2D(image, i, j, bgr);
}

cvSaveImage("filename.png", image);
cvReleaseImage(&image);
于 2010-11-24T02:52:23.260 に答える