質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

1395閲覧

方向を変えながら動画を撮影した場合の回転角を算出したい

takasi2216

総合スコア8

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/29 04:17

動画内の物体を認識して、物理的にカメラをその場で上下左右に傾けて追跡する環境を整えました。
しかし、ハードウエアと追跡する部分は既存の製品を使っているので、どれぐらい傾いたかが分かりません。

Pythonで物体を追跡している動画を入力して、そこからどのぐらいカメラが傾いているのかのデータを収録する方法が知りたいです。

私は初心者で趣味でやっているので、専門的な知識が乏しいですが、ご教示いただけますと幸いです。

可能であればOpencv を使いたいです。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

「物理的にカメラをその場で上下左右に傾けて追跡する」ということは、カメラが上下左右に向きを変えるということで、問題はその状態で取得した動画から、カメラの動いた無機と角度を求めたいということだと思います。

無理です。

真っ白な背景に左上の黒点があって、それが右下に移動したというときに、カメラがどれくらい角度を変えたかを計算するというような最も簡単な場合でも画角の情報が必要です。 撮影した動画からそのような情報を得るのはまずむりでしょう。

現実的な方法としては、「ハードウエアと追跡する部分は既存の製品」とのことですが、各軸にロータリーエンコーダを付けて情報を得て、なんらかの形で画像と一緒に記録するのがいいのではないかと思います。

投稿2021/07/29 08:38

編集2021/07/29 08:40
TakaiY

総合スコア13790

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2021/07/29 08:44

> 画角やその物体との距離などの情報が必要です 回転だけの話であれば,距離は要らないのではないでしょうか.
TakaiY

2021/07/29 08:50

はい。 そのとおりです。 読み返して気付いたので、修正しました。
fana

2021/07/29 09:11 編集

私も質問文を読み返してみましたが,何か状況がわからなくなってきました. 質問文の解釈についてですが… > 動画内の物体を認識して、物理的にカメラをその場で上下左右に傾けて追跡する環境を整えました。 まず,なんか動画(1)あって,その動画(1)には「物体」が写っている. で,その動画(1)を再生している何かを回転可能なカメラで撮影している(動画に写っている物体の像がなるべくカメラの真正面に来るように回転するのかな?) で, > Pythonで物体を追跡している動画を入力して、そこからどのぐらいカメラが傾いているのかのデータを収録する方法が知りたいです。 ここの「物体を追跡している動画」というのは,前記の状態でカメラが撮影した動画(2)なのかな,と.
fana

2021/07/29 09:16 編集

で,この動画(2)に,「動画(1)以外の部分」(e.g. 動画(1)を再生しているモニタとか,あるいはその他の背景とか)の一部が写っているとしたら,そこの像を利用してカメラの回転姿勢を推定できるかな,と. 動画(2)の視野全体が動画(1)の像で埋まっているような場合には,無理な感じですね. (「動画(1)は「物体」以外が動いていない映像だ」とかいう場合であればそこを使える.  または,動画(2)との同期がとれている形で動画(1)も入力してもらえるならば,できる可能性はあるかな) --- このような話であれば,カメラは手元に存在しているので別途キャリブレーション作業が可能であり, > 画角の情報 は入手可能な状況(最終的な処理を行う際には既知とできる)なのかな,と.
TakaiY

2021/07/29 09:22

動画は1つだと思いますよ。 その「物理的にカメラをその場で上下左右に傾けて追跡」するようになっているカメラ。 たとえば、ゴルフとかで打球を追い掛けて撮影するイメージじゃないでしょうか。 で、その撮影した画像では、物体は真ん中に写っているからどのように動いたのかわからないので、背景の動きとかで角度の変化が知りたいんじゃないいかな。と思って回答をかきました。
fana

2021/07/29 09:29

私も回答を書いた時点ではそのようなイメージでしたが,あらためて質問文を読んだら上記のような解釈も可能だなぁ,と…^^ (いずれにしても,映像内に動かない背景があれば利用できるだろうしなければできない,という話になるのですが)
guest

0

物理的にカメラをその場で上下左右に傾けて

「カメラ,というか視点 の位置は不変である」(あるいはそのような近似の上で物事を処理してもよい)という話であるなのであれば,可能でしょう,

「撮影画像上のある画素位置に写っている物がカメラから見てどの方向にあるのか」は,カメラの内部パラメータがあれば推定できます.
(カメラの「真正面」にある物体は画像上の「中央」に写り,カメラから見て正面よりも右側方向にある物は画像上で「中央」よりもより右側に写る… という「方向」と「画素位置」の間の関係式があれば,「画素位置」から「方向」を推定できる,という話)

なので,動画のあるフレームでの姿勢を基準とした,他のフレームでのカメラ姿勢を推定することは可能でしょう.


というわけで,
前述した 【「方向」と「画素位置」の間の関係式】 を入手する必要があります.
「カメラキャリブレーション」とか「内部パラメータ」とか「射影式」とかで検索等してみると良いかと.


#カメラの位置も相応に動くので向きだけじゃなくて位置も推定したい,とかいう場合は「SLAM」とかそういう方向の話になるかも

投稿2021/07/29 04:29

編集2021/07/29 04:30
fana

総合スコア11996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2021/07/29 04:33

カメラ姿勢を推定する場合には,「何らかの特定の物体」を追跡する必要も無いので, 適当に複数個の追跡できそうな場所(特徴点)のオプティカルフローあたりから(最小二乗法的な方法とかで)推定すればよいのではないかな.
fana

2021/07/29 04:37

※とりあえず話を簡便にするために > 画像上の「中央」 と書いたけど,実際にど真ん中にくるかどうかはカメラに依存するよ. 真正面の物が画像上のどこにくるのか?(:光軸点の位置)も,ふつーはカメラキャリブレーションでの推定対象であり,すなわち内部パラメータのひとつである.
fana

2021/07/29 04:44 編集

カメラのキャリブレーションをするなら,Zhangの手法(を基にしてちょっと射影式を改造されたようなやつ)の実装がOpenCVに用意されてる. カメラがごくふつーのもの(魚眼カメラとかそういうのじゃない)なら,これで十分だと思う. (これはググればそこらへんの解説とかは見つかるハズ.ただ,実作業としてはそこそこ面倒だよ.) また,その結果得られた内部パラメータ値を使った計算のための関数群も用意されているハズ(…だけど,個人的にはそんなとこは自前で計算式を実装した方が使い勝手が良い気もする).
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問