我有一台立体摄像机,配有两个摄像头,我正在使用Matlab。我校准相机,并获得stereoParams。
然后,我希望用户能够选择图片中的一个点,并获得图像中的真实世界点位置。我知道,我需要基线,焦距和像素差异。我有像素差异,但我如何获得基线和焦距?可以从stereoParams计算基线吗?
答案 0 :(得分:1)
我不熟悉Matlab立体相机校准功能,但一般来说,一旦校准每台相机并找到基本矩阵,您应该能够做到以下几点:
答案 1 :(得分:0)
“像素”视差在校正的图像坐标中定义。但是,由于您的真实相机通常不会完全平行且行对齐,因此会有一个非标识转换来纠正您输入的相机图像。因此,您需要“撤消”整流,以便找到与给定图像对应的另一图像中的像素。程序如下:
请注意,所有这些操作只需对每个像素执行一次,并且可以缓存。换句话说,您可以预先计算“整流的”2通道视差图,该视图对于每个像素产生从其在一个图像中的坐标到另一图像中的对应像素的偏移。地图本身可以存储为图像,其通道类型取决于视差范围 - 通常短整数就足够了,因为它可以表示+ - 32K像素的偏移。
答案 2 :(得分:0)
您可以使用reconstructScene功能,它会为每个有效差异的像素提供3D世界坐标。在此example中,您可以查找检测到的人的质心的3D坐标。