フーリエ変換などいろいろ

natureでワンショットで3次元構造というのを見て、CTとかの原理をちょっと理解したいと思った。ラドン変換でいろんな角度からの射影を重ね合わせたものが撮像に相当し、フーリエ変換で再構成できるという理屈らしい。このアプレットはすばらしい。

自分でやってみようとするとbmpの読み込みとか面倒なのでいい手はないかと思ったら、
お手軽な方法としてmatlab互換のoctaveを使えばよいことがわかる。

>lena = imread('lena.png'); #画像データを読み込み
>colormap(gray(256)); #おまじない 
>image(lena) #画像を表示
>LENA = fft2(lena); #2次元FFT
>disp = log(fftshift(abs(LENA))); #FFTのスペクトル
>lmin=min(disp(:)) 
>lmax=max(disp(:))
>imagesc(disp, [lmin lmax]) #スペクトルの表示

あとはこれにローパスフィルター掛けて逆変換するとぼかしとかハイパスにすれば輪郭強調とかできる。
2次元の画像でもあっけなく簡単にできたので、お遊びで音声もやってみることにする。
音声でも同様に

>wavread(filename)

で簡単に読み込める。
Goldwaveというシェアウェアだと関数形から波形を作って、wavファイルで保存できる。
ちょっとした音階を入れようとすると面倒だなと思っていたら、
mml(music macro language)という言語があって、これをmml2midというツールで簡単にmidiファイルに変換できる。そこで次のようなrubyスクリプトでmmlファイルを生成した。

puts %q[#title "DOREMI"]
puts %q[#timebase 48]
puts %q[A C2 v100]
puts %q[A C2 p64]
for i in 0..127
  printf "A C2 @%d\n", i
  puts %q[A C2 cdefgab>c<]
end

A C2 @n #(n=0~127)
で楽器の種類を指定できるが、全ての楽器(128種の音源)でドレミファソラシドを鳴らすだけである。
更にtimidityというツールを使うとwavなどの形式に変換できる。
楽譜にあたるmmlがあればバッチ処理だけでwavファイルができてしまう。

広告
カテゴリー: Uncategorized

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー
2010年2月
« 1月   3月 »
1234567
891011121314
15161718192021
22232425262728
%d人のブロガーが「いいね」をつけました。