インフルエンザであまりに暇だったので、昨日の妄想を形にしてみたよ。Contactless area measuringとか言うらしい。
やってることは基本的に簡単で、予め記録させた背景の映像と被写体(ライダー)を含む映像とを引き算して残ったところの画素数を数えてるだけ。ノイズも多いですが事前に面積が既知の被写体をおいて、計算した面積とのズレを係数かけて補正してるので概ね合致した面積が出てきます。YouTubeにあげた動画の左上緑色の文字ね。単位は平方メートル。
ただし妻の人に白い目で見られながら家の中で撮ってたので、被写体とカメラの距離が3メートル足らずと近すぎたり、撮影環境がテキトウで影が映り込んだり自転車が動いちゃったりで正確性はまったくアレです。それでも肩甲骨を前に出して肩をすくめるとどーいう差が出るかーとかを、画面にリアルタイムに表示される計測値を見ながら試すのはなかなか面白いです。
動かしている環境としては
- Apple PowerBook G4 1.67GHz/Mac OS X 10.5.6
- Apple iSight(オートゲインがついてて実はこの用途では使いづらい)
- OpenCV v1.1pre1
ってなかんじ。ソースコードは超環境依存だしサンプルコードまんま杉でアレですが使える人はこちらからどうぞ。コマンドライン引数はコードから類推してください:-) というかOpenCV触ったことある人なら、もっといいヤツを30分かからずに書けるとおもう。
ちなみにライダーの前面投影面積は
前面投影面積 = 0.0293 x 身長[m] ^ 0.725 x 体重[kg] ^ 0.425 + 0.0604
で概ね求められるそうで、僕の場合身長163cmと体重51kgなので0.282平方メートルとけっこう難易度高いようなきが。そもそも初心者的ポジションなのとカメラ近杉なのと、さらにサドルとほぼ同じ高さから撮ってたのも大きく写っちゃう理由かもねー。いやほらこれはネタなので。←逃げた