【双目视觉】 立体匹配算法原理之“代价函数”


🔥预备知识: 【双目视觉】 理想条件下计算物体距离_什么都只会一点的博客-CSDN博客

image-20220809154728317

立体匹配流程

image-20220809154759347

定义

image-20220809154858202

代价函数用于计算左、右图中两个像素之间的匹配代价(cost)。cost越大,表示这两个像素为对应点的可能性越低

常见的代价函数

1.AD/BT

C A D ( x , y , d ) = ∣ I L ( x , y ) − I R ( x − d , y ) C_{A D}(x, y, d)=|I_{L}(x, y)-I_{R}(x-d, y) CAD(x,y,d)=IL(x,y)IR(xd,y)

左图任取一个像素点,减去 向右移动d个像素值的右图,求得代价函数C;我们的目的,就是寻找代价值C最小时,d的值,根据 Z = f T x l − x r Z=\frac{f T}{x^{l}-x^{r}} Z=xlxrfT求出距离

2.AD+Gradient

在这里插入图片描述

τ c o l \tau_{c o l} τcol:截断阈值

α \alpha α:权重

τ grad  \tau_{\text {grad }} τgrad :截断阈值

AD+Gradient本质上跟AD相近,只不过是通过阈值去分配权重

3.Census

image-20220809160136197

Census方法任取左图一个像素点P,观察周围3*3窗口的像素点灰度值,如果小于P就置1,否则为0,然后编码。右图也是如此。最后异或比较,根据异或后的结果,看‘1’的个数,计算汉明距离

4.SAD/SSD

5.NCC

image-20220809160550819
  1. 特性:对图像亮度的线性变化具有不变性
  2. 物理意义: 两个向量的夹角的余弦值

6.AD+Census

因为AD代价函数容易实现,但是它容易受辐射差异的影响。 而在Census变换中,不要求像对之间的颜色一致性。因此,它对于辐射差异更加鲁棒
C A D ( p , d ) = ∑ i = R , G , B ∣ I i l e f t ( p ) − I i right  ( p − ( d , 0 ) ) ∣ 3 C I ( p , d ) = 1 − exp ⁡ ( − C A D ( p , d ) λ A D ) + 1 − exp ⁡ ( − C census  ( p , d ) λ Census  ) \begin{array}{c} C_{A D}(\boldsymbol{p}, d)=\frac{\sum_{i=R, G, B}\left|I_{i}^{l e f t}(\boldsymbol{p})-I_{i}^{\text {right }}(\boldsymbol{p}-(d, 0))\right|}{3} \\ C_{I}(\boldsymbol{p}, d)=1-\exp \left(-\frac{C_{A D}(\boldsymbol{p}, d)}{\lambda_{A D}}\right)+ 1-\exp \left(-\frac{C_{\text {census }}(\boldsymbol{p}, d)}{\lambda_{\text {Census }}}\right) \end{array} CAD(p,d)=3i=R,G,BIileft(p)Iiright (p(d,0))CI(p,d)=1exp(λADCAD(p,d))+1exp(λCensus Ccensus (p,d))
效果

image-20220809160931965

7.CNN

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 双目立体匹配是实现三维视觉的基础技术之一,而MATLAB作为一种强大的数学计算和可视化工具,可以用于实现双目立体匹配算法。 首先,需要对左右摄像机采集到的图像进行预处理,包括灰度化、去噪、增强等操作。然后,可以通过计算左右图像对应像素之间的距离或相似度来实现匹配。其中,常用的匹配算法包括基于区域的SAD、SSD、NCC等方法和基于特征点的SIFT、SURF等方法。 下面以基于SAD算法立体匹配为例进行说明。SAD算法是一种简单有效的匹配方法,它计算左右图像中同一像素之间的差值的绝对值之和来评估它们的相似度。具体实现过程如下: 1. 设置一个匹配窗口大小,例如5x5。 2. 对左图的每个像素,在右图上沿着同一行扫描匹配窗口,计算窗口内像素值差的绝对值之和,称为SAD值。 3. 对于每个像素,找到右图中SAD值最小的像素,并将它的位置作为匹配点。 4. 重复以上步骤,对于右图的每个像素,都可以找到左图对应的匹配点。 5. 根据匹配点之间的距离计算三维坐标,从而得到立体视觉效果。 MATLAB提供了丰富的图像处理和计算函数,可以轻松实现双目立体匹配算法。各种算法的具体应用可以参考MATLAB官方文档和相关论文,也可以借助MATLAB社区的开源代码进行实现。 ### 回答2: 双目立体匹配计算机视觉中的重要技术之一,可以用来获取景深信息或者进行三维重构。Matlab是一个强大的科学计算软件,也提供了许多图像处理和计算机视觉工具箱,因此可以用Matlab实现双目立体匹配算法。 双目立体匹配的基本步骤包括:特征提取、匹配代价计算代价聚合、视差计算等。其中,特征提取是关键步骤,通常采用SIFT、SURF等算法提取关键点和特征描述子。 在Matlab中,可以使用Computer Vision toolbox中的函数来进行特征提取和匹配。如SURF特征提取函数“detectSURFFeatures”和匹配函数“matchFeatures”。 接下来,需要计算匹配代价,常用的代价函数有SSD、SAD和NCC等。在Matlab中,可以使用内置函数“normxcorr2”来计算NCC代价。此外,还需要进行代价聚合,这里使用了动态规划算法或者Belief Propagation等方法来求解视差图。 最终,根据视差值计算深度等信息即可。需要注意的是,在进行双目立体匹配时,必须对左右图像进行校准,确保左右摄像机的光学中心和旋转矩阵已知。 总之,通过Matlab实现双目立体匹配算法可以快速实现目标检测、三维重构等视觉应用。虽然也有其他的工具可以实现,但Matlab提供了更多的高级算法和工具,可以快速构建和测试双目立体匹配算法。 ### 回答3: 双目立体匹配算法是数字图像处理中非常重要的一个领域,其可以解决立体成像中的深度测量问题。Matlab作为一款优秀的数学软件,可以很好地实现这种算法。 首先,双目立体匹配算法需要用到两个摄像头,将同一场景捕捉到的图像进行采集,使其产生一定的视差。接着,对于双目图像进行预处理,如图像去噪,平滑处理等。 然后在Matlab中实现视差计算算法。这里可以采用灰度共生矩阵、SAD(Sum of Absolute Differences)等算法计算视差。最后,对匹配结果进行处理,如消除错误匹配点、处理孔洞、插值等,得到最终的深度图。 实现双目立体匹配算法需要掌握Matlab图像处理工具箱中函数的使用,如图像滤波函数、图像分割函数、特征提取函数等。同时需要理解立体匹配原理和相关算法,并能进行代码编写和调试。 总之,通过Matlab实现双目立体匹配算法能够使我们更好地理解该算法原理,加深对计算机视觉领域的认识,并且提高图像处理的技能水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落叶随峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值