日々現状維持

日暮れて道はなし

プロフィール

七橋綴(ななつ☆)

Author:七橋綴(ななつ☆)
大学生:♂
2013年―――気づけば今年誕生日を迎えると四捨五入で30歳
地獄の業界、SE業。
NEETになりたい(迫真)

カウンター

宣伝/広告


ブログ内検索

presentsed by nanatu

カレンダー

04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -


研究よ爆発して

OpenCVなどを利用してARを作成していますが、いろいろとまとめておこう。
まず第一にOpenCVでのカメラキャリブレーションを行う為にデフォで使用される、チェスボード。
元々はチェスボードの二次元座標と予め設定した三次元座標との対応点で、
カメラパラメータを拾ってくれるらしいけども、100msはかかると書いてあって戦慄。
そもそもカメラパラメータ自体は何度も求めるものではないので、
ARツールキットで使われるようなマーカー検出を別に用意して使用した方が早いかも。
色々なサイトを巡ったところ、やはり黒ぶちで二重に囲ってあるマーカが多く、
あれは内側と外側の面積などでどうやらマーカーかどうかを判断している。
それで中のシンメトリーではないマークの何かを使用して上下左右を判断させてるっぽい。

輪郭抽出では10msあたり?
実際に動画は60フレームが滑らかだと思っているので、
そう考えると、1秒割るの60フレーム。つまり0.016s/f
findChessの場合は100ms――――って0.1秒だから、60fpsは実現不可ということが判明。
と、なると10msである輪郭抽出が一番理想的ということか。
findChessの精度は捨てがたいが、実現しようとすると30fpsくらいになる。

輪郭抽出の理論。
これは簡単。グレイスケール化して二値化、その後白黒の境界を判定するだけ。

cv::cvtColor(入力画像,出力画像,CV_RGB2GRAY);
cv::threshold(入力画像,出力画像,数値,数値,モード?);
cv::findContours(入出力画像,・・・);

この流れでできるみたい。

で、方向を求めたいので、まずは外側の黒ぶちを探すわけか。
さて、頑張ろう。

スポンサーサイト