03-3258-1238
03-3258-1238平日9:00 ~ 18:00(土日祝日除く)
スペクトル解析は、工場、農業、医療、環境、食品などさまざまな分野で利用されており、近年では手頃な価格のスペクトルカメラが市場に登場したことで、これまで専門機関で行われていた解析が、個人や中小企業でも手軽に実施できるようになりました。
加えて、Pythonには数多くの科学技術向けライブラリ(Spectral Python (SPy)、NumPy、pandas、scikit-learn、matplotlibなど)が整備されているため、スペクトルの読み込みから、前処理、スペクトル解析、可視化までを一貫して行える環境が整っています。 プログラミング初心者でも、ライブラリやサンプルコードを活用すれば、比較的簡単にプログラミングによるスペクトル解析を行うことが可能です。 もちろん、有料スペクトル解析ソフトと比較すると、Pythonでの解析には技術的なハードルがありますが、一番重要なのは、目的や重要視する項目に適した手法を選択することです。
初めの実験や検証を低コストで実施したいの場合は、自由度の高いPythonプログラムが向いているかもしれませんし、将来の運用まで見据えるのであればスペクトル解析ソフトを用いた方が開発スピードの観点で優れていますし、全体のコストも安く済むかもしれません。
本サイトでは、スペクトルデータの読み込みから可視化、前処理、主成分分析(PCA)、回帰分析、そして実際の応用事例までを、Pythonコード付きでわかりやすく解説していきます。Pythonでの解析が初めてという方向けに、基礎から順を追ってご紹介しますので、ぜひご覧ください。
「Breeze」は、ハイパースペクトルイメージング向けのスペクトル解析ソフトウェアです。
オブジェクト識別、画像セグメンテーション、スペクトル解析、機械学習モデルの適用などを、産業のインライン向けに簡単に組み込むための豊富な機能を搭載しておりプログラムの知識がなくてもスペクトル解析を簡単に実施できます。
デモソフトのご用意もありますのでお問い合わせください。
スペクトル解析を始めるには、まずデータを取り扱う必要があります。 まずは、スペクトルデータをPythonで読み込み、視覚的に確認するための基本的な内容を紹介します。
スペクトル解析の第一歩は、データの取り扱いです。
一般的なスペクトルカメラで撮影されたハイパースペクトル画像は、ENVI形式(.hdr + .raw)で保存されることが多く、これらのファイルを読み込むことで解析作業がスタートします。 このセクションでは、Pythonを使ってENVI形式のスペクトルデータを読み込む方法を紹介します。
”Spectral Python (SPy)”を使えば、.hdrファイルに記載されたメタデータをもとに、対応する.rawファイル内のスペクトルデータ情報を簡単に読み込むことができます。
[1.1] ▶Pythonでスペクトルデータ(ENVI形式)を読み込む
取得したスペクトルデータを視覚的に確認することは解析にとって非常に重要です。
例えば、グレースケール画像や偽RGB画像として表示することで、スペクトル画像全体の傾向やノイズの有無、異常な領域の存在などを直感的に把握することができます。 さらに、特定の波長(バンド)を抽出し、ヒートマップ表示することで強度の違いや局所的な特徴を色で可視化できます。ヒートマップは、グレースケールでは見落としがちな微妙な強度差や異常点の検出に有効です。
このセクションでは、取得したスペクトルの、グレースケール、偽RGB、ヒートマップ表示方法を紹介します。
[1.2]▶Pythonでスペクトルデータを画像表示する。
スペクトル画像の解析では、個々のピクセルがどのようなスペクトルを持っているかを確認することが、分類や異常検出のヒントになります。
このセクションでは、スペクトル画像(2D)を表示したのち、マウスで任意の位置をクリックすることで、そのピクセルに対応するスペクトル(1D配列)をグラフ表示する機能を紹介します。
[1.3]▶Pythonでスペクトルデータをグラフ表示する。
ここまでで紹介したスペクトル画像の読み込み、表示、ピクセルクリックによるスペクトル表示といった機能を、Pythonで1つのGUIツールとして統合することで、使い勝手を向上することができます。
このセクションでは、スペクトルデータを直感的に可視化・操作できる簡易ビューアを作成し、以下のような機能を実装します。
[1.4]▶ Pythonでスペクトルビューアを作る。(準備中)
データの読み込み、可視化ができたら、いよいよ本題のスペクトル解析のプログラムが必要になります。
ここでは、前処理、主成分分析(PCA)、回帰解析といった代表的なスペクトル解析手法を取り上げ、それぞれをPythonでどのように実装するかを紹介します。
「スペクトル解析で、何ができるのか」を実感できるパートです。
スペクトル解析においては、生データをそのまま使用すると、ノイズなどにより誤った解析結果を導いてしまうことがあります。 そのため、ノイズ除去やスムージング、正規化といった前処処理を行い、解析精度を高める必要があります。
このセクションでは、代表的な前処理手法のPythonでの実現方法を紹介します。
[2.1]▶ Pythonでスペクトル解析の 前処理をする(準備中)
多くの波長を持つスペクトルデータは、次元が高くなります。主成分分析(PCA)を用いることで情報を圧縮し、重要な変動要因を抽出することができます。
このセクションでは、Pythonを用いた主成分分析の方法と結果の視覚化を併せて解説します。
[2.2]▶ Pythonで主成分分類(PCA)を用いて分類を行う(準備中)
スペクトルデータから成分濃度や物性値を予測したい場合、回帰解析が有効です。
このセクションでは、Pythonを用いた部分最小二乗回帰(PLS回帰)の予測モデルの作成方法を紹介します。
[2.3]▶ Pythonで部分最小二乗回帰(PLS回帰)を用いて定量化を行う(準備中)
[2.3]で作成した回帰モデルを実際に使用する前に、モデルがどれだけ正確に定量値を予測できるかを評価する必要がります。
このセクションでは、Pythonを用いてR²、RMSE、クロスバリデーションといった評価指標を確認し、モデルの性能を検証する方法を紹介します。
[2.4]▶ Pythonで部分最小二乗回帰(PLS回帰)をモデルを評価する(準備中)
近年、スペクトルデータ解析においても機械学習(ML)手法の活用が急速に進んでいます。主成分分析(PCA)や部分最小二乗回帰(PLS回帰)に比べて、非線形性のある複雑なデータ構造にも対応できるため、高い精度で分類・識別・予測を行うことができます。
このセクションでは、Pythonの機械学習ライブラリを用いて分類を行う手順を紹介します。
[2.5]▶ Pythonで機械学習を用いた分類を実施する(準備中)
スペクトル解析は、産業・社会課題の解決に幅広く使われています。
このセクションでは、ハイパースペクトルカメラなどで取得したデータを用いた、より具体的な応用事例をご紹介します。
[3.1]▶ Pythonでブドウの糖度を測定(準備中)
Pythonは、強力な数値解析・可視化・機械学習ライブラリを備えており、スペクトル解析にも非常に適しています。
本記事では、スペクトルデータの読み込みから、可視化、解析・応用までの基本的な流れをPythonで体験してきました。 Pythonを活用すれば、自身のプログラムによって無料のツールだけでスペクトル解析が可能です。
本記事で紹介した手法をベースに、より高度な解析、他機能との連携、リアルタイム処理などに応用を広げていただければ幸いです。
Pythonで始めるスペクトル解析
1.1 スペクトルデータの読み込み
1.2 スペクトルデータ画像表示
1.3 スペクトルグラフ表示
スペクトルカメラのインライン導入
論文・研究報告(RESONON)
低価格マルチスペクトルカメラの実力
UAV×ハイパー実機撮影デモ
KLV大学ハイパースペクトルカメラコース