Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
デジタル情報処理デジタル情報処理
たたみ込み積分たたみ込み積分ConvolutionCo vo ut o佐藤 嘉伸佐藤 嘉伸
[email protected]://www.image.med.osaka-u.ac.jp/member/yoshi/
典型的なデジタル信号処理
入力信号データ
平滑化処理
雑音除去
微分処理信号変化(エッジ)の検出の検出
たたみこみ積分(Convolution)重要事項 その1
• たたみ込み積分により、平滑化平滑化やたたみ込み積分により、平滑化平滑化や微分微分など、デジタル信号処理の基本演算を実現 きる本演算を実現できる。
たたみこみ積分(Convolution)信号
99
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 00 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
平滑化処理平滑化処理
たたみ込み核 )31,
31,
31(
重みパラメータ
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
111
3 3 3
0)310()
310()
310( =×+×+×+
0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
111
3 3 3
0)310()
310()
310( =×+×+×+
0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
111
3 3 3
0)310()
310()
310( =×+×+×+
0 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
1113 3 3
0)310()
310()
310( =×+×+×+
0 0 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+ 3)
319()
310()
310( =×+×+×
0 0 0 0 3
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+ 6)
319()
319()
310( =×+×+×
0 0 0 0 3 6
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+ 9)
319()
319()
319( =×+×+×
0 0 0 0 3 6 9
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+ 9)
319()
319()
319( =×+×+×
0 0 0 0 3 6 9 9
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+ 9)
319()
319()
319( =×+×+×
0 0 0 0 3 6 9 9 9
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+ 9)
319()
319()
319( =×+×+×
0 0 0 0 3 6 9 9 9 9
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+9)
319()
319()
319( =×+×+×
0 0 0 0 3 6 9 9 9 9 9
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+6)
310()
319()
319( =×+×+×
0 0 0 0 3 6 9 9 9 9 9 6
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+3)
310()
310()
319( =×+×+×
0 0 0 0 3 6 9 9 9 9 9 6 3
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+0)
310()
310()
310( =×+×+×
0 0 0 0 3 6 9 9 9 9 9 6 3 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+0)
310()
310()
310( =×+×+×
0 0 0 0 3 6 9 9 9 9 9 6 3 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+0)
310()
310()
310( =×+×+×
0 0 0 0 3 6 9 9 9 9 9 6 3 0 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+0)
310()
310()
310( =×+×+×
0 0 0 0 3 6 9 9 9 9 9 6 3 0 0 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+0)
310()
310()
310( =×+×+×
0 0 0 0 3 6 9 9 9 9 9 6 3 0 0 0 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
1×
1×
1×
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
3 3 3
111+0)
310()
310()
310( =×+×+×
0 0 0 0 3 6 9 9 9 9 9 6 3 0 0 0 0 0
963
たたみこみ積分(Convolution)信号
99
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 00 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
微分処理微分処理
たたみ込み核 )1,0,1(−
重みパラメータ
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+ 0)10()00())1(0( =×+×+−×
0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+ 0)10()00())1(0( =×+×+−×
0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+ 0)10()00())1(0( =×+×+−×
0 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+ 0)10()00())1(0( =×+×+−×
0 0 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+ 9)19()00())1(0( =×+×+−×
0 0 0 0 9
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+ 9)19()00())1(0( =×+×+−×
0 0 0 0 9 9
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+ 0)19()00())1(9( =×+×+−×
0 0 0 0 9 9 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+ 0)19()00())1(9( =×+×+−×
0 0 0 0 9 9 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+ 0)19()00())1(9( =×+×+−×
0 0 0 0 9 9 0 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+0)19()00())1(9( =×+×+−×
0 0 0 0 9 9 0 0 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+0)19()00())1(9( =×+×+−×
0 0 0 0 9 9 0 0 0 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+9)10()00())1(9( −=×+×+−×
0 0 0 0 9 9 0 0 0 0 0 -9
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+9)10()00())1(9( −=×+×+−×
0 0 0 0 9 9 0 0 0 0 0 -9 -9
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+0)10()00())1(0( =×+×+−×
0 0 0 0 9 9 0 0 0 0 0 -9 -9 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+0)10()00())1(0( =×+×+−×
0 0 0 0 9 9 0 0 0 0 0 -9 -9 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+0)10()00())1(0( =×+×+−×
0 0 0 0 9 9 0 0 0 0 0 -9 -9 0 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+0)10()00())1(0( =×+×+−×
0 0 0 0 9 9 0 0 0 0 0 -9 -9 0 0 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+0)10()00())1(0( =×+×+−×
0 0 0 0 9 9 0 0 0 0 0 -9 -9 0 0 0 0 0
たたみこみ積分(Convolution)信号
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0
9
0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 ×××
01− 1
+0)10()00())1(0( =×+×+−×
0 0 0 0 9 9 0 0 0 0 0 -9 -9 0 0 0 0 099
-9
たたみこみ積分(Convolution)
信号 f信号 f( 0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 )
たたみ込み核 g )31,
31,
31(
( 0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 )
平滑化 g 333平滑化
( 0 0 0 0 3 6 9 9 9 9 9 6 3 0 0 0 0 0 )たたみこみ積分の結果 f *g
( 0 0 0 0 3 6 9 9 9 9 9 6 3 0 0 0 0 0 )
たたみこみ積分(Convolution)
信号 f
( 0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 )
信号 f
( 0 0 0 0 0 0 9 9 9 9 9 9 9 0 0 0 0 0 0 0 )
)1,0,1(−たたみ込み核 g微分
たたみこみ積分の結果 f *g
微
( 0 0 0 0 9 9 0 0 0 0 0 -9 -9 0 0 0 0 0 )たたみこみ積分の結果 f g
たたみこみ積分(Convolution)重要事項 その2
• 多くの音響システムや画像システムな多くの音響システムや画像システムなどが、たたみこみ積分として数学的にモデル化できるモデル化できる。
• 時間・空間領域におけるたたみ込み時間 空間領域におけるたたみ込み積分は、周波数領域(フーリエ変換後)では 掛け算になる後)では、掛け算になる。
音響システムの例
CDプレイヤー アンプ スピーカー f*g*hCDプレイヤ アンプ スピ カ
g hf f*g
f*g*h
原音再生音
原音
*は「たたみ込み積分」を表す。
アンプ特性 スピーカー特性
CDプレイヤー アンプ スピーカー F・G・HCDプレイヤ アンプ スピ カ
G HF F・G
F G H再生音のフーリエ変換G
F:原音 f のフーリエ変換(周波数特性)リ 変換
(周波数特性)
G:アンプ特性 g のフーリエ変換(周波数特性)G:アンプ特性 g のフ リエ変換(周波数特性)
H:スピーカー特性 h のフーリエ変換(周波数特性)
理想的な音響システムの特性は?
CDプレイヤー アンプ スピーカー f*g*hCDプレイヤ アンプ スピ カ
g hf f*g
f*g*h
原音再生音
原音アンプ特性 スピーカー特性
原音 f原音 f
たたみ込み核 gたたみ込み核 g
増幅音 f* f増幅音 f*g = αf
理想的な音響システムの特性は?
CDプレイヤー アンプ スピーカー f*g*hCDプレイヤ アンプ スピ カ
g hf f*g
f*g*h
原音再生音
原音アンプ特性 スピーカー特性
原音 f
たたみ込み核 g )00( α
原音 f
たたみ込み核 g )0,,0( α
増幅音 f* f増幅音 f*g = αf
演習問題:Mathematicaによる「たたみ込み積分」授業ホ ムペ ジ(• 授業ホームページ(www.image.med.osaka-u.ac.jp/member/yoshi/日本語ページの「授業の資料」)の、以下のデジタル信号データファイルをダウンロードせよ。ファイルをダウン ドせよ。– 信号データ(生成データ雑音なし)
上をグ と プ よ• 以上をグラフとしてプロットせよ。data = ReadList["d:/presen/oecu_game_lecture/bar_data0.txt", {Number, Number}];ListPlot[data PlotJoined -> True];ListPlot[data, PlotJoined -> True];マックでは、おそらく、/Users/w学籍番号/Desktop/……./bar_data0.txtプルダウンメニュー 入力 -> ファイルパスの取得
T i lにフォルダをおくTerminal にフォルダをおく
• フーリエ変換をして、結果をグラフとしてプロットせよ。(以下では、デ タには li t という名前がつけられている )データには、xlist という名前がつけられている。)
trdata = Transpose[data];xlist = trdata[[2]];[[ ]];ft = Fourier[xlist];ListPlot[Abs[ft], PlotRange -> {{1, 128}, {0, 200}}, PlotJoined -> True];
演習問題:Mathematicaによる「たたみ込み積分」たた 込 核 を たた 込 積分を (すな• たたみ込み核 {-1, 0, 1} を用いて、たたみ込み積分をせよ。(すなわち、微分処理せよ。)ListPlot[ListConvolve[{-1 0 1} xlist] PlotRange -> All PlotJoined -> True];ListPlot[ListConvolve[{-1, 0, 1}, xlist] , PlotRange -> All, PlotJoined -> True];
• たたみ込み核 {1/13, 3/13, 5/13, 3/13, 1/13} を用いて、たたみ込み積分して(平滑化して) 結果をプロットをせよ (平滑化されたデ タ積分して(平滑化して)、結果をプロットをせよ。(平滑化されたデータには、xlist1 という名前がつけられている。)xlist1 = ListConvolve[{1/13, 3/13, 5/13, 3/13, 1/13}, xlist];[{ , , , , }, ];ListPlot[xlist1, PlotJoined -> True];
• 上のたたみ込み積分(平滑化)を何度も繰り返せ。上のたたみ込み積分(平滑化)を何度も繰り返せ。xlist1 = ListConvolve[{1/13, 3/13, 5/13, 3/13, 1/13}, xlist1];ListPlot[xlist1, PlotJoined -> True];
• 何度も平滑化した結果に、フーリエ変換と微分処理を行え。ListPlot[Abs[Fourier[xlist1]], PlotRange -> {{1, 128}, {0, 200}}, PlotJoined ->ListPlot[Abs[Fourier[xlist1]], PlotRange {{1, 128}, {0, 200}}, PlotJoined True]ListPlot[ListConvolve[{-1, 0, 1}, xlist1] , PlotRange -> All, PlotJoined -> True];
演習問題:Mathematicaによる「たたみ込み積分」• 授業ホームページ(www.image.med.osaka-u.ac.jp/member/yoshi/の授業ページ)の、以下のデジタル信号データファイルをダウンドロードせよ。
– 信号データ(生成データ 雑音あり)信号データ(生成データ 5倍雑音)– 信号デ タ(生成デ タ 5倍雑音)
– 信号データ(生成データ 10倍雑音)
• さきほどと同様の処理を行え• さきほどと同様の処理を行え。
• 雑音なし、雑音あり、 5倍雑音、 10倍雑音のそれぞれに対して、以下について 論ぜよ以下について、論ぜよ。– 微分処理の結果– 平滑化処理の結果平滑化処理の結果
– 平滑化処理後の微分処理の結果– 平滑化前後でのフーリエ変換の結果の変化
• 以上の処理を式を用いて表現せよ。
平滑化と微分処理
平滑化 平滑化 平滑化 微分ffg g g h
f hf*g*g*・・・・*g*g*h= f*(g*g*・・・・*g*g)*h f (g g g g) h= f*((g*g*・・・・*g*g)*h)
平滑化 平滑化 平滑化 微分f 平滑化 平滑化 平滑化 微分fg g g h
((g*g*・・・・*g*g)*h)