6.20. まとめ

この章では、操作に組み込みの画像ライブラリメソッドがない場合にOpenMVアプリケーションが頼る numpyscipy の部分を扱いました:

  • 概念 -- ndarray とは何か、なぜパックされた型付きバッファが数値計算でPythonの list よりも優れているのか、そしてカメラがサポートするdtypeのセット。

  • 形状とインデックス -- ビューとコピー、割り当て不要の更新のためのスライス代入、ディスクリプタの編集としての transpose()

  • 数学 -- 要素ごとの演算子、sin() のようなユニバーサル関数、ブロードキャストのルール、mean() のようなリダクション、そして where() のような選択ヘルパー。

  • 線形代数 -- 行列積のための dot()、逆行列のための inv() / det()、そしてより構造を持つ問題のための numpy.linalgscipy.linalg の分解とソルバー。

  • 信号処理 -- fft()、デジタルフィルタリングのための sosfilt()、そしてストリーミングループでの割り当て不要の振幅スペクトルのための spectrogram()

  • 曲線と積分 -- interp()polyfit() / polyval()、短いFIRフィルタのための convolve()、サンプリングされたデータの台形積分のための trapz()

  • ソルバーと乱数 -- Python呼び出し可能オブジェクトの求積のための scipy.integrate、求根と最小化のための scipy.optimize、統計的特殊関数のための scipy.special、そして疑似乱数サンプリングのための Generator

  • 画像 -- 画像ライブラリが対応していない稀なケースのための to_ndarray()image.Image のブリッジ。

  • パフォーマンス -- 小さいdtype、事前割り当てバッファ、インプレース演算子、out= キーワード、そしてストリーミングループでのブールマスクの繰り返し割り当てへの注意。

これで、カメラの残りの部分が依存する汎用的な数値計算をカバーしました。numpy は、Image に組み込みメソッドがない操作 -- カスタムのピクセル変換、キャリブレーションの求解、バッファされた音声のFFTなど -- に対してアプリケーションが手を伸ばすツールボックスです。