01 / 読書ガイド
読書ガイド
引用
Smith, S. W. (1997). The Scientist and Engineer's Guide to Digital Signal Processing. California Technical Publishing. Free official edition: https://www.dspguide.com/pdfbook.htm
章の要約
第1章:DSP の広さと深さ
冒頭の章は本書の前提を述べる。実用的な DSP 技術の大半は高度な数学なしに学び使うことができ、本書は DSP を職業としてではなく道具として使いたい読者のために書かれている、というものである。分野の起源を概観し、電話の多重化・圧縮・エコー制御、オーディオと音声、レーダー・ソナー・反射法地震探査、医療(CT、MRI)・宇宙・商用製品における画像処理といった応用分野を紹介して、DSP がいかに学際的であるかを示す。
第2章:統計、確率、ノイズ
この章は信号に関する用語と、取得した信号を記述するための統計を導入する。平均、標準偏差、信号対雑音比、ヒストグラム、確率質量関数と確率密度関数、正規分布である。指定した分布をもつデジタルノイズの生成方法を示し、最後に測定における精度(precision)と確度(accuracy)を区別する。
第3章:ADC と DAC
情報の管理という観点から、デジタル化が情報を制限する二つの要因としてサンプリングと量子化を扱う。量子化雑音、標本化定理とエイリアシング、ゼロ次ホールドを伴う D/A 変換、そして変換器の前後に必要なアナログのアンチエイリアスフィルタと再構成フィルタを説明し、ベッセル、バターワース、チェビシェフの設計を比較する。マルチレート変換と1ビット(デルタ変調)変換で章を閉じる。
第4章:DSP ソフトウェア
著者はここで、コンピュータ内で数値がどのように格納されるか――固定小数点形式と浮動小数点――と、それが丸め誤差や精度にとって何を意味するかを検討し、誤差が蓄積していく様子を短い BASIC プログラムで示す。実行速度に関する節では、プログラミング言語、ハードウェア、DSP コードを高速化するためのプログラミング上のヒントを比較する。
第5〜7章:線形システム/畳み込み/畳み込みの性質
この3章が本書の土台である。第5章は線形性(斉次性と加法性、さらにシフト不変性)を定義し、線形・非線形システムの例を挙げ、インパルス分解、ステップ分解、偶奇分解、インターレース分解、フーリエ分解による重ね合わせを示す。第6章はデルタ関数とインパルス応答を導入し、入力側と出力側という二つの視点から畳み込みを説明し、それぞれのプログラムを示す。第7章は代表的なインパルス応答(微積分に似た操作、ローパス・ハイパスのカーネル)、因果的信号と線形位相、縦続・並列システムに関する交換・結合・分配法則、中心極限定理、そして既知の波形を検出する方法(たとえばレーダー)としての相関を扱う。
第8〜9章:離散フーリエ変換/DFT の応用
第8章は DFT をフーリエ変換の一族の中に位置づけ、実数 DFT を展開する。表記、基底関数、合成(逆 DFT)、連立方程式または相関による解析、双対性、極形式への変換を扱い、位相計算における実用上の「厄介事」の一覧も示す。第9章は DFT の三つの主な用途を示す。信号のスペクトル解析(窓関数や周波数分解能を含む)、インパルス応答からシステムの周波数応答を求めること、周波数領域を経由した畳み込みである。
第10〜11章:フーリエ変換の性質/フーリエ変換対
第10章は、一方の領域での操作がもう一方でどう現れるかを説明する。線形性、シフトに伴う位相の振る舞い、DFT の周期性、マルチレート手法による圧縮と伸長、信号の掛け算(振幅変調)、パーセバルの関係である。第11章は標準的な変換対を一覧にする。デルタ関数、矩形パルスとシンク関数、その他の代表的な対、ギブス現象、周期信号の高調波、チャープ信号である。
第12章:高速フーリエ変換
FFT の章はまず、実数 DFT を複素 DFT で計算できることを示し、次にビット反転による並べ替え、2点スペクトルへの分解、バタフライ演算を通して FFT の仕組みを説明する。FFT プログラムを示し、相関に基づく DFT と速度・精度を比較し、実数 FFT などのさらなる高速化を述べる。
第13章:連続信号処理
この章は、連続時間の信号処理が DSP と並行する分野であり、プログラムの代わりに数式と微積分を使うことを示す。連続のデルタ関数と畳み込み、フーリエ変換、フーリエ級数を、コードではなく例題とともに扱う。
第14〜16章:デジタルフィルタ入門/移動平均フィルタ/窓付きシンクフィルタ
第14章は時間領域と周波数領域のフィルタパラメータを導入し、重要な区別を示す。情報が時間領域で符号化されているか(ステップ応答が重要)、周波数領域で符号化されているか(周波数応答が重要)である。ハイパス、バンドパス、バンドリジェクトのフィルタを作るためのスペクトル反転とスペクトル逆転を説明し、フィルタを用途と実装(畳み込みか再帰か)で分類する。第15章は、移動平均が鋭いステップを保ちながらランダムノイズを減らすには最適だが、周波数の分離は苦手であることを示し、その仲間と再帰的な実装を扱う。第16章は周波数帯域を分離するための窓付きシンクフィルタを、ブラックマン窓とハミング窓を使って展開し、脳波(EEG)のアルファ波とベータ波の分離などの例を示す。
第17〜18章:カスタムフィルタ/FFT 畳み込み
第17章は任意の周波数応答をもつフィルタを設計する一般的な方法を示し、それを逆畳み込み(検出器によってぼけた信号の復元。ガンマ線パルスで例示)と、移動平均、整合フィルタ、ウィーナーフィルタを比較する最適フィルタリングに応用する。第18章は、長い信号を区間に分けて処理するオーバーラップ加算法と、長いフィルタカーネルでは直接の畳み込みより高速になる FFT 畳み込みを説明する。
第19〜21章:再帰型フィルタ/チェビシェフフィルタ/フィルタの比較
第19章は再帰型(IIR)フィルタ、単極のローパス・ハイパス設計、狭帯域フィルタ、位相応答(ゼロ位相・線形位相・非線形位相。双方向フィルタリングを含む)、整数による実装を導入する。第20章は、チェビシェフおよびバターワースの再帰型フィルタについて、表とプログラムに基づく実用的な方法を示し、オーバーシュートと安定性にも触れる。その基礎となる z 変換は第33章に回される。第21章は「直接対決」を行う。アナログフィルタ対デジタルフィルタ、周波数領域での窓付きシンク対チェビシェフ、時間領域での移動平均対単極フィルタである。
第22章:オーディオ処理
オーディオの章は人間の聴覚、音の大きさ、音色から始まり、高忠実度オーディオとコンパクトディスク、電話音声のためのコンパンディング、音声合成と音声認識、そして掛け合わされたり畳み込まれたりした信号を分離するための準同型処理を含む非線形オーディオ処理を扱う。
第23〜25章:画像の形成と表示/線形画像処理/特殊な画像処理技術
第23章はデジタル画像の構造、カメラと眼、テレビの映像信号、その他の取得・表示システム、明るさとコントラスト、階調変換、ワーピングを説明する。第24章は畳み込みとフーリエ解析を画像に適用する。点拡がり関数、エッジ強調、分離可能なカーネル、大きなカーネルによる照明の平坦化、フーリエ画像解析と FFT 畳み込みを、実行時間の比較とともに扱う。第25章は空間分解能、画像の信号対雑音比、2値画像のモルフォロジー処理、コンピュータ断層撮影(CT)を扱う。
第26〜27章:ニューラルネットワーク(とその他)/データ圧縮
第26章はアルゴリズム中心の DSP と、多数のパラメータに頼るニューラルネットワークとを対比する。目標検出と ROC 曲線、ネットワークの構造、文字認識の例による学習と評価、そして同じ反復的な考え方を再帰型フィルタの設計に使うことを扱う。第27章はデータ圧縮を概観する。ランレングス符号化、ハフマン符号化、デルタ符号化、LZW 符号化、そして JPEG と MPEG における変換圧縮である。
第28〜29章:デジタルシグナルプロセッサ/DSP を始める
この2章はアルゴリズムからハードウェアへと移る。第28章はデジタルシグナルプロセッサが汎用マイクロプロセッサとどう違うか(循環バッファ、ハーバード型アーキテクチャ)を説明し、固定小数点と浮動小数点、C とアセンブリを比較し、DSP 市場を紹介する。第29章は Analog Devices の SHARC ファミリーと評価キットを取り上げ、FIR オーディオフィルタの設計例を示し、固定小数点と浮動小数点を改めて検討する。
第30〜31章:複素数/複素フーリエ変換
第30章は複素数、極形式、そして正弦波・システム・電気回路を表すための代入による複素数の使い方を導入する。第31章は複素 DFT を展開し、負の周波数を含めて物理的な信号と数学的に等価であることを示し、フーリエ変換の一族全体を複素形式で提示し、なぜ複素変換が使われるのかを説明する。
第32〜33章:ラプラス変換/z 変換
第32章は s 領域、ラプラス変換の考え方、電気回路の解析、極と零点の重要性、そして s 平面でのアナログフィルタ設計(バターワース、チェビシェフ、楕円)を説明する。第33章はそのデジタル版として z 変換を展開し、再帰型システム、縦続段と並列段、スペクトル反転と利得の変更を解析し、s 平面に極を配置して z 平面へ変換することで、第20章で使ったチェビシェフ・バターワース設計を導く。最後に DSP の長所と短所についての考察で締めくくる。
第34章:ベンフォードの法則の説明
最終章は、独立変数が数直線であるような信号に信号処理を適用する。先頭の桁に関するベンフォードの観察を紹介し、準同型処理と「1のスケーリング検定」を用いてベンフォードの法則を畳み込みとして書き表し、適合性の定理を述べ、データがこの法則に従う例として対数正規分布を解析する。
主要概念
第1章:DSP の広さと深さ
- 道具としての DSP:実用的な技術の大半は、完全な数学的理論なしに使えるという本書の立場。
- 学際的な広がり:各応用分野(通信、オーディオ、ソナー、画像処理)がそれぞれ専門化した DSP 技術を発展させてきたこと。
第2章:統計、確率、ノイズ
- 平均と標準偏差:信号の水準と変動を表す基本的な指標で、信号対雑音比の定義に使われる。
- 確率密度関数:ヒストグラムの連続版で、各振幅がどれだけ起こりやすいかを表す。
- 精度と確度:ランダムな誤差(ばらつき)と系統的な誤差(真値からのずれ)。
第3章:ADC と DAC
- 量子化雑音:サンプルを離散的なレベルに丸めることで生じる誤差で、加わった雑音としてモデル化される。
- 標本化定理:最高周波数の2倍より速くサンプリングすれば信号を再構成でき、そうでなければエイリアシングが起こる。
- アンチエイリアスフィルタと再構成フィルタ:帯域を制限するために ADC の前と DAC の後に置かれるアナログフィルタ。
第4章:DSP ソフトウェア
- 固定小数点と浮動小数点:範囲の限られた整数形式と、精度と引き換えに範囲を広げる形式。
- 丸め誤差:有限精度の数を繰り返し組み合わせるときに蓄積する誤差。
第5〜7章:線形システム/畳み込み/畳み込みの性質
- 重ね合わせ:信号を単純な成分に分け、それぞれを処理して結果を足し合わせる方法。線形システムでのみ有効である。
- インパルス応答と畳み込み:線形システムはデルタ関数への応答で完全に記述され、その出力は入力とその応答の畳み込みである。
- 相関:雑音を含む信号の中から既知の波形を検出する、畳み込みに似た操作。
第8〜9章:離散フーリエ変換/DFT の応用
- 実数 DFT:N 個のサンプルを N/2 + 1 個のコサインとサインの振幅に分解すること。
- 周波数応答:システムのインパルス応答の DFT で、入力のスペクトルに掛け合わされる。
- 極形式:各周波数を実部と虚部ではなく、大きさと位相で表すこと。
第10〜11章:フーリエ変換の性質/フーリエ変換対
- 線形位相と時間シフト:信号をずらすと、周波数に比例した位相が加わる。
- 矩形パルスとシンク関数:基本的な変換対で、双対性によりその逆も成り立つ。
- ギブス現象:有限個の正弦波から信号を再構成したときに、不連続点の近くで生じるオーバーシュート。
第12章:高速フーリエ変換
- FFT:DFT を N² ではなく約 N log₂N 回の演算で計算するアルゴリズム。
- バタフライ:FFT の各段で繰り返される基本的な2点の計算。
第13章:連続信号処理
- 連続の畳み込みとフーリエ変換:離散的な操作に対応する、微積分に基づく操作。
- フーリエ級数:周期的な連続信号を高調波の和として表すこと。
第14〜16章:デジタルフィルタ入門/移動平均フィルタ/窓付きシンクフィルタ
- 時間領域符号化と周波数領域符号化:フィルタをステップ応答で評価すべきか、周波数応答で評価すべきかの区別。
- 移動平均フィルタ:鋭いステップ応答を保ちながら白色雑音を減らすのに最適なフィルタ。
- 窓付きシンクフィルタ:打ち切って窓をかけたシンク関数のカーネルで、周波数帯域を優れた精度で分離する。
第17〜18章:カスタムフィルタ/FFT 畳み込み
- 逆畳み込み:検出器によるぼけのような望ましくない畳み込みを打ち消すフィルタを設計すること。
- ウィーナーフィルタ:信号と雑音のスペクトルに基づき、スペクトルが重なる信号を分離する最適フィルタ。
- オーバーラップ加算法:長い信号を区間に分け、それぞれをフィルタリングし、重なり合う出力を足し合わせる方法。
第19〜21章:再帰型フィルタ/チェビシェフフィルタ/フィルタの比較
- 再帰型(IIR)フィルタ:入力だけでなく過去の出力も使い、長いインパルス応答を安価に実現するフィルタ。
- チェビシェフ応答:通過帯域にリップルを許すことで得られる、より急峻な減衰。
- 双方向フィルタリング:再帰型フィルタを順方向と逆方向に通してゼロ位相を得る方法。
第22章:オーディオ処理
- コンパンディング:振幅を非線形に圧縮・伸長し、電話音声を少ないビット数で伝送できるようにする方法。
- 準同型処理:掛け合わされた成分や畳み込まれた成分を足し合わされた形に変換し、線形に分離できるようにする方法。
第23〜25章:画像の形成と表示/線形画像処理/特殊な画像処理技術
- 点拡がり関数:インパルス応答の画像版。
- 分離可能な畳み込み:2次元の畳み込みを行方向と列方向の1次元畳み込みで行い、計算量を節約する方法。
- コンピュータ断層撮影:多数の投影から断面画像を再構成すること。
第26〜27章:ニューラルネットワーク(とその他)/データ圧縮
- ROC 曲線:目標の検出と誤警報のトレードオフを図で評価する方法。
- ニューラルネットワークの学習:例題データでの誤差を減らすように、多数の重みを反復的に調整すること。
- 変換圧縮:画像ブロックの DCT 係数を量子化する JPEG 型の圧縮。
第28〜29章:デジタルシグナルプロセッサ/DSP を始める
- 循環バッファ:リアルタイムのフィルタリングのために最新のサンプルを保持するメモリ方式。
- DSP のアーキテクチャ:プログラム用とデータ用に別々のメモリバスをもち、同じサイクルで命令とデータを取り込めるようにした構成。
第30〜31章:複素数/複素フーリエ変換
- 複素数による代入:正弦波や回路素子を複素数で表して計算を簡単にすること。
- 負の周波数:複素 DFT が実信号を正と負の周波数成分の対として表すこと。
第32〜33章:ラプラス変換/z 変換
- 極と零点:システムの周波数応答を決める、s 平面または z 平面上の点。
- z 変換:ラプラス変換の離散時間版で、再帰型フィルタの設計に使われる。
第34章:ベンフォードの法則の説明
- ベンフォードの法則:多くのデータ集合で、先頭の桁が一様に分布していないという観察。
- 1のスケーリング検定:ある分布がベンフォードの法則に従うのはどんな場合かを、信号処理の観点から見る方法。
批判的分析
長所
- 表明した実践的な方針が貫かれている。 第1章で著者は、DSP は従来の数学的な障壁なしに道具として使えるという前提を示し、本書はそれを貫く。実数 DFT は複素数より先に導入され、フィルタは表とプログラムで設計され、ラプラス変換と z 変換は最後に回される。
- 手法を選ぶための明確な基準。 第14章における時間領域符号化と周波数領域符号化の区別は、フィルタを選ぶための実用的な規則を読者に与え、第21章の比較(アナログ対デジタル、窓付きシンク対チェビシェフ、移動平均対単極)はその規則を具体的な判断に変える。
- 全編にわたるプログラムと図。 短いプログラムが各アルゴリズム(畳み込み、相関による DFT、FFT、フィルタ設計)を示し、ほぼすべての考え方が図で示されているため、電気工学以外の科学者にも読みやすい。
- 幅広い応用の扱い。 フィルタと変換にとどまらず、変換器、オーディオ、画像、CT、圧縮、ニューラルネットワーク、DSP ハードウェアを扱い、胎児心電図、脳波のアルファ波とベータ波、CT などの生体医工学的な例も含む。
短所
- 古い技術とコード。 プログラムは行番号付きの古い BASIC 風で書かれており、ハードウェアの章は SHARC EZ-KIT Lite のような1990年代後半の製品や当時の市場データを紹介している。概念は今も有効だが、読者はコードを Python や MATLAB に置き換えることになる。
- 演習がない。 各章には問題集も解答例もないため、講義では課題を独自に用意する必要がある。
- ところどころ厳密さに欠ける。 数学を意図的に避けているため、確率過程、スペクトル推定の理論、適応フィルタ、マルチレートのフィルタバンクなどはほとんど、あるいはまったく扱われず、統計的な導出も非形式的である。
- 無料版の形式。 本書は34個の章別 PDF として配布されている。現在のサイトでは章一覧のページに目次が表示されず、前付け(序文や索引)へのリンクもないため、読者は章番号を頼りにたどることになる。
本書で扱う応用
応用は後半に集中している。オーディオ処理(第22章:聴覚、コンパクトディスク、電話のコンパンディング、音声合成と認識)、画像の形成、線形画像処理、CT を含む特殊な画像処理技術(第23〜25章)、目標検出と文字認識のためのニューラルネットワーク(第26章)、JPEG と MPEG を含むデータ圧縮(第27章)、FIR オーディオフィルタの設計例を含む DSP ハードウェア(第28〜29章)である。第1章では通信、レーダー、ソナー、地震探査、医用画像における応用が概観され、心電図の雑音除去、脳波の帯域分離、ガンマ線の逆畳み込みといった例はフィルタの各章の中に現れる。
コースにおける位置づけ
「生体信号処理」のリストの中で、Smith のガイドは DSP そのものへの幅広く平易な入門書である。Semmlow の Circuits, Signals, and Systems for Bioengineers も入門向けの教科書であり、その説明によれば生体工学の文脈で MATLAB を用いて信号とシステムを教える。Smith は畳み込み、DFT、デジタルフィルタ設計を直観的に扱うことでそれを補い、その前にも並行しても読める。Semmlow と Griffel の Biosignal and Medical Image Processing は、生理信号や医用画像に適用される生体医工学特有の手法へ進むための自然な次の一冊である。
Rangayyan の Biomedical Signal Analysis と Tompkins の Biomedical Digital Signal Processing は専門的な生体医工学書であり、Tompkins は PC 用の C 言語による実験書と説明されている。Smith の第5〜21章はそれらの本が前提とするフィルタリングとフーリエの基礎を与え、第22〜29章はオーディオ、画像、ハードウェアへと視野を広げる。Smith は専門的な生体医工学書の代わりとしてではなく、その前に読むべきである。
本書の使い方
本書は DSP を使う必要のある科学者と技術者を対象としている。ほとんどの章は代数と基本的なプログラミングで足り、微積分が必要なのは第13章と複素領域の章だけである。生体信号処理の講義の中核としては、第1〜3章、第5〜12章、第14〜21章をたどるとよい。第4章は拾い読みでよく、第13章は連続時間の理論とのつながりのために読む。第22〜25章と第27章は、オーディオ、画像、圧縮が講義にとって重要かどうかに応じて任意であり、第28〜29章はハードウェアを使う課題がある場合にのみ関係する。第30〜33章は、ラプラス領域や z 領域でのフィルタ設計に進む学生のための、それ自体で完結した上級編である。
演習がないので、読みながら各プログラム――畳み込み、相関による DFT、移動平均、窓付きシンクフィルタ、単極の再帰型フィルタ――を現代的な言語で実装し直し、実際の生理学的な記録で試すこと。読み進める間はサイトの正誤表も確認するとよい。
版と出典
本ガイドは、著者の公式サイト https://www.dspguide.com/pdfbook.htm に掲載されている無料の章別 PDF(第1〜34章。個々のファイルは dspguide.com/CH1.PDF〜CH34.PDF)と、同サイトの版および利用許諾に関する説明に基づく。ハードカバー版は1997年に California Technical Publishing から、ペーパーバック版は2002年に Newnes から刊行されている。本ガイドは全34章について、各章の導入、すべての節見出し、中心となる図・表・プログラム、そしてフィルタと変換の各章の結びの節を参照している。
