计算机视觉——NCC 视差匹配

一、归一化互相关(NCC)

1.原理

对于原始的图像内任意一个像素点(Px,Py)构建一个nn的邻域作为匹配窗口。然后对于目标相素位置(Px+d,Py)同样构建一个nn大小的匹配窗口,对两个窗口进行相似度度量,注意这里的d有一个取值范围。对于两幅图像来说,在进行NCC计算之前要对图像处理,也就是将两帧图像校正到水平位置,即光心处于同一水平线上,此时极线是水平的,否则匹配过程只能在倾斜的极线方向上完成,这将消耗更多的计算资源。
在这里插入图片描述
其中p点表示图像I1待匹配像素坐标(Px,Py),d表示在图像I2被查询像素位置在水平方向上与Px的距离。
◆NCC(p,d)得到的值得范围将在[−1,1]之间。
◆Wp表示以待匹配像素坐标为中心的匹配窗口,通常为3*3匹配窗口。
◆I1(x,y)为原始图像的像素值。
◆I1(px,py)为原始窗口内像素的均值。
◆I2(x+d,y)为原始图像在目标图像上对应点位置在x方向上偏移d后的像素值。
◆I2(px+d,py)为目标图像匹配窗口像素均值。

对于同一图像,左眼看到的图像相对于右眼看到的图像的位置是不一样的,如上图,对于相同位置在右眼看到的图像的位置在左眼看到的图像的位置的前边,所以左视差图和右视差图的搜索方法不同,对于左视差图:由于其位置比右眼看到的位置要远,则对于在右眼图像相同的物理位置应该往该位置的前边搜索才可能找到最相近的部分,即要减去d。同理,对于右视差图则刚好相反,要加d。

上述公式表示度量两个匹配窗口之间的相关性,通过归一化将匹配结果限制在 [-1,1]的范围内,可以非常方便得到判断匹配窗口相关程度:若NCC = -1,则表示两个匹配窗口完全不相关,相反,若NCC = 1时,表示两个匹配窗口相关程度非常高。

2.算法步骤

1.预计算模板图像和目标图像的积分图
2. 根据输入的窗口半径大小使用积分图完成NCC计算
3. 根据阈值得到匹配或者不匹配区域。
4. 输出结果

为了减小计算量,我们可以要把输入的图像转换为灰度图像,在灰度图像的基础上完成整个NCC计算检测。我们这个给出的基于RGB图像的NCC计算完整代码,读者可以在此基础上修改实现单通道图像检测。

3.应用

◆ 物体有轻微变形
◆ 图像模糊、边缘不清的图片
◆ 图片有纹理

4.特点

◆ 快速、基于灰度的匹配
◆ 鲁棒性
◆ 模糊图像
◆ 边缘变形图像
◆ 有纹理的图像

二、实验

数据来源为:http://vision.middlebury.edu/stereo/data/scenes2003/ 已经经过矫正。
在这里插入图片描述

1.左右两张视图

2.1.1代码:

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
import cv2
from numpy import *
from numpy.ma import array
from scipy.ndimage import filters
def plane_sweep_ncc(im_l,im_r,start,steps,wid):
    
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值