- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我最初在 OpenCV 论坛上发布了这个,但不幸的是,我没有得到太多的意见/回复,所以我在这里发布是希望有人可能有方向建议?
我正在使用 Bumblebee XB3 立体相机,它有 3 个镜头。我花了大约三周时间阅读有关使用立体校准和立体匹配功能的论坛、教程、Learning OpenCV 书籍和实际的 OpenCV 文档。总而言之,我的问题是我生成了一个很好的视差图,但点云很差,看起来歪斜/压扁,不能代表实际场景。
到目前为止我做了什么:
使用 OpenCV 立体校准和立体匹配示例来:
使用棋盘图像校准我的立体相机
1) 原始场景图像:http://answers.opencv.org/upfiles/1380850337241986.jpg
2)使用相机校准后的矩阵校正从相机获得的原始图像:http://answers.opencv.org/upfiles/13808502665723237.png
3)使用立体匹配(SGBM)从校正后的图像生成视差图像:
4) 将这些差异投影到 3D 点云
到目前为止,我为消除我的问题所做的工作:
stereoCalibrate(objectPoints, imagePoints[0], imagePoints[1],
cameraMatrix[0], distCoeffs[0],
cameraMatrix[1], distCoeffs[1],
imageSize, R, T, E, F,
TermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 100, 1e-5),
//CV_CALIB_FIX_ASPECT_RATIO +
//CV_CALIB_ZERO_TANGENT_DIST +
//CV_CALIB_SAME_FOCAL_LENGTH +
CV_CALIB_RATIONAL_MODEL
//CV_CALIB_FIX_K3 + CV_CALIB_FIX_K4 + CV_CALIB_FIX_K5
);
cv::reprojectImageTo3D( imgDisparity16S, reconstructed3D, Q, false, CV_32F);
for (int i = 0; i < reconstructed3D.rows; i++)
{
for (int j = 0; j < reconstructed3D.cols; j++)
{
cv::Point3f cvPoint = reconstructed3D.at<cv::Point3f>(i, j);
//Filling in a PCL structure
pcl::PointXYZRGB point;
point.x = cvPoint.x;
point.y = cvPoint.y;
point.z = cvPoint.z;
point.rgb = rectified_imgRight.at<cv::Vec3b>(i,j)[0]; //Grey information
point_cloud_ptr->points.push_back (point);
}
}
point_cloud_ptr->width = (int) point_cloud_ptr->points.size();
point_cloud_ptr->height = 1;
pcl::io::savePCDFileASCII("OpenCV-PointCloud.pts", *point_cloud_ptr);
Q: rows: 4
cols: 4
data: [ 1., 0., 0., -5.9767076110839844e+002, 0., 1., 0.,
-5.0785438156127930e+002, 0., 0., 0., 6.8683948509213735e+002, 0.,
0., -4.4965180874519222e+000, 0. ]
最佳答案
我在使用 OpenCV (v.2.4.6) 3D 重建功能时发现了类似的问题。
有些人,比如 Martin Peris,自己又实现了。
http://blog.martinperis.com/2012/01/3d-reconstruction-with-opencv-and-point.html
可悲的是,有时我在我的数据的两种实现中都发现了问题。
所以,我认为我在这些情况下的问题是由于外部相机参数描述不佳。也许,这也是你的情况。 :-?
附注。为了摆脱背景,您需要对其进行分割。或者,至少,一旦重建工作,检查大于阈值的深度值。 handleMissingValues 标志仅消除“无穷大”处的点
PS2。请告诉我们您是否解决了这个问题。我认为它对所有社区都很有值(value)。谢谢
关于OpenCV 立体声匹配/校准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19205557/
我正在使用 libspotify 检索音乐以使用某些音频库播放。 Spotify 音乐应为原始 16 位、44100hz、立体声 LPCM。我一直在尝试用 NAudio 播放音乐,但不幸的是它不是立体
我在stackoverflow上找到了以下不可思议的代码。请任何人帮助我添加第二个 channel (立体声) 将有nchannels = 2 必须(以某种方式)增加文件大小,并且必须添加2.数组(即
我试图将我的音频通话强制设为单声道,我愿意使用 PCMU、G.729、OPUS 和 SpeeX 作为我的通话编解码器。 现在我正在使用以下代码在我的 sdp 消息中搜索所选的编解码器: functio
我正在使用 AudioKit 创建一个实验性 iOS 音频应用程序。目前,我正在尝试将 AKStereoInput 的左声道重新路由到 AudioKit.output 的右声道,并将 AKStereo
我目前正在使用 python 处理 .wav 文件,使用 Pyaudio 流式传输音频,使用 python wave 库加载文件数据。 我计划稍后包括处理单个立体声 channel ,关于信号的幅度和
我正在尝试获取空间中几个点的 3D 坐标,但我从 undistortPoints() 和 triangulatePoints() 都得到了奇怪的结果。 由于两个相机的分辨率不同,我分别校准,得到0,3
我正在尝试从具有以下音轨布局的 Prores 中提取只有 2.0 的 Prores 视频(L R 在同一轨道上)。如何使用 FFmpeg 库来做到这一点? 我无法从以下 ffmpeg 库规范 http
我正在使用javasound并具有格式的AudioInputStreamPCM_SIGNED 8000.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endi
我想要与此匹配的 FFmpeg cli 设置(这是手刹预设) 这是预设文件,我不明白这些对ffmpeg是什么。 { "AlignAVStart": false, "AudioCopyM
为了解决我遇到的 5.1 电影的对话非常好的问题,我使用 FFMPEG 将我的 MKV 电影的每个音轨转换为具有音频规范化的 2.0 音轨,从而使视频和字幕保持不变。 该命令如下所示: for /r
我试图理解 YouTube 在他们推荐的上传编码设置中列出的内容,以获得最佳质量。这是链接:https://support.google.com/youtube/answer/1722171#zipp
我有一个包含 16 个音频单声道流的 MXF 文件,我需要将其重新编码为一个 mp4 文件,其中 2<=n<=16 个 channel 合并输入流,例如在输出 channel 1 上输入 channe
我是一名优秀的程序员,十分优秀!