実現したいこと
python OpenCVのStereoSGBMについて教えてください。
StereoSGBM_createをした後に視差を計算(compute)すると、
視差の値域が0numDisparitiesになると思っていたのですが、numDisparities*16になっているような気がします。
少し異なるようです。0
https://github.com/opencv/opencv/blob/master/samples/python/stereo_match.py
上記を見ると、以下のように16で割っています。
disp = stereo.compute(imgL, imgR).astype(np.float32) / 16.0
なぜ視差の値域が0~numDisparities*16になるのか教えて頂けないでしょうか。
16で必ず割る必要があるのでしょうか。
試したこと
以下私の実装です。
numDisp=16だと値域が0256、32だと0512になっていそうでした。
python
1leftimg = cv2.imread("bb.png",0) 2rightimg = cv2.imread("aa.png",0) 3 4numDisp = 48 5 6stereo = cv2.StereoSGBM_create( 7 numDisparities = numDisp, 8 blockSize = 5, 9 ) 10 11disp = stereo.compute(leftimg, rightimg)
下の画像のように画像のx座標が0~48までが視差が計算されていない領域になっています。
視差が負の値を取る→視差が得られなかったと考えてよいのでしょうか。
この負の値もnumDisparitiesの設定で変わってきます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/12 10:32