0
3

More than 3 years have passed since last update.

ImageJを使って光の点滅間隔の時系列データを動画から抽出する

Last updated at Posted at 2020-10-06

はじめに

動画などでホタルの点滅の間隔を知りたいときに手作業で行うのは地獄です。
なんとかして、ほどほどの自動化を行いたいと思いその忘備録を兼ねてメモします。

使用するもの

・元動画(.AVI)
・ImageJ

やり方

●ImageJに動画をドラッグ・アンド・ドロップ
image.png
こんなかんじでFrame数とかが出てくる。
このときに、輝度の情報を扱いやすくするために"Convert to ..."のチェックボックスをチェックしておきましょう。

すると、こんな感じになります。
image.png

※通常は1フレーム目が表示されます。
※この画像では533フレームにまで移動したものを見せています。

ここで白く見えるのは、明かりだと思ってください。
ちなみに、この時には54個くらいの個体の点滅パターンを解析する必要があったので、1つ1つの動画をあらかじめ横一列に並べる前処理をしています。

解析するエリアを指定する

image.png

図のように光っている場所について四角の枠で領域の選択をします。

予備の解析の実行

「Image」→「Stacks」 →「Plot Z-axis Profile」
の順番で輝度の時系列データ(のグラフ)が吐き出されます。

動画の長さによっては、結構な時間がかかります。
最初に試してみたいだけの人は、四角からではなく点あるいは線だけの選択をすると良いです。

ちなみに処理中はこんな画像がでます。右下のプログレスバーが出てくるのです。
image.png

終わるとこんな画像が出てきます。
image.png

見方としては、横軸はフレーム数になります。
そして、縦軸は明るさを意味します。
グラフが上下しているのは、点滅を意味しています。
※この方法で行う際は、点で選択したほうが直感的に理解ができましたね。

本番

解析したい位置を選んで
「Image」→「Stacks」 →「Reslice」
を実行します。
image.png
このように線を配置して実行すると、、、

image.png
ひたすらスライスを作成していきます。
ちなみに、四角で選ぶと線の数×縦のピクセル数だけスライスをつくるのでハチャメチャに時間がかかります。
選択する領域は気をつけてください。

さきほどの処理が終わるとこのような画像になります。
image.png

読み取る線の長さの範疇に、7個体の点滅があると読み取ります。
ここで、画像の中で縦軸は時間になります。たとえば、今回は5322フレームの時間の動画なのですが、縦のピクセル数も5322ピクセルだけあります。

この状態では扱いづらいので、Image→Transform→Rotate...から画像を90度回転させましょう。

image.png

次にイメージを拡大して、走査線を引きます
image.png

その状態で、command+kでグラフを表示します。
image.png

あとは、画像中の左下にあるボタン"List"をおすとテキストcsvデータが得られるのでコピペしてエクセルに貼り付けましょう。

お察しの通り、この走査線を手動でずらしながら、都度、グラフを表示してコピペする作業はそれなりに苦行です。

一方で完全な自動化をせずにあえてこのようにもしていて、明るさを検出する領域を誤る可能性が大いにあります。この整合性を取りに行くのは個人的には地獄だったので、手作業の時間を犠牲にしつつ納得しながらデータを取り切る事を優先しました。

※光る場所の位置が上下ずれていて、一本の線では拾いきれないという場合は、四角形の領域を選択→全ての画像の足し算→一枚の合成された絵からグラフ化の過程を踏むとよいです。
四角形の領域を選択後にImage→stacks→z-project→sum sliceの処理をおこなうことになります。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3