
姿勢センサを用いて,プロジェクタの台形補正を自動で行う画像処理プログラムを作成しようと思っています.
ネットで調べたところ射影変換を使うのが定石のようですが,
その際にカメラを併用して射影変換行列を得ているものがほとんどで,姿勢センサを利用したものが見あたりませんでした.
カメラを使わず,プロジェクタの姿勢を取得する3軸姿勢センサのみで
投影画像の台形補正を行うことは可能でしょうか?
シナリオとしては,机上に置いたプロジェクタで平面(壁)に投影することを想定しています.
また,投影面までの距離はあらかじめ分かっているという前提です.
参考になる書籍等でもかまいませんので,ご教授お願いします.m(_ _)m
A 回答 (4件)
- 最新から表示
- 回答順に表示

No.4
- 回答日時:
No.1 です。
事前調査はやったほうがいいですよ。
そうすれば、センサの出力が誤差だらけだとか、そもそも、センサの取り付け精度をどうやって補償するのかとか、周辺の問題もわかってきます。
また、データがあれば、数度程度の傾きなら、一次の多変量解析で、かなりいいデータが出るはずです。
なにより、回答を待っている間に、「ある程度の傾向」がわかるはずです。
実際、こういうものは、途中の理論はどうとでもなるものです。
それより、「入力」が本当に正しく得られるかというのが一番難しい点であることが多いです。
その上で、あくまでも理論的にと言うのなら、まず、すでに調べたカメラによる方法をまず完全に理解しましょう。
その方法は、
1)カメラで壁の映像を取得 → 2)実際に写っている画像のゆがみを認識 → 3)それを元に戻す。
というロジックだと思いますが、姿勢センサを使ったときの
1)姿勢センサで傾きを認識する → 2)壁に映っているはずの壁のゆがみを認識 → 3)それを元に戻す。
ということで、1)と2)だけを考えればいいことがわかります。
実際には、三角関数の応用問題なので、図形を書いて冷静に考えればそんなに難しくないと思います。
問題は、カメラの場合、3)でフィードバックを行っている可能性が高いと言うことです。
カメラを使った場合のロジックを理解するというのは、このフィードバックが本誌的なフィードバック(一発ではきっちり計算できないので、フィードバックをしながら修正をしている)なのか、見かけのフィードバック(位置が変わったときに自動的に補正できるようにしている)のか見極めることです。
前者(本質的なフィードバック)が必要と言うことであれば、姿勢センサだけで台形処理をすることは(画像のフィードバックを得る手段がないので)とても難しいと言うことになります。
あと、カメラを使った場合、水平方向のずれも組み込んでいるはずです。
姿勢センサでは、水平方向のずれが本質的に検出できませんから、水平方向のずれの部分を排除しなければなりません。(画像の変形のどの部分が水平方向のずれを反映しているのか確認する必要がある)
No.3
- 回答日時:
なかなか面白いことをやっていますね。
自動で台形補正をするためには、当然ですが画像がスクリーンにどのように投影されるかが求められなければいけません。
これを計算で求めるためには、スクリーンとプロジェクターとの位置関係と、プロジェクターの投影角などの内部状態がわからないといけません。
位置関係は、ある程度条件を制限して、姿勢センサで求めることができると思いますが、投影角はプロジェクタ内で可変なものがほとんどだと思います。
このため台形補正をするためには、プロジェクタの投影角を何らかの方法で取得しなければいけません。おそらくあなたのやりたいことだと、投影スクリーンの大きさはあらかじめ分かっているものとして、固定にしてしまってもいいかもしれません。
以上のことから外部変数と内部変数が求められますので、ピンホールカメラモデルに基づいて、射影行列を計算することができると思います。
この回答への補足
詳しい回答ありがとうございます.
ピンホールカメラモデルというものを使うということで,ネットで調べてみました.
プロジェクタとカメラで入出力が逆なので混乱してしまったのですが,
ワールド座標系に設置されたある大きさの長方形を本来のプロジェクタ投影画像とし,
カメラの場合で言う"画像座標系"をスクリーン(プロジェクタを投影する壁面)と置き換えて
考えるということでしょうか?

No.1
- 回答日時:
本質的には、プロジェクタのレンズの中心点を、光の中心と考えて、その点から、映像の4隅までの距離が、(プロジェクタの置かれた角度により)どう変化するかという問題ですから、三角関数の組み合わせで解けそうな気はします。
が、ここでは、もっと安直な方法を。
実際に、プロジェクタを設置して、傾けてみて(姿勢センサの出力はとれるとして)壁に映った画像の4つの片の長さを実測してみれば、どう変換すればいいかがわかります。
プロジェクタを机の上に置いて、(多分垂直になっている)壁に映すということで、考えるべき角度の範囲はかなり狭いと思います。
この範囲なら、おそらく、傾ける角度と、画像の(各辺の)長さの変化は1次式で、かなり正しく表現できると思います。
あと、壁との距離は、姿勢センサを使うなら、影響はないはずです。
回答ありがとうございました.
確かに実測で計ってしまえば,(誤差は置いておいて)一番分かりやすい形で式が立てられそうです.
ただ,縦方向と横方向の姿勢変化を組み合わせると,かなり骨が折れそうですね^^;
まずは理論的に考えてみて,それが難しいようでしたらいただいたアイディアを使わせていただきます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(映画) 昔の映画の3Dリメイク版。どうやって作るのか? 4 2023/02/16 10:17
- デジタルカメラ オススメの自動水平補正機能があるミラーレスをお教えください。 3 2022/08/08 09:37
- その他(悩み相談・人生相談) 顔の歪みについてです。 自分は映画鑑賞が趣味でNetflixやその他動画配信サービスでよく映画を見る 3 2022/08/29 16:02
- カスタマイズ(車) 150後期プラド リフトアップについて 1 2022/11/27 10:12
- 大人・中高年 職場の苦手な人との付き合い方 2 2023/05/22 23:07
- その他(プログラミング・Web制作) 監視カメラを水平につないでパノラマの映像を作りたい 1 2022/09/06 15:26
- その他(悩み相談・人生相談) チラシや書類を斜めから写しても自動で綺麗に収まるカメラアプリ 1 2023/03/21 06:42
- 泌尿器・肛門の病気 姿勢と下痢の関係 3 2022/10/06 07:22
- 写真 顔の見え方について教えて欲しいです。この手の質問は何個もありましたが、自分なりの実験の結果は見つかり 5 2022/08/04 11:45
- 工学 マイクロマウス「光軸は水平であり、床面より1cmの高さにある(図1参照)」の意味? 1 2022/11/23 10:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アフィン変換後の画像に線が入...
-
ノイズ処理の原理
-
Windows Media Playerを開くと...
-
IPアドレス、サブネットマスク...
-
C++ 標準ライブラリの実際の中...
-
32768以上の乱数を作りたいので...
-
C言語について。
-
HTMLってホームページ以外どん...
-
システムコールと標準ライブラ...
-
Google ColaboでGUI作成
-
python urlopen error について...
-
String^の^自体が何を意味して...
-
Dreamweaverのライブラリが反映...
-
C# EXCELセルの入力規則設定に...
-
Access2000のVBAでSHA-256ハッ...
-
clock_gettimeでミリ秒の時間差...
-
ASP ODBC以外のSQLserver接続方法
-
pygame.error: File is not a W...
-
C言語のライブラリ関数の勉強の...
-
declaration of 'index' shadow...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
色混ぜのアルゴリズム
-
生年月日(yyyy/MM/dd) → 年齢...
-
直線と線分の交差判定について...
-
C言語の作成依頼です。
-
OpenCVで寸法測定
-
VBを使った自作の逆FFT
-
姿勢センサでプロジェクタの台...
-
C++/CLIで画像処理
-
C言語 極座標変換
-
OpenCVで、画像の平均階調値よ...
-
角が丸部分を画像上から検出す...
-
行列の積の処理を高速化したい
-
画像の拡大
-
画像の2値化について
-
Canny法に用いる閾値の決定法に...
-
VB BitmapをExcelに貼り付け 大...
-
Windows Media Playerを開くと...
-
VB.NET とドットNET(.NET...
-
Google ColaboでGUI作成
-
本格的なGUIを作るのにおすすめ...
おすすめ情報