• 締切済み

ウェーブレット変換の順変換と逆変換について

1行の画像をimage1[0][k]に入れて、 ウェーブレット変換をしてc[a][b]を求め、 そこから逆変換してimage2[0][k]に戻す その際のウェーブレットはメキシカンハット型にしているつもりです このようなプログラムを作っているのですが、 順変換 t=pow(2,-a)*k-b; c[a][b]+=image1[0][k]*( pow(2,-2/a) * (1-pow(t,2) ) * exp( 1/2*pow(t,2) ) ); 逆変換 temp[k]+= pow(a,-2) * c[a][b]* pow(2,-2/a) * (1-pow(t,2) * exp( -1/2*pow(t,2) ) ) ); image2[0][k]=(int)floor(temp[k]); それぞれa,b,kはループをかけています。 これでtemp[k]を見ると恐ろしいほどずれた数字が入ってしまいます。 何が間違っているのか、恐らく計算が間違えていると思うのですが どこが間違えているのかを教えていただきたいです。 是非よろしくお願いします。

  • vanti
  • お礼率25% (2/8)

みんなの回答

  • chie65535
  • ベストアンサー率43% (8525/19381)
回答No.1

>temp[k]+= … >temp[k]を見ると恐ろしいほどずれた数字が temp[k]に「加算だけ」してるけど、初期化はしてますか? 初期化するのを忘れ、初期値に「恐ろしいほどずれた数字」が入っていれば、最後まで「恐ろしいほどずれた数字のまま」ですけど。

関連するQ&A

  • ウェーブレット変換

    ウェーブレット変換の勉強をしているんですけど、いろいろネットで調べても計算例がなく難しくてわかりません。 例えば、時系列データが{10,30,20,50,40}とある場合どのようにウェーブレット変換するときの式はどのようになるのでしょうか?また、逆ウェーブレット変換をする時の式はどのようになるのでしょうか? できるだけわかりやすく教えていただけるとうれしいです。

  • ウェーブレット変換ってなんですか?

    http://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%BC%E3%83%96%E3%83%AC%E3%83%83%E3%83%88%E5%A4%89%E6%8F%9B ウェーブレット変換について教えて下さい。 wikiによれば、フーリエ変換で失われる時間領域(時系列)を残すことが出来る変換であると書かれているのですが、 これってどういうことなのでしょうか? ウェーブレット変換の概念についてどなかた分かりやすく説明して頂けないでしょうか? 或いは平易なことばで説明してある書籍を教えて下さい。

  • ウェーブレット変換について

    現在ウェーブレット変換を用いて呼吸成分と心拍成分の分離を行っています。 例えばウェーブレット変換を用いて呼吸と心拍の分離が行えたとして ある周波数スペクトルが求まります。今度はその周波数成分を持つような時間波形に 変換したいのですがそのようなことは可能でしょうか? 求まった周波数スペクトルを逆離散フーリエ変換(IFFT)すればいいのでしょうか? 行き詰まってしまったのでもしよろしければアドバイスお願いします。

  • 直交ウェーブレットとコンパクトサポートのメリットとは?

    あまりにも基本的なことがわからなくて、すみません。最近、ウェーブレット変換について、かじりだしています。目を通している何冊かの本にはいずれも、ウェーブレットが「直交ウェーブレット」であることと「コンパクトサポート」であることがとても重要なことのように書いてあるのですが、その理由が今一はっきりしません。逆変換が存在する必要十分条件なのでしょうか?線形代数の教科書でも読みかえせば、わかりますか?わかりやすく書いてある本やサイトがあれば、併せてご紹介いただければ幸いです。

  • 逆z変換

    c * z^-1 / (b - a * z^-1) の逆z変換ですが、下記のような形で合っていますか? 分子・分母に 1/b をかける (c/b) * z^-1 / (1 - (a/b) * z^-1) N(z) = (c/b) * z^-1 と D(z) = 1 / (1 - (a/b) * z^-1) に分けて考える D(z): 変換表 a^n * u0(t) ←→ 1 / (1 - a * z^-1) から、 1 / (1 - (a/b) * z^-1) の逆z変換は、(a/b)^n * u0(t) N(z): 変換表 f[n - 1] ←→ z^-1 * F(z) から、 (c/b) * z^-1 * F(z) の逆z変換は、(c/b) * f[n - 1] N(z) * D(z) = (c * z^-1) * (1 / (b - a * z^-1)) = (c/b) * (a/b)^[n-1] * u0(t) どうぞよろしくおねがいします。

  • フーリエ変換逆変換

    h(t)のフーリエ変換をH(ω)とし、フーリエ変換逆変換の定義は以下を用いるとする。 H(ω)=∫[-∞ to ∞]h(t)exp(-iωt)dt h(t)=(1/2π)∫[-∞ to ∞]H(ω)exp(iωt)dω h(t)=(1/2π)∫[-∞ to ∞]H(ω)exp(iωt)dω   =(1/2π)∫[-∞ to ∞]∫[-∞ to ∞]h(t)exp(-iωt)dt*exp(iωt)dω という風にHを代入し、逆変換でもとのhに戻ることを示そうとしたのですが、部分分数展開もうまくいかず、手詰まりとなってしまいました。 どの様にすればもとの式に治せるのでしょうか?

  • ラプラス逆変換について

    ラプラス逆変換について (-s-10)/(s^2-s-2) の逆変換をどのようにやればいいか教えてください。 部分分数分解をしてみたんですが後が分りません。 ちなみに、答えは、 3exp[-t]-4exp[2t] です。 分りやすい解説をお願いします。

  • 三角関数と指数関数のフーリヘ変換について

    f(t)=exp(-at)cos(bt) (t>=0) t<0は、0。をフーリヘ変換したいのですが、どうすればいいでしょうか? どういうやり方をすればいいのでしょうか? 自分でやってみたのですが、自信がありません。 自分でやってみた考え方はこうです。 cos(bt)=exp(ibt)として、後でReal partをとってやればいいのでは?と思いました。 よって、f(t)=exp(-at)exp(ibt)としました。 ここで、F(ω)=∫[0 to ∞]exp(-at)exp(-iωt)を計算しました。 計算結果は、1/(a+iω)となりました。 フーリヘ変換の性質として、exp(ibt)f(t)=F(ω-b)という性質があるので、 先ほど、得られた、1/(a+iω)を、-bだけ推移させるという考え方で 1/{a+i(ω-b)}となりました。 今回求めているのは、exp(-at)cos(bt)のフーリヘ変換であり、 つまり、1/{a+i(ω-b)}のReal partを取ることにして、 Re[1/{a+i(ω-b)}]=a/{a^2+(ω-b)^2}となりました。 F(ω)=a/{a^2+(ω-b)^2} となったのですが、このReal partを取る考え方はあっていますでしょうか? フーリヘ逆変換して答えを確かめようと思ったのですが、 逆変換が分からなく、答えを確かめられないです。 よければ、逆変換もしていただけるとありがたいです。

  • 逆フーリエ変換について、、、

    g(ω)=(T/√2π)exp〔(-1/2)(T^2){(ωーω0)^2}〕 ω0は定数です。ωは各周波数です。 これを逆フーリエ変換したいのですがどうもきれいにできません。 どなたか詳しく解き方を説明してくださいませんか? おねがいします。

  • 指数関数の逆ラプラス変換を教えてください

    F(s) = exp(-k*√s)/s^2 の逆ラプラス変換について手順も含めご教示ください。 上式の逆ラプラス変換を解くため、 以下の公式を使用して解けないか模索していますがうまくいきません。 下記以外の公式による方法でもよいですが、その場合は公式についてもご教示ください。 よろしくお願いいたします。 L^(-1)[exp(-k√s)/s]=erfc( k/(2√t) ) F(s)/s=L[∫_{0→t} f(t) dt] を使ってできないか試みてますが、 余誤差関数erfc()または,公式erfc(y)=1-erf(y)で変換した誤差関数の積分が出来ずに躓きました。