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

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

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

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

Python

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

Q&A

1回答

1209閲覧

3次元画像復元のコードについて

mikanken

総合スコア10

OpenCV

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

Python

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

0グッド

0クリップ

投稿2019/02/05 10:33

2枚の画像(左画像と右画像)からステレオ法により,物体の3次元情報を抽出しようとしています.画像内容は図形(三角錐,直方体など)が重なって配置してあるものです.
カメラパラメータは未知であるが,平行ステレオで撮影されており,カメラ中心間の距離,直方体のある一つの頂点の奥行き(撮影者からの距離)はわかっている状態です.
この状態から,画像内の図形の頂点座標を抽出,さらには撮影位置以外の地点から撮影したらどのような画像になるかを知りたいです

精度は悪いですが,一枚の画像から頂点を抽出しプロットすることには以下のコードで成功しました.
しかし,カメラ中心間の距離,直方体のある一つの頂点の奥行き(撮影者からの距離)を用いずopenCVを用い実装したため,2枚の画像を組み合わせて,3次元の座標を抽出できていません.
解決方法を教えていただきたいです.また,さらに,別方面からの撮影画像の生成の方法を教えていただきたいです.

Python

1import cv2 2import numpy as np 3 4filename = 'left.jpg' 5img = cv2.imread(filename) 6gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 7 8# find Harris corners 9gray = np.float32(gray) 10dst = cv2.cornerHarris(gray,2,3,0.04) 11dst = cv2.dilate(dst,None) 12ret, dst = cv2.threshold(dst,0.01*dst.max(),255,0) 13dst = np.uint8(dst) 14 15# find centroids 16ret, labels, stats, centroids = cv2.connectedComponentsWithStats(dst) 17 18# define the criteria to stop and refine the corners 19criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 100, 0.001) 20corners = cv2.cornerSubPix(gray,np.float32(centroids),(5,5),(-1,-1),criteria) 21 22# Now draw them 23res = np.hstack((centroids,corners)) 24res = np.int0(res) 25img[res[:,1],res[:,0]]=[0,0,255] 26img[res[:,3],res[:,2]] = [0,255,0] 27 28cv2.imwrite('subpixel5.png',img)

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

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

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

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

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

guest

回答1

0

幾何計算にカメラを用いるんだけども,カメラの内部パラメータの校正は行わない(面倒だから?)という状況なのでしょうか?

とりあえず,与えられている既知の条件から,
【2カメラの画像上での特徴点の座標から,その特徴点の3次元座標を復元するための数式に必要なカメラパラメータの値】
は推定する必要があるのではないでしょうか.


わりと投げやりな話(?)になりますが…

カメラパラメータは未知

とのことですが,カメラモデルには何か仮定を置けるのでしょうか?
例えば,「歪はほとんどないから,とりあえずピンホールカメラモデルで考えてOK」とか.

 ↓

仮に,とりあえず2カメラ共にピンホールカメラモデルで考えてよくて,
且つ,光軸点位置も,まぁ,画像中心と見なしてもいいや(!)的な状態で考えて良いとしたら…
未知のカメラパラメータは2つのカメラのfになるでしょう.これをf1とf2と書くとき,

平行ステレオで撮影されており,カメラ中心間の距離,直方体のある一つの頂点の奥行き(撮影者からの距離)はわかっている

という既知の条件から式を立てて,f1とf2を解くことができればよいわけです.
当方,数学が弱いので,1点の奥行情報だけからこの2つを求められるのか?に関してちょっと自信ないですけど,
もし無理なら

  • 奥行が既知の点の個数を増やす方向に条件を緩和できないか?
  • より乱暴に,f1=f2 と見なしてしまってもよいか?

等の方向を考えることになるのかもしれません.

投稿2019/02/06 01:46

fana

総合スコア11656

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問