基于python的立体匹配基础算法SSD、SAD、ZNCC、BM、SGBM实现

发布于:2024-04-27 ⋅ 阅读:(43) ⋅ 点赞:(0)


一、BM算法

  BM算法(Block Matching Algorithm)是一种基本的视差估计算法,用于立体匹配(stereo matching)。立体匹配是计算机视觉中的重要任务,旨在通过分析从不同视角观察的图像来确定图像中的对应点,从而获取场景的三维信息。
  BM算法的基本思想是将一幅图像中的每个像素与另一幅图像中的像素进行比较,找到最匹配的像素。为了减少计算量,BM算法将图像划分为块(block),然后在相应的块中寻找最佳匹配。

在这里插入图片描述

二、SAD算法

  SAD算法(Sum of Absolute Differences)是一种用于图像处理和计算机视觉中的相似度度量方法,常用于立体匹配(stereo matching)中的视差估计。
  在立体匹配中,SAD算法用于衡量一幅图像中的一个像素与另一幅图像中对应像素之间的差异程度。具体来说,SAD算法计算两个像素值之间的绝对差值,然后将所有差值加总,得到一个总的差异程度。这个总和越小,表示两个像素越相似。
在这里插入图片描述

三、SSD算法

  SSD算法(Sum of Squared Differences)是一种用于图像处理和计算机视觉中的相似度度量方法,常用于立体匹配(stereo matching)中的视差估计。
  与SAD算法类似,SSD算法也用于衡量一幅图像中的一个像素与另一幅图像中对应像素之间的差异程度。不同之处在于,SSD算法计算两个像素值之间的差值的平方,然后将所有差值的平方加总,得到一个总的差异程度。这个总和越小,表示两个像素越相似。
在这里插入图片描述

四、ZNCC算法

  ZNCC算法(Zero-mean Normalized Cross-Correlation)是一种用于图像处理和计算机视觉中的相似度度量方法,常用于立体匹配(stereo matching)中的视差估计。
  ZNCC算法通过计算两个像素块(block)之间的归一化互相关来衡量它们之间的相似度。具体来说,ZNCC算法首先将两个像素块中的像素值减去均值,然后计算它们的互相关,最后再进行归一化处理。这个归一化的过程可以消除亮度和对比度的差异,使得相似度度量更加鲁棒。
在这里插入图片描述

五、SGBM算法

  SGBM(Semi-Global Block Matching)算法是一种用于立体匹配(stereo matching)的计算机视觉算法,是对传统的全局匹配(global matching)算法的改进。
  立体匹配是指通过比较两幅图像中对应位置的像素,来确定它们之间的视差(disparity),从而获取场景的三维信息。SGBM算法在这个过程中采用块匹配(block matching)的方法,在图像中移动一个固定大小的窗口,并计算窗口内像素的相似度,然后选择最匹配的像素作为匹配点。
在这里插入图片描述

效果展示

直接修改左图、右图、以及保存结果图片的路径即可!
程序独立编写,直接启动即可!效果如下:

在这里插入图片描述
在这里插入图片描述
下载链接在这里:

(一杯奶茶不过分吧!而且我只能分到50%!😁🤞)


网站公告

今日签到

点亮在社区的每一天
去签到