ゆくゆくは魚の活性を上げるために、どんな飼育環境にすればいいかというのを明らかにしていきたいと思っていて、そのためにも特に活性を数値化するための手段を手に入れたいと思っていました。
これまでは動画を撮影しているだけでしたが、動画から魚の行動を数値化できればと思って調べてみると、
トラッキングという手法があることを知りました。
その中でも、無料で使用できるUMATrackerというものを今回試してみました。
ダウンロードはmacの場合は上の4つのアプリをそれぞれダウンロードするみたいです。windowsの場合はインストーラだけダウンロードすれば、インストール時に4つのアプリがインストールされます。ちなみにインストール先のフォルダ名は半角文字だけでないとエラーになります。
使い方はUMATrackerの使い方に従ってUIをぽちぽちしていくだけでできます。基本はFilterGeneratorを使ってフィルターの作成と、作成したフィルターを使ったトラッキング結果の表示の2つになります。
FilterGenerator でフィルターを作ります。左の窓にoutputとかThresholdとかのブロックがあると思います。outputとinput、BGRToGrayは必須ですが、それ以外のフィルターは任意で作成します。使い方を読むと、フィルターを通した動画のなかで、動いているもの(今回なら魚)だけが白く表示されるのが理想だそう。
今回のフィルターでおおむね理想的なフィルターを作成できました。
もとの動画は左上の窓に表示されていて、フィルターを通したあとの動画が右下の窓に表示されています。フィルターはThreshold→ Erosion Kernel→ RGBToGrayの3つで構成しました。 Threshold は色の差を極端にするフィルター、 Erosion Kernel はノイズ除去です。 RGBToGrayはカラーの動画を白黒にするフィルターです。
この3つのフィルターは使い方に書いてあり一番基本的なものです。なので、実はこれだけではきれいな白黒画像を作ることはできません。もう一つ、背景除去を行うとかなりきれいに魚だけを白くすることができます。Create Backgraundのボタンを押すと背景を設定する画面が開きます。
背景生成画面が開いたら、背景に指定したい動画のはじめと終わりを指定してGenerateを押せば自動で背景を設定してくれます。自分は魚が写っていない時間を指定しました。このあと、もとのフィルター設定の画面に戻ってくると、きれいな白黒画像にできていると思います。
フィルターは保存して次の工程で使用します。このとき、RGBToGrayフィルターがフィルターブロックの最後(inputの直前)にきていないとエラーメッセージがでます。
次に保存したフィルターを使ってトラッキングをします。UMATracker-Trackingのアプリを開きます。# of objectと# of k-means を動体の数と一致させます。今回、魚は一匹なので1にします。
動画をドラッグアンドドロップで読み込み、フィルターもドラッグアンドドロップで読み込みます。すると動体を示す灰色の点が表示されます。この点は # of object の数だけ出てきます。この画像では魚の場所ではなくてエアレーションの泡に反応して表示されています。
この状態で、動画の再生ボタンを押すと魚にマーカーが追従してトラッキングしてくれていることがわかります。また、魚が動いているときはもちろんなのですが、底で休憩してもマーカーが魚にあたっていることもわかりました。
トラッキングアプリのUMATrackerを紹介しました。トラッキングまでの設定も簡単で、初めてでも1時間くらいでこの記事の作業を終えることができました。まだ2つ使っていないアプリがあるのでそちらの紹介や、マーカーの座標を出力してくれる機能もあるので、今後、アカザの移動記録を見てみて活性の数値化に挑戦してみたいと思います。
それでは!