1 / 24

6.3 2次元DFT (1)2次元DFTとは

6.3 2次元DFT (1)2次元DFTとは. 画像のような2次元信号をサンプリングしたデータを. 2次元DFTを. とすると,以下のように定義される。. (2)方式. 定義式は次のように変形できる. 方向により1次元 DFT のあと,. 方向による1次元. すなわち,. DFTを行えばよい。. …. …. …. (3)周波数の並べ方. 1次元の場合,直流分を左に配置するが, 2次元の場合,直流分を中央に配置するのが便利. 画像の場合,通常 直流分を中央に 配置. 通常のDFTにおける周波数配置. …. …. …. ….

quinn-tran
Télécharger la présentation

6.3 2次元DFT (1)2次元DFTとは

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 6.3 2次元DFT(1)2次元DFTとは6.3 2次元DFT(1)2次元DFTとは 画像のような2次元信号をサンプリングしたデータを 2次元DFTを とすると,以下のように定義される。

  2. (2)方式 定義式は次のように変形できる 方向により1次元DFTのあと, 方向による1次元 すなわち, DFTを行えばよい。 … … …

  3. (3)周波数の並べ方 1次元の場合,直流分を左に配置するが, 2次元の場合,直流分を中央に配置するのが便利 画像の場合,通常 直流分を中央に 配置 通常のDFTにおける周波数配置 … … … … 負の周波数に対応させる

  4. 中央にシフトする方法 に を乗ずる。 として, したがって,次のような式として処理する。

  5. VBAでの記述 準備 Xの値を保存する「X」,「Y」,「Z」シートを用意する。

  6. VBAでの記述 ②データ宣言 Private Const Max = 100 Private X(Max, Max) As Complex Private Y1(Max, Max) As Complex Private Y2(Max, Max) As Complex Private Z1(Max, Max) As Complex Private Z2(Max, Max) As Complex

  7. VBAでの記述 ③データの設定(色々な関数を設定して確かめてみよう)VBAでの記述 ③データの設定(色々な関数を設定して確かめてみよう) Private Sub 関数0() DX = 0.3 For j = 0 To Max XX = (j - Max / 2) * DX For k = 0 To Max YY = (k - Max / 2) * DX R = Sqr(XX * XX + YY * YY) If R < 0.00001 Then V = 1 Else VV = Sin(R) V = Sin(R) / R End If X(j, k) = SetC(V, 0) Next Next End Sub

  8. VBAでの記述 ④結果設定(1) Sub 結果設定() With Worksheets("X") For k = 0 To Max .Cells(1, k + 2) = k Next For j = 0 To Max .Cells(j + 2, 1) = j For k = 0 To Max .Cells(j + 2, k + 2) = X(j, k).実部 Next Next End With

  9. VBAでの記述 ⑤結果設定(2) With Worksheets("Y") For k = 0 To Max .Cells(1, k + 2) = k Next For j = 0 To Max .Cells(j + 2, 1) = j For k = 0 To Max .Cells(j + 2, k + 2) = Y2(j, k).実部 Next Next End With

  10. VBAでの記述 ⑥結果設定(3)とClickイベントハンドラVBAでの記述 ⑥結果設定(3)とClickイベントハンドラ With Worksheets("Z") For k = 0 To Max .Cells(1, k + 2) = k Next For j = 0 To Max .Cells(j + 2, 1) = j For k = 0 To Max .Cells(j + 2, k + 2) = Z2(j, k).実部 Next Next End With End Sub Sub ボタン1_Click() 関数0 DFT IDFT 結果設定 End Sub

  11. VBAでの記述 ⑦2次元DFT(1) Private Sub DFT() '2次元DFT m = Max: ARG= -6.28318530717959 / m For k = 0 To m For N = 0 To m DD = (-1) ^ (k + N) Y2(k, N).実部 = X(k, N).実部 * DD Y2(k, N).虚部 = X(k, N).虚部 * DD Next Next For I = 0 To m - 1 For k = 0 To m - 1 Y1(I, k) = SetC(0, 0) For N = 0 To m - 1 Y1(I, k) = AddC(Y1(I, k), MultC(Y2(I, N), ExpJ(ARG * N * k))) Next Next Y1(I, Max) = Y1(I, 0) Next

  12. VBAでの記述 ⑧2次元DFT(2) For I = 0 To m - 1 For k = 0 To m - 1 Y2(k, I) = SetC(0, 0) For N = 0 To m - 1 Y2(k, I) = AddC(Y2(k, I), MultC(Y1(N, I), ExpJ(ARG * N * k))) Next Next Y2(Max, I) = Y2(0, I) Next End Sub

  13. VBAでの記述 ⑨2次元IDFT(1) Private Sub IDFT() ' 逆2次元DFT m = Max: ARG = 6.28318530717959 / m For I = 0 To m - 1 For k = 0 To m - 1 Z2(I, k) = SetC(0, 0) For N = 0 To m - 1 Z2(I, k) = AddC(Z2(I, k), MultC(Y2(I, N), ExpJ(ARG * N * k ))) Next Next Z2(I, Max) = Z2(I, 0) Next For I = 0 To m For k = 0 To m Z2(I, k) = DivR(Z2(I, k), m) Next Next

  14. VBAでの記述 ⑩2次元IDFT(2) For I = 0 To m - 1 For k = 0 To m - 1 Z1(k, I) = SetC(0, 0) For N = 0 To m - 1 Z1(k, I) = AddC(Z1(k, I), MultC(Z2(N, I), ExpJ(ARG * N * k))) Next Next Z1(Max, I) = Z1(0, I) Next For I = 0 To m For k = 0 To m Z1(I, k) = DivR(Z1(I, k), m) Next Next

  15. VBAでの記述 ⑪2次元IDFT(3) For k = 0 To m For N = 0 To m DD = (-1) ^ (k + N) Z2(k, N).実部 = Z1(k, N).実部 * DD Z2(k, N).虚部 = Z1(k, N).虚部 * DD Next Next End Sub

  16. 実行して等高線グラフにすると... FFTの結果を逆FFTすると元に戻っていることが分かる

  17. (4)画像データのフーリエ変換まず,写真データをDFT用のデータに…(4)画像データのフーリエ変換まず,写真データをDFT用のデータに… VB6,VB.Net等を使えば写真を読み込んで白黒写真にしDFT用のデータにすることができる

  18. 以下は,VB6でピクチャボックスに読み込まれた画像を白黒写真に変換し,DFT用のデータに変換するプログラムである。以下は,VB6でピクチャボックスに読み込まれた画像を白黒写真に変換し,DFT用のデータに変換するプログラムである。 Public 画像DT(100, 100) As Double Public Sub window(P As PictureBox, X1, Y1, X2, Y2) With P .ScaleLeft = X1 .ScaleTop = Y1 .ScaleWidth = X2 - X1 .ScaleHeight = Y2 - Y1 End With End Sub Private Sub 白黒変換() Dim X1 As Double Dim C As Double Dim C1 As Double Dim C2 As Double Dim C3 As Double window Picture2, 0, 0, 100, 100 W = Picture1.ScaleWidth H = Picture1.ScaleHeight DW = W / 100: DH = H / 100 For I = 0 To 100 For J = 0 To 100 X = DW * J: Y = DH * I C = Picture1.Point(X, Y) Picture2.Line (J, I)-(J + 1, I + 1), C, BF If C < 0 Then X = 255 Else C1 = (C \ 256) \ 256 C2 = (C \ 256) Mod 256 C3 = C Mod 256 X = (C1 + C2 + C3) / 3 End If Picture2.Line (J, I)-(J + 1, I + 1), RGB(X, X, X), BF 画像DT(I, J) = X Next Next End Sub

  19. 画像のフーリエ変換 画像データのフーリエ変換と逆フーリエ変換結果

  20. 色々な2次元フーリエ変換(1)

  21. 色々な2次元フーリエ変換(2)

  22. 色々な2次元フーリエ変換(3)

  23. 色々な2次元フーリエ変換(4)

  24. 色々な2次元フーリエ変換(5)

More Related