// グレイスケール画像をテキストファイル(Complex Text形式)に変換するプログラム // プログラム名:bmp2cpx.cpp #include "eps-header.hh" #include "fft-header.hh" // 元画像(src)をテキストファイル(Complex Text形式)に変換し出力する関数 void bmp2cpx( class image& src) // 元画像クラス(入力) { if (src.p == NULL) { printf("元画像がありません。"); return; } printf("\nグレイスケール画像をテキストファイル(Complex Text形式)に変換します。\n"); int nr_lines = src.get_nr_lines(); // 元画像のライン数 (縦の画素数) int nr_pixels = src.get_nr_pixels(); // 元画像のピクセル数 (横の画素数) class fourier dst_f(nr_lines, nr_pixels); // 高速フーリエ変換クラスの宣言 // 複素数形式の2次元配列を利用する // 実数部を元画像の輝度値,虚数部を0.0とする複素数を2次元配列に入れる。 for (int iy = 0; iy < nr_lines; iy ++) { for (int ix = 0; ix < nr_pixels; ix ++) { dst_f.p[iy][ix] = creal8((double)src.p[iy][ix], 0.0); } } dst_f.cpx_save(); // テキストファイル(Complex Text形式)を指定したい場合は, // dst_f.cpx_save("パス付きBMPファイル名"); // とする。 } // プログラムの開始位置 int main() { class image src; // 元画像クラスを宣言 src.gload(); // 元画像をBMPファイルから読み込む // BMPファイルを指定したい場合は, // src.gload("パス付きBMPファイル名"); // とする。 // 元画像(src)をテキストファイル(Complex Text形式)に変換する。 bmp2cpx( src); // 元画像クラス(入力) }