見出し画像

筋肉と筋電計測#2 〜計測と解析〜

筋電計測を行った後の解析は,さほど難しくない,筋電信号は正負のギザギザな波形だが,その絶対値を計算して,さらにその包絡線のような滑らかな曲線を得ることで,平均化した振幅を計算することになる.なお,筋電信号に関する文献は古いものが多く,時定数,整流化などアナログ回路で処理することが前提の文章が多い.しかし,いまどきの筋電センサはデジタルが基本で,これでは時代にそぐわない.ここでは,少し書き換えるだけだが,簡単なPythonコードを含めて具体的な解析方法を示していく.



表面筋電図の計測

計測時の電極位置

前章

で述べたように,筋電の信号は神経支配帯の神経筋接合部から筋線維に沿って伝播するが,筋接合部をまたぐように電極を配置すると信号を打ち消し合ってしまうので,もし信号が弱いと感じる場合は,少し移動するとよいだろう.

また弾性包帯やエラスティックテープなどで巻いて,電極が動かないように保護するとよい.

SENIAMプロジェクトの推奨位置

筋電計測に解剖学の知識は必須となる.運動と筋肉の活動部位の関係は機能解剖学などの理解が必要だが,SENIAM(Surface Electromyography for the Non-Invasive Assessment of Muscles)プロジェクト

にも電極位置の記載があるので参考にするとよいだろう.増田(文献1)によれば,SEINAMはイタリア,トリノ工科大学のMerletti教授らを含むヨーロッパの研究者が中心の表面筋電図を活用するためのプロジェクトである.ただし,ご紹介したWebサイトは,分かりにくさもあるので,文献2なども参照するとよいだろう.文献2には写真と図の両方で詳しく電極の設置位置を紹介している.

表面筋電図の解析

表面筋電図の信号

図1:貴殿信号の例

前章でも示したが,筋電信号の一例を図1に示した.単にどこの部位の筋が活動しているかを調べるだけであれば,このような原波形(raw EMG)のまま観察するだけで十分だが,ここでは以下に筋電信号の処理と解析について概要を述べる.詳細は文献3などを参照するとよいだろう.

なお,下記のような処理を行うことも重要だが,処理によって観察できなくなることのあるので,原波形の観察も重要だろう.

文献3によれば,表面筋電図の信号の周波数帯は5~500 Hzに分布する.このことからエイリアシング(aliasing)を考慮し,2 kHzで計測を推奨されることがあるが,いまどき,筋電計はアナログフィルタの処理の後にデジタル化しているものが多いことから,1kHzで計測すれば十分であろう.

ここで,注意をしておきたいことは,多くの方が目にしている筋電センサから計測しているほとんどの原波形自体が,すでにアンプとフィルタを通した信号であるということである.きれいな信号を出力するセンサと思っているかもしれないが,過剰なフィルタで原信号を歪めている可能性もある.

筋電位信号の解析

信号処理の知識のない方のために,計測した信号を解析するためのソフトウエアには

などがあるが,ご自身で解析を行いたいという方のために,以下に簡単な流れと例を示す.

MVCについて

筋電信号の原波形は単に電気活動を計測し,筋肉の活動を反映したもので,単位もVで物理的にはそれ以上の意味はない.つまり,その大きさ(電圧)は計測した電極付近の筋肉の活動に応じて相対的に大ききなるが,絶対的な意味合いはない.信号の起きさは皮膚の抵抗などによっても大きく変わり,個人差や部位によるさも大きい.

そこで,被験者間や部位ごとの差を考慮し比較するために,筋肉の最大の活動を行わせて,最大随意収縮(maximum voluntary contraction : MVC)で正規化する方法がある.つまり,そのときの筋活動を100%として相対的に正規化(normalization)する方法である.MVCの計測を行う場合は文献2を参照するとよい.

この方法は一般的に用いられている方法だが,そもそも100%の基準というものが怪しい.運動の行い方によっては簡単に100%を超えてしまう.あくまでも目安と考えるのが良いだろう.また,最大の筋力を発揮させることは危険も伴う.さほど大きさに意味を持たないので,無理に行う必要はない.

筋電信号の処理:平均振幅

筋電信号の解析の代表はRMSARVである.基本的に似ている処理で,方法は異なるが,絶対値に変換しさらにフィルタリング処理をして滑らかな波形にする処理である.平均的な活動の振幅を観察する点では同様である.筋電信号の原波形が正負のギザギザな波形を示すのに対して滑らかな包絡線のような信号を平均振幅と呼ぶ.

なお,筋電図の文献は古いものが多く,時定数やら,いまだにアナログ信号の処理の式が掲載されたものが多いが,いまどき,回路設計に携わる人でなければデジタル(離散)の処理による表現で良いだろう.ここでは離散化されPCで処理することを前提に説明を行う.

筋電信号の信号処理1:RMS

RMS(root mean square)は日本語で二乗平均平方根と呼ばれる.

各サンプリンしたデータを各時刻で二乗し,一定時間(次の式の$${n}$$に相当する)の平均値を計算し,そのルート(平方根)を計算するだけである.式で書けば

$$
\sqrt{\frac{1}{n} \sum_{t=1}^n x_t^2} = \sqrt{\frac{x_1^2 + x_2^2 + \cdots + x_n^2}{n}}
$$

となる.これを素直に計算すれば良い.ここで,$${x}$$は筋電信号(電圧)を,$${t}$$は時刻を表す.ただし,結果は$${n}$$の選択によって変化する.簡単の述べると,$${n}$$を小さく(例えば,50 ms程度.1 kHzでサンプリングしている場合は,$${n=50}$$とする)すると少し波形はギザギザだが,大きくすると(たとえば500 ms程度.1 kHzでサンプリングしている場合は,$${n=500}$$とする)なめらかになる.

$${n}$$は実質フィルタリングの強さに相当する.

図2に図1の筋電信号のRMSを$${n=50}$$と$${n=500}$$で計算した例を示した.

図2:RMS

念のためPythonコードを示す.

def rms(data, i, n):
    return np.sqrt(np.sum(data[i: i+n]**2)/n)

def rms_filter(data, n):
    return np.array([rms(data, i, n) for i in range(len(data)-n)])

ここでdataは筋電信号の原波形(1次元配列),nは時間幅でサンプリング数で表す.

筋電信号の信号処理2:ARV

1の方法は区間を区切った平均化によって,筋電信号を平滑化した.$${n}$$が平滑化のパラメータとなっている.これに対して,ARV(average rectified value)は周波数を意識したフィルタリングである.

ARVの前処理は,筋電信号の整流化(rectification)である.これは古いアナログで計測する計測環境のなごりの名称で,デジタルの時代では単に絶対値を計算することに過ぎない.筋電信号は正負の信号を含むので,解析の第一歩は絶対値に変換することとなるが,信号の整流とは流れを一方向にするという意味がある.アナログ回路で絶対値にする作業が電気回路の整流回路に相当するだけのことだ.もしデジタルの時代に筋電計測が発明されていれば,このような名称は使うことはなかったであろう.

したがって整流化の信号処理は説明するまでもない.絶対値を計算する.

原波形の絶対値を計算した後に,信号の絶対値をローパスフィルターをかける.

ここで使用したフィルタはバターワースフィルタで

の記事を参考に,以下のようにEMG信号を処理し,

from scipy import signal

def butter_lowpass(lowcut, fs, order=4):
    # バターワースローパスフィルタを設計する関数
    nyq = 0.5 * fs
    low = lowcut / nyq
    b, a = signal.butter(order, low, btype='low')
    return b, a


def butter_lowpass_filter(x, lowcut, fs, order=4):
    # データにローパスフィルタをかける関数
    b, a = butter_lowpass(lowcut, fs, order=order)
    y = signal.filtfilt(b, a, x)
    return y

2 Hzの遮断周波数のローパスフィルタで計算した.この遮断周波数は,筋電の信号が5~500 Hzであることを考慮した(文献4参照).ここで,xは原信号,lowcutは遮断周波数,fsはサンプリング周波数,orderはフィルタリングの次数である.

例えば,

butter_lowpass_filter(np.abs(emg_data), 2, 1000)

と計算を行えばよい.

図3:ARVとRMSの比較

図3にこのARV(遮断周波数2Hzの4次のバターワースフィルタ)とn=500のRMSの結果を比較した.信号の大きさに違いはあるが,似た波形となった.

このような結果からも,RMSでもARVでもおおよそ似たような結果が得られることがわかる.

iEMG

筋電信号の絶対値(整流値)に対してローパスフィルターをかけたものをARVと呼んだ.これに対して絶対値に対して積分を行う処理を行ったのが,iEMG(積分筋電図,integrated EMG)である.

やはりほぼ同じような波形が得られることから,ARVをiEMGと呼ぶこともある.

いずれの方法も,周波数ベースのフィルタリングの用語で述べれば,遮断周波数によって波形は異なってくる.これはアナログ回路の時定数と呼んでも良いが,これは$${n}$$を変えることに相当するが,物理的に意味のわかりやすい,遮断周波数を変えたローパスフィルタで設計するのが望ましいのではないかというが筆者の考えである.ただし,上記のような比較や変換が適切に行えているなら,どの方法を用いてもよいだろう.ただし,処理方法によって振幅の違いがあることには注意されたい.

おわりに

この章では,筋電計測における電極の貼付位置,計測した信号の解析方法について述べた.

参考文献

1)増田 正,特集③,人間工学のための計測手法,第4部:生体電気現象その他の計測と解析(1) -表面筋電図の測定方法と人間工学への応用-,人間工学 Vol.51, No.6,2015

2)加藤,山本,臨床にいかす表面筋電図,セラピストのための動作分析手法,医学書院,2020

3)木塚,増田,木竜,佐渡山,表面筋電図-バイオメカニズムライブラリー,東京電機大学出版局,2006

4)中村,今さら聞けない生体計測1(筋電),生体医工学,Vol. 57, No.4-5, pp. 149-157, 2019





スポーツセンシング 公式note
スポーツセンシング 運動習慣獲得支援サービス「FitClip」
スポーツセンシング アスリートサポート事業




【著作権・転載・免責について】

権利の帰属
本ホームページで提示しているソフトウェアならびにプログラムリストは,スポーツセンシング社の著作物であり,スポーツセンシング社に知的所有権がありますが,自由にご利用いただいて構いません.

本ページに掲載されている記事,ソフトウェア,プログラムなどに関する著作権および工業所有権については,株式会社スポーツセンシングに帰属するものです.非営利目的で行う研究用途に限り,無償での使用を許可します.

転載
本ページの内容の転載については非営利目的に限り,本ページの引用であることを明記したうえで,自由に行えるものとします.

免責
本ページで掲載されている内容は,特定の条件下についての内容である場合があります. ソフトウェアやプログラム等,本ページの内容を参照して研究などを行う場合には,その点を十分に踏まえた上で,自己責任でご利用ください.また,本ページの掲載内容によって生じた一切の損害については,株式会社スポーツセンシングおよび著者はその責を負わないものとします.

【解析・受託開発について】

スポーツセンシングでは,豊富な知見を持つ,研究者や各種エンジニアが研究・開発のお手伝いをしております.研究・開発でお困りの方は,ぜひスポーツセンシングにご相談ください.
【例】
 ・データ解析の代行
 ・受託開発
  (ハードウェア、組込みソフトウェア、PC/モバイルアプリ)
 ・測定システム構築に関するコンサルティング など
その他,幅広い分野をカバーしておりますので,まずはお気軽にお問い合わせください.

【データの計測について】

スポーツセンシング社のスタジオで,フォースプレートやモーションキャプチャを利用した計測も行えます.出力されるデータと,ここで示したプログラム(入力データの取り込み関数を少々改変する必要があるが)で,同様な解析を行えますので,まずはお気軽にお問い合わせください.