32
課題解説(その3): 2014 年度版 (第5回)離散フーリエ変換

ディジタル信号処理 課題解説(その3) 2014年度版

Embed Size (px)

Citation preview

Page 1: ディジタル信号処理 課題解説(その3) 2014年度版

課題解説(その3):2014年度版

(第5回)離散フーリエ変換

Page 2: ディジタル信号処理 課題解説(その3) 2014年度版

離散フーリエ変換

• 補足01:離散フーリエ変換の基本定理Ⅱの証明

• 課題22 :離散フーリエ変換の行列表示

• 課題23 :画像データの格納方法

• 課題24 :フーリエ変換の手計算

• 課題25 :線形定理における信号の系列長

• 補足02:離散畳み込みの証明

• 課題26 :離散畳み込みの手計算

Page 3: ディジタル信号処理 課題解説(その3) 2014年度版

補足01

任意の正定数Nに対して

𝑇 =𝑇𝑝

𝑁, 𝜔𝑠 =

2𝜋

𝑇, Ω =

𝜔𝑠

𝑁=

2𝜋

𝑁𝑇とすると

𝐹 𝑘Ω = 𝑇 𝑛=0𝑁−1 𝑓(𝑛𝑇)𝑊𝑁

𝑘𝑛を証明しなさい.

ただし𝑊𝑁 = 𝑒−𝑗2𝜋

𝑁を表す.

Page 4: ディジタル信号処理 課題解説(その3) 2014年度版

補足01

• そもそも離散フーリエ変換の基本定理Ⅰ・Ⅱとは…

• 周期関数化されたf(t)とF(ω)の関係を示している

• 周期信号化すると離散フーリエ変換を有限で表現できる

基本定理Ⅰ

基本定理Ⅱ

切り出す

切り出す

Page 5: ディジタル信号処理 課題解説(その3) 2014年度版

補足01

基本定理Ⅰと証明方法はほぼ同じ

m

m )()( ss を使うと、

)(*)()(~

sFF 関数のフーリエ級数展開

教科書p20の式(2.14)

m

m

T

mTtmTTf

mTttTf

ttf

tfF

s

s

)()(

)()(

)()(2

)}({)(2)}(~

{

1

-1-1 FF

m

jmT

meF )(~

m

m mTtF )()}(~

{ 1-F

両辺の逆フーリエ変換

j

tj

et

e

)(

)(2 00 より

※課題5参照

m

jmT

m

jmT emTfTemTTfF )()()(~

Page 6: ディジタル信号処理 課題解説(その3) 2014年度版

補足01

m

jmTemTfTF )()(~

sT 2

):,10(,    rNnrNnmk 整数 を代入すると

kn

N

N

n

N

n r

N

knj

N

n r

krN

nj

N

n r

TkrNnj

WnTfT

eTrNnfT

eTrNnfT

eTrNnfTF

1

0

1

0

2

1

0

)(2

1

0

)(

)(~

))((

))((

))(()(~

NT

NT s 2

Nj

N

r

p

eW

rTnTfnTf

2

)()(~

【離散フーリエ変換の基本定理Ⅱ 証明終わり】

Page 7: ディジタル信号処理 課題解説(その3) 2014年度版

課題22

離散フーリエ変換の行列式はどのような行列であるか?

𝑋 0𝑋 1

𝑋 2⋮

𝑋 𝑘⋮

𝑋 𝑁 − 1

=

𝑊𝑁0 . . 𝑊𝑁

0 𝑁−1

𝑊𝑁0 . . 𝑊𝑁

1 𝑁−1

𝑊𝑁0 . . 𝑊𝑁

2 𝑁−1

. . . .

. 𝑊𝑁𝑘𝑛 . .

. . . .

𝑊𝑁0 . . 𝑊𝑁

𝑁−1 𝑁−1

𝑥 0𝑥 1

𝑥 2⋮

𝑥 𝑘⋮

𝑥 𝑁 − 1

ただし𝑊𝑁 = 𝑒−𝑗2𝜋

𝑁 Wとする

Page 8: ディジタル信号処理 課題解説(その3) 2014年度版

課題22

• i行j列目の要素とj行i列目の要素は𝑊𝑁𝑖𝑗= 𝑊𝑁

𝑗𝑖よりこの行列は対

称行列である

• また任意の二つの行について 𝑘=0N−1𝑊𝑁

𝑘𝑛1𝑊𝑁𝑘𝑛2 =

𝑘=0N−1𝑊𝑁

𝑘(𝑛1+𝑛2) = 𝑘=0𝑁−1 𝑒−𝑗

2𝜋

𝑁𝑘(𝑛1+𝑛2)

• 𝑛1 = −𝑛2のとき

𝑘=0𝑁−1 𝑒−𝑗

2𝜋

𝑁𝑘(𝑛1+𝑛2) = 𝑁

• 𝑛1 ≠ −𝑛2のとき

𝑘=0𝑁−1 𝑒−𝑗

2𝜋

𝑁𝑘(𝑛1+𝑛2)

=1−𝑒

−𝑗2𝜋 𝑛1+𝑛2 𝑁

𝑁

1−𝑒−𝑗

2𝜋 𝑛1+𝑛2𝑁

(等比数列の和)

Page 9: ディジタル信号処理 課題解説(その3) 2014年度版

課題22

𝑒−𝑗2𝜋 𝑛1+𝑛2 𝑁

𝑁 = 𝑒−𝑗2𝜋 𝑛1+𝑛2 = 1であるから

𝑘=0𝑁−1 𝑒−𝑗

2𝜋

𝑁𝑘(𝑛1+𝑛2) = 0

よって

𝑘=0N−1𝑊𝑁

𝑘𝑛1𝑊𝑁𝑘𝑛2 =

𝑁 𝑛1 + 𝑛2 ≡ 0(𝑚𝑜𝑑 𝑁)0 𝑒𝑙𝑠𝑒

よってこの行列と対称行列の積をとると対角成分がN,他が0となる

つまり 𝑊𝑇𝑊 =

𝑁 0 … 00 𝑁 ⋱ ⋮⋮ ⋱ ⋱ 00 … 0 𝑁

→Wを1/ 𝑁倍すればユニタリー行列になる

Page 10: ディジタル信号処理 課題解説(その3) 2014年度版

課題23

大きさが横N画素、縦 M画素の画像をラスター走査で画素を走査しながら処理を行うプログラムを考える。

ただし、

・1画素のデータは1バイトで記憶される

・N、Mは非常に大きい

・使用するコンピュータは、ページサイズがKバイトの 仮想記憶メモリ方式を用いている

とする。

この時、

CおよびFORTRANでプログラムを書く場合、画像を 表す配列はどのように定義すれば計算効率の低下を生じさせないか考えなさい。

Page 11: ディジタル信号処理 課題解説(その3) 2014年度版

課題23言語によって行列の格納方法が異なる

(矢印の方向)

C言語

x[0][0] x[0][1] x[0][2]

x[1][0] x[1][1] x[1][2]

x[2][0] x[2][1] x[2][2]

FORTRAN

x(1,1) x(1,2) x(1,3)

x(2,1) x(2,2) x(2,3)

x(3,1) x(3,2) x(3,3)

この格納方法の順に読み込む方が効率が良い

良い例

悪い例

Page 12: ディジタル信号処理 課題解説(その3) 2014年度版

課題23

MATLABで実験してみた

巨大な画像の画素をfor文で回しR,G,Bの成分を入れ替える

縦走査と横走査で処理時間を計測する

Page 13: ディジタル信号処理 課題解説(その3) 2014年度版

課題23

10240x7680の画像で実験した結果

横走査→178.927 s

縦走査→172.965 s

(思ったより変わらなかったが…)MATLABはFORTRAN型なので縦走査の方が計算時間が速くなるのは妥当である.

Page 14: ディジタル信号処理 課題解説(その3) 2014年度版

課題24

以下の画像のフーリエ変換を計算し,そのパワースペクトルを求めなさい.なお,計算は手計算で行うこととし, 白画素,黒画素の値はそれぞれ1,0とし,画像の大きさは、2*2、4*4の2つの場合を求めなさい.

Page 15: ディジタル信号処理 課題解説(その3) 2014年度版

課題242*2の場合

2次元離散フーリエ変換の行列式は𝑋 0 𝑋[2]

𝑋 1 𝑋[3]=

𝑊20 𝑊2

0

𝑊20 𝑊2

1

𝑥 0 𝑥[2]

𝑥 1 𝑥[3]

𝑊20 𝑊2

0

𝑊20 𝑊2

1

=1 1

1 𝑒−𝑗2𝜋2

𝑥 0 𝑥[2]

𝑥 1 𝑥[3]

1 1

1 𝑒−𝑗2𝜋2

=1 11 −1

𝑥 0 𝑥[2]

𝑥 1 𝑥[3]1 11 −1

xは(a)-(e)で

を代入すればよい(あとは行列の代入だけなので省略)

1 1

1 1

0 0

0 0

0 0

1 1

0 1

0 1

0 1

1 0

Page 16: ディジタル信号処理 課題解説(その3) 2014年度版

課題24

4*4の場合

離散フーリエ変換の行列式は𝑋 0 𝑋 4 𝑋[8] 𝑋[12]

𝑋 1 𝑋 5 𝑋[9] 𝑋[13]𝑋[2] 𝑋[6] 𝑋[10] 𝑋[14]

𝑋[3] 𝑋[7] 𝑋[11] 𝑋[15]

=

𝑊40 𝑊4

0 𝑊40 𝑊4

0

𝑊40 𝑊4

1 𝑊42 𝑊4

3

𝑊40 𝑊4

2 𝑊44 𝑊4

6

𝑊40 𝑊4

3 𝑊46 𝑊4

9

𝑥 0 𝑥 4 𝑥[8] 𝑥[12]

𝑥 1 𝑥 5 𝑥[9] 𝑥[13]𝑥[2] 𝑥[6] 𝑥[10] 𝑥[14]

𝑥[3] 𝑥[7] 𝑥[11] 𝑥[15]

𝑊40 𝑊4

0 𝑊40 𝑊4

0

𝑊40 𝑊4

1 𝑊42 𝑊4

3

𝑊40 𝑊4

2 𝑊44 𝑊4

6

𝑊40 𝑊4

3 𝑊46 𝑊4

9

=

1 1 1 11 −𝑗 −1 𝑗1 −1 1 −11 𝑗 −1 −𝑗

𝑥 0 𝑥 4 𝑥[8] 𝑥[12]

𝑥 1 𝑥 5 𝑥[9] 𝑥[13]𝑥[2] 𝑥[6] 𝑥[10] 𝑥[14]

𝑥[3] 𝑥[7] 𝑥[11] 𝑥[15]

1 1 1 11 −𝑗 −1 𝑗1 −1 1 −11 𝑗 −1 −𝑗

0 0 0 0

0 0 0 0

1 1 1 1

1 1 1 1代入

Page 17: ディジタル信号処理 課題解説(その3) 2014年度版

課題24

解答…

2x2

4x4

Page 18: ディジタル信号処理 課題解説(その3) 2014年度版

課題25

離散フーリエ変換の線形定理において

max 𝑁1, 𝑁2 = 𝑁1 = 𝑁としたとき,𝑥2 𝑛 𝑁2 ≤ 𝑛 ≤ 𝑁 − 1および𝑋2 𝑘 𝑁2 ≤ 𝑘 ≤ 𝑁 − 1 の値はどうするのか考えなさい.

Page 19: ディジタル信号処理 課題解説(その3) 2014年度版

課題25

長さが異なれば足し合わせることができないので短い方に0を補間する→パワースペクトルの波形が変わる

実際,短い方に値をどのように補間しても線形性を保つことができないので

x1 n :長さN1 ↔ 𝐹1[𝑘]

x2 n :長さN2 ↔ 𝐹2[𝑘](𝑁2 < 𝑁1)

において𝑥2 𝑛 に0を𝑁2 − 𝑁1個だけ追加した𝑥2’ 𝑛 を考える

この時𝑦 𝑛 = 𝑎𝑥1 𝑛 + 𝑏𝑥2’[𝑛]とすると

Y k = aX1 k + bX2′[k]というのが正しい表記である

Page 20: ディジタル信号処理 課題解説(その3) 2014年度版

補足02

𝑥𝑘 𝑛 = 𝑥 𝑛 (𝑘𝐿 ≤ 𝑘 + 1 𝐿 − 1, 𝑘 > 0)

0 (その他)

このときx[n]とy[n]の離散畳み込みw[n]は

𝑤 𝑛 = 𝑥 𝑛 ∗ 𝑦 𝑛 = 𝑘=0∞ 𝑥𝑘 𝑛 ∗ 𝑦[𝑛]であることを証明しな

さい

Page 21: ディジタル信号処理 課題解説(その3) 2014年度版

補足02

𝑤 𝑛 = 𝑥 𝑛 ∗ 𝑦 𝑛

離散畳み込みの式より

= 𝑘=0∞ 𝑥 𝑙 𝑦[𝑛 − 𝑙]

x[n]を長さLの部分系列の和で表現して

= 𝑙=−∞∞ 𝑘=0

∞ 𝑥𝑘 𝑙 𝑦[𝑛 − 𝑙]

線形性より

= 𝑙=−∞∞ 𝑘=0

∞ 𝑥𝑘 𝑙 𝑦[𝑛 − 𝑙]

= 𝑘=0∞ 𝑥𝑘 𝑛 ∗ 𝑦[𝑛]

Page 22: ディジタル信号処理 課題解説(その3) 2014年度版

補足02

• 課題9の解釈1を思い出してみよう….

これはf(t)を長さ1に分割したものといえる

0 0 0 0 0 3 3 3 3 3 3

0 0 1 1 1 0 0 0

0だけ動かしたとき

f(t)

g(t)

f(0)

…0 0 3 3 3 0 0 0…

0 0 0 0 0 3 3 3 3 3 3

0 0 1 1 1 0 0 0

1だけ動かしたとき

f(t)

g(t)

f(1)

…0 0 3 3 3 0 0 0… + +……+

すべて足し合わせると となる…0 0 3 6 9 9 9 9…

× ×

Page 23: ディジタル信号処理 課題解説(その3) 2014年度版

課題26

信号:𝑥 𝑛 = … , 0, 𝑥 −1 = 0, 𝑥 0 = 1, 𝑥 1 = 1,1,…

に対して,

フィルタ関数:𝑦1 𝑛 = {… , 0, 𝑦 −1 = 1/3, 𝑥 0 = 1/3, 𝑥 1 = 1/3,0,… }𝑦2 𝑛 = {… , 0, 𝑦 0 = 1/3, 𝑥 1 = 1/3, 𝑥 2 = 1/3,0,… }

を用いた離散畳み込みを計算し,両者の結果の関係がどのようになるかを考察しなさい.

Page 24: ディジタル信号処理 課題解説(その3) 2014年度版

課題26

x[n] y[n]

0 1 2 …… -1 0 1 ……

x[n]とy[n]の離散畳み込みz[n]を計算する𝑧 𝑛 = 𝑥 𝑛 ∗ 𝑦[𝑛]

Page 25: ディジタル信号処理 課題解説(その3) 2014年度版

課題26

x[n]

y[n]

0 1 2 ……

-1 0 1 ……

1

1/3

𝑧 0 = 0 ×1

3+ 1 ×

1

3+ 1 ×

1

3=

2

3

z[n]

2/3

0 1 2 ……

y[n]をdだけ動かした時𝑧 𝑑 = 𝑛=−∞𝑛=∞ 𝑥 𝑛 𝑦[𝑛 − 𝑑]

d=0の時

Page 26: ディジタル信号処理 課題解説(その3) 2014年度版

課題26

x[n]

y[n]

0 1 2 ……

-1 0 1 ……

1

1/3

𝑧 1 = 1 ×1

3+ 1 ×

1

3+ 1 ×

1

3= 1

z[n]

1

0 1 2 ……

y[n]をdだけ動かした時𝑧 𝑑 = 𝑛=−∞𝑛=∞ 𝑥 𝑛 𝑦[𝑛 − 𝑑]

d=0の時

Page 27: ディジタル信号処理 課題解説(その3) 2014年度版

課題26

x[n]

y[n]

0 1 2 ……

-1 0 1 ……

1

1/3

𝑧 1 = 1 ×1

3+ 1 ×

1

3+ 1 ×

1

3= 1

z[n]

1

0 1 2 ……

y[n]をdだけ動かした時𝑧 𝑑 = 𝑛=−∞𝑛=∞ 𝑥 𝑛 𝑦[𝑛 − 𝑑]

d=0の時

Page 28: ディジタル信号処理 課題解説(その3) 2014年度版

課題26

x[n]

y[n]

0 1 2 ……

-1 0 1 ……

1

1/3

z[n]

1

0 1 2 ……

x[n]にy[n]を畳み込むことによって0と1の境界部分が滑らかに変化するようになる

Page 29: ディジタル信号処理 課題解説(その3) 2014年度版

課題26

x[n]

y[n]

0 1 2 ……

-1 0 1 ……

1

1/3

z[n]

1

-1 0 1 ……

𝑦2[𝑛]の場合も同様に計算して図のようになる.

Page 30: ディジタル信号処理 課題解説(その3) 2014年度版

課題26

∗1

9

1

9

1

9

1

9

1

9

1

9

1

9

1

9

1

9

=

この部分を変えることにより様々な処理ができる

画像のフィルタリング

Page 31: ディジタル信号処理 課題解説(その3) 2014年度版

課題26

clear all %前処理close all

im=imread('lena.jpg'); %画像の読み込みim= rgb2gray(im); %グレ-スケール化subplot(1,2,1);

imshow(im); %元画像の表示

im=double(im); %uint8→double型へf=[1,1,1;1,1,1;1,1,1]/9; %フィルタの作成imout=filter2(f,im,'same');%元画像とフィルタの畳み込みimout=uint8(imout); %double→uint型へ

subplot(1,2,2);

imshow(imout); %平滑化した画像の表示

Page 32: ディジタル信号処理 課題解説(その3) 2014年度版

課題26

−1 -1 −1

−1 9 −1

−1 −1 −1

1 0 −1

2 0 −2

1 0 −1

1

9

1

9

1

9

1

9

1

9

1

9

1

9

1

9

1

9

平滑化フィルタ

ソーベルフィルタ(エッジ抽出)

ラプラシアンフィルタ(エッジ強調)