2012-09-04[n年前へ]
■続 パノラマ画像で眺める「巨人阿倍の空中バウンド・ホームラン」の秘密!?
『パノラマ画像で眺める「巨人阿倍の空中バウンド・ホームラン」の秘密!?』で書いた”カメラワーク”の影響を除去した上で・ホームランボールの軌跡を映し出す」スクリプトを書き直してみました。たとえば、下に貼り付けた画像は、巨人阿部選手のホームランボールが外野上空を飛翔していく0.5秒ほどの動きを、一枚の画像として合成したものです。…そうして眺めてみると、見事なくらいの「綺麗で美しく自然極まりない放物線」を巨人阿部が打ったホームラン・ボールは描いていることがわかります。
「突然、空中でバウンドする軌道のホームラン」…超常現象に思えるホームランボールの軌跡も、それは必然で単純な「カメラマンの指が(アングル的に必然として)操作したカメラ行列の変化によって作りされる「人の視覚の錯覚」だった、ということがわかります。
参考までに、昨日・今日に書いてみたMathematicaスクリプトをここに貼り付けておきます。処理手順を大雑把に書くと、「動画中のフレーム内から特徴点を抽出し、隣接フレーム間での特徴点位置関係からフレーム間の(カメラ)変換を算出して、その逆変換を使うことで一連の撮影映像を一枚のパノラマ画像に合成する、という具合です。(コードの前半は、オーバーレイ表示された文字や画像を除去するためのコードですから、本質的なものではありません)
frames=Import["hoge.mov", "ImageList"];(*画像読み込み*) frames2=ParallelTable[ Sharpen[ ColorConvert[ ImageTrim[ frames[[i]], {{1, 190}, {1024, 720}}] , "Grayscale"] , 7], {i, 1, Length[frames]} ];(*画像切り取り&強調*) i1=frames2[[130]];i1search=frames2[[130]]; Do[ tr=FindGeometricTransform[ (*位置検出用画像と保存用画像は別にする*) i1search,i2 = frames2[[i]] , "Transformation" -> "Affine"]; {w, h} = ImageDimensions[i1search]; tmp = ImagePerspectiveTransformation[ i2, tr[[2]], DataRange -> Full, PlotRange -> {{0, First@tr[[2]][{w, 0}]}, {0, h}} ]; {w, h} = ImageDimensions[tmp]; i1search = ImageCompose[i1, {tmp, 1.}, Round@({w, h}/2)]; i1 = ImageCompose[i1, {tmp, 0.75}, Round@({w, h}/2), {1, 0, -1}]; {i, 131, 140, 1} ]; il (* パノラマ画像 *)
ちなみに、隣接フレーム間から画像変換の関係式を導こうとすると、隣接フレーム間で対応する点を(回転や倍率を算出するために)最低3点抽出しないといけません。…というわけで、上記コードはホームランボール(という名前のただ一点の特徴点)だけが画面に映し出されているような映像があるとエラーを吐いてしまいます。
2013-06-16[n年前へ]
■プロ野球の統一球「わずかな反発係数の差」が「ホームラン数では一目超然」になるヒミツ!?
プロ野球の統一球「わずかな反発係数の差」が「ホームラン数では一目超然」になるヒミツ!?を書きました。
ほんの1.5パーセント程度の反発係数の違いが本塁打数にして900本強と1300本弱の違いを生む…と聞くと、ちょっと不思議に感じられるのではないでしょうか?この「わずかな反発係数の差」が「ホームラン数では一目超然」になるヒミツを考えてみることにします。
ちなみに、上の2つのグラフは、一昨年・昨年・今年のホームラン数から連立方程式を作り・解くことで打球飛距離の正規分布を求めてみたもので、球統一球は平均飛距離が68.0メートル・標準偏差は19.6メートルというものでした(新統一球はこの1.02倍です)。「打球の平均飛距離がセカンドとセンターの間くらいに相当する 」なんていう「答え」が旧統一球と新統一球のホームラン数差から浮かび上がる…というのも面白いと思いませんか?