ディジタル信号処理 第08回 フィルタ

💡
フィルタとはなんぞや? その概念と設計法(アナログ)を学ぶ

0. フィルタって何なん?

コーヒーフィルタ

コーヒーから挽いた焙煎されたコーヒー豆を濾す調理器具.すなわち,混ざったものから不要な内容物を除去する器具.除去される内容物とその量は,フィルタの形状や材質で変わる.

画像フィルタ

画像に対して何らかの効果をかけるソフトウェア.例えば,画像に含まれる特定の要素を強調するソフトウェア.強調したい対象物とその効果は,フィルタの種類やパラメータによる.

 上記の例にあるように,フィルタ (filter) とは特定成分を弱めたり強めたりするもの.信号の周波数に対して強弱を決めるものを周波数選択性フィルタと呼ぶ.上記の画像フィルタも,この授業で紹介する信号処理と数学で書かれている!例えば、

ギターのディストーション

💡
何らかの目的(信号の強調減衰、芸術性, etc)を満たすために、信号処理と数学を用いてフィルタが設計されている。そして、その方法には種類と型がある。

 系列信号を扱うフィルタは,時間変数によって2種類に分けられる。

  1. アナログフィルタ (analogue filter):電気回路などのアナログ回路で実現され、連続時間信号を対象とする。
  1. ディジタルフィルタ (digital filter):ディジタル計算機上で実現され、離散時間信号を対象とする。

今回は,フィルタに関する一般論とアナログフィルタの型を学ぶ.

余談:英語の digital の語源はラテン語の digitus(指で数える).そこから派生して離散的な数という意味になった.なお,digital の日本語訳がディジタルであることは,JIS(日本工業規格)にて定義されている.

余談2:電気回路”など”と書いたように、アナログフィルタは電気回路に限らない。例えば、水を入れたペットボトルの口に息を吹きかけると、”ボーッ”という低い音が聞こえるが、これも一種のフィルタである(後述するローパスフィルタ)。

1. フィルタの種類

周波数特性の異なる「◯◯パスフィルタ」

どの周波数を強めるか/弱めるかを決めるフィルタを周波数選択性フィルタと呼び、およそ 5 種類がある。Gain (利得) は、各周波数における信号の増幅値である。

左から順に以下のような名称がついている。

  1. 低域通過フィルタ (low pass filter, LPF):低い周波数を通過 (pass) させ,高い周波数を遮断 (cut) するフィルタ.高い周波数を遮断することを強調してハイカットフィルタとも言う
  1. 高域通過フィルタ (high pass filter, HPF):高い周波数を通過させ,低い周波数を遮断するフィルタ。低い周波数を遮断することを強調してローカットフィルタとも言う
  1. 帯域通過フィルタ (band pass filter, BPF):特定の中間帯域を通過させるフィルタ
  1. 帯域遮断フィルタ (band elimination filter, BEF):特定の中間帯域を遮断させるフィルタ
  1. 全域通過フィルタ (all pass filter, APF):全周波数帯域において同一ゲインで通貨させるフィルタ
💡
全域通過フィルタは何に使うんだろう?

❓クイズ(slidoで回答)
画像も信号であり,画像処理技術として画像ぼかしとエッジ抽出がある.これらは,LPF or HPFとして見なされる。各処理がどちらのフィルタに見なされるか答えよ。

画像ぼかし(https://tips.clip-studio.com/ja-jp/articles/5757 より引用)

エッジ抽出(https://mc-hakuto.jp/webhelp/edge_filters.htmより引用)

💡
やりたい処理からフィルタを想像(創造)できると素晴らしい!

周波数帯域ごとの名称

フィルタが処理する周波数帯域は,通過/遮断に応じて,次の3つに分けられる。

  • 通過域:利得が 3 dB 減衰する周波数までの範囲。この 3 dB 減衰する周波数のことを遮断周波数あるいはカットオフ周波数 (cut-off frequency) という。
  • 過渡域:通過域と阻止域の間で利得が減衰する周波数範囲
  • 阻止域:大きく減衰する周波数範囲

理想フィルタ.そして理想と現実.

 ではここで「理想的なLPFとは?」を考える。遮断周波数をωc\omega_cとしたとき,以下のような特性になるのが理想である。

X(ω)={1ω<ωc0ωωcX(\omega) = \left\{\begin{array}{ll} 1 & \omega < \omega_c \\ 0 & \omega \geq \omega_c \end{array} \right.

で与えられる.このフィルタの時間波形は

x(t)sinc(ωct)x(t) \propto \mathrm{sinc}\left(\omega_c t \right)

となる。すなわち、フィルタ形状が正負の方向に無限に伸びるフィルタになる。言い換えると、無限に過去の信号から無限に未来の信号までをフィルタに使うことになる。そんなフィルタは実現できない。

 そこで、現実のフィルタが満たすべき条件を以下のように定める。

  1. 通過域の利得が一定であること:通過する周波数帯域では各周波数で同じように増幅されること
  1. 過渡域の利得の傾きが急峻であること:中途半端に増幅される周波数帯域が狭いこと
  1. 阻止域の利得が 0 であること:遮断したい周波数帯域は完全に遮断できること
  1. 直線位相であること:位相特性がひずまないこと
💡
理想フィルタは現実には存在しない.だからこそ「あなたの目的で満たすべき条件は何?」を定め,フィルタを設計すべし!

2. フィルタの設計

前述した条件を適度に満たす「フィルタの型(=関数)」がいくつかある。ここでは代表例として2つのフィルタを勉強する。

  1. バターワースフィルタ (Butterworth filter):過渡域の落ち方は緩やかだが、通過帯域が可能な限り平坦。Stephen Butterworth による作。食べるバターではない。
  1. チェビシェフフィルタ(Chebyshev filter):通過帯域にリプルがあるが、過渡域が急さに落ちる。Pafnuty Lvovich Chebyshev による作。←が、時間の都合上省略。

バターワースフィルタ (Butterworth filter)

バターワースフィルタは、次式のパワースペクトルを持つ。

H(ω)2=11+(ω/ωc)2N\begin{align}\left| H(\omega) \right|^2 = \frac{1}{1 + (\omega / \omega_c)^{2N}}\end{align}

ωc,N\omega_c, N はそれぞれ、カットオフ周波数とフィルタ次数である。

💡
バターワースフィルタの形状を想像してみよう。ωc,N\omega_c, N が変わるとどのように変わるだろうか?

では、ラプラス変換(s変換)を利用して伝達関数の極を求めてみよう(復習:ラプラス変換で極を求めることで、安定なフィルタを求めることができる)。s=jωs = j\omega を上式に代入すると

H(s)2=11+(j)2N(s/ωc)2N=11+(1)N(s/ωc)2N\begin{align}\left| H(s) \right|^2 &= \frac{1}{1 + (-j)^{2N} (s / \omega_c)^{2N}} \\ &= \frac{1}{1 + (-1)^{N} (s / \omega_c)^{2N}}\end{align}

極を求めることは H(s)2=0\left| H(s) \right|^2 = 0 となる ss  を求めることである(復習)。すなわち、(1)N(s/ωc)2N=1(-1)^{N} (s / \omega_c)^{2N} = -1 となる ss  を求めることである。

ケース1:N が偶数の場合

s2N=1ωc2N=ej(π+2πk)ωc2N\begin{align} s^{2N} &= -1 \cdot \omega_c^{2N} = e^{j(\pi + 2\pi k)} \cdot \omega_c^{2N} \\ \end{align}

kk 番目の極を sks_k とすると、

sk=ωcej(π+2πk)/(2N)s_k = \omega_c\cdot e^{j(\pi + 2\pi k)/(2N)}

が得られる。k=0,1,,2N1k = 0, 1, \ldots, 2N-1 である。

ケース2:N が奇数の場合

ケース 1 と同様の展開で

sk=ωcejπk/Ns_k = \omega_c e^{j\pi k / N}

が得られる。

💡
複素平面上において、極がどのように配置されるか図示してみよう

ラプラス変換においてフィルタが安定であるためには、極が複素平面の左半分になければならない。例えばN=2N=2 の場合、左半分にあるのは s1,s2s_1, s_2 である。故にこの2つのみを採用して伝達関数は以下の式になる。

H(s)=1(sωcej3π/4)(sωcej5π/4)=1s2+2ωcs+ωc2\begin{align} H(s)&=\frac{1}{(s-\omega_c\cdot e^{j3\pi/4})(s-\omega_c\cdot e^{j5\pi/4})} \\ &=\frac{1}{s^2+\sqrt{2}\omega_cs + \omega_c^2} \end{align}
💡
N=3の場合の伝達関数を導出しよう。簡単のためωc=1\omega_c=1とする。答えに虚数単位を含んではいけない。

3. 周波数変換

これまでLPFのみを扱ってきたが、実はLPFからほかのフィルタを導出できる。その際に用いるのが周波数変換である。ラプラス変換の周波数 ss を異なる値に変更すればよい。

変換公式備考
LPF → LPF (遮断周波数の変更)s → s / ω_l遮断周波数 ω_l の LPF
LPF → HPF (高域通過フィルタ)s → ω_h / s遮断周波数 ω_h の HPF
LPF → BPF(帯域通過フィルタへ) s → (s^2 + ω_1ω_2)/(ω_c s) 通過域 [ω_1, ω_2] の BPF(ω_c = (ω_2-ω_1))
LPF → BEF (帯域遮断フィルタへ)s → (ω_c s) / (s^2 + ω_1ω_2)遮断域 [ω_1, ω_2] の BEF(ω_c = (ω_2-ω_1))

例えば、ωc=1,N=2\omega_c = 1, N = 2 のバターワースフィルタ(LPF)を、ωh=2\omega_h = 2 のHPFに変更する場合は、(6)式を使って、

H(s)=1(ωh/s)2+2ωh/s+1=s2s2+s2s+4H'(s) = \frac{1}{(\omega_h /s)^2 + \sqrt{2}\omega_h /s + 1}=\frac{s^2}{s^2+s\sqrt{2}s+4}

というHPFが得られる。

💡
LPFの設計法を知っておけば、ほかのフィルタを簡単に導出できる。

4. まとめ