【问题标题】:how to access the disparity value in opencv如何访问opencv中的视差值
【发布时间】:2015-05-11 15:19:12
【问题描述】:

哪个选项是正确的

disparity.at<short>(X,Y)
disparity.at<uchar>(X,Y)

我们是否必须将视差除以 16.0 才能获得正确的视差。 有些人在他们的博客中使用 1。有些人使用 2。使用函数 disparity.type() 的类型很短。 我通过使用 1 访问得到的差异值非常高。

【问题讨论】:

  • 我看不出 1 和 2 之间有什么区别。我错过了什么吗?
  • 抱歉错过了...我正在写...我在里面写没有使用插入代码选项
  • 您从哪里获得差异值? Kinect 捕获库通常提供 16 位无符号值(但深度,而不是差异),这将是 .at&lt;short&gt; 其他方法可能会计算 &lt;uchar&gt; 值,甚至可能是 &lt;float&gt; 或其他东西。您可以尝试打印disparity.depth 并告诉我们。还要提一件事:如果您的 X 和 Y 是图像符号 X 和 Y,那么您的访问是错误的,应该是 .at&lt;type&gt;(Y,X).at&lt;type&gt;(cv::Point(X,Y))
  • 我有两个来自 KITTI 数据集的立体对图像。我正在使用 opencv 中给出的 stereoBM 发现差异。
  • 如果您使用StereoMatcher::compute 创建它,您可以查看文档:disparity – Output disparity map. It has the same size as the input images. Some algorithms, like StereoBM or StereoSGBM compute 16-bit fixed-point disparity map (where each disparity value has 4 fractional bits), whereas other algorithms output 32-bit floating-point disparity map.,它是 16 位类型,所以 肯定是错误的。不确定那个定点 4 小数位 docs.opencv.org/trunk/modules/calib3d/doc/…

标签: opencv computer-vision stereo-3d


【解决方案1】:

如果您使用 OpenCV 2.4.x,您必须查看 http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#stereobm-operator,它会告诉您:

disparity – 输出视差图。它与输入图像的大小相同。当 disptype==CV_16S 时,地图是 16 位有符号单通道图像,包含按 16 比例缩放的视差值。要从这种定点表示中获得真正的视差值,您需要将每个 disp 元素除以 16。如果 disptype==CV_32F,视差图将已经包含输出的真实视差值。

因此,如果您在计算过程中选择了disptype = CV_16S,您可以通过以下方式访问像素位置 (X,Y) 处的像素:

short pixVal = disparity.at<short>(Y,X);

而视差值为

float disparity = pixVal / 16.0f;

如果您在计算过程中选择了disptype = CV_32F,则可以直接访问视差:

float disparity = disparity.at<float>(Y,X);

.at&lt;uchar&gt;访问视差矩阵肯定是错的!

请注意,不同的 OpenCV 版本可能存在差异!

【讨论】:

  • 感谢您的回答 ....我使用的是 (X,Y) 而不是 (Y,X) 并且出现 deg 错误 ....非常感谢
  • 玩得开心! .at(Y,X) 的顺序访问有点令人困惑,但那是因为它是一个矩阵,而数学矩阵约定是在列之前先索引行。虽然图像通常具有 X 轴优先访问像素。
【解决方案2】:

使用StereoBM,输出差异可以是CV_16SCV_32F。当视差的类型为CV_16S时,它是一个16位有符号单通道图像,包含按16缩放的视差值。要从这种定点表示中获得真正的视差值,您需要将每个元素除以16 . 如果视差的类型是CV_32F,那么视差图将已经包含输出的真实视差值。

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2011-11-24
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多