前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >视差匹配

视差匹配

作者头像
裴来凡
发布2022-05-29 09:27:52
发布2022-05-29 09:27:52
88500
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
from PIL import Image
from pylab import *
import cv2
from numpy import *
from numpy.ma import array
from scipy.ndimage import filters
from PIL import Image
import imageio
def plane_sweep_ncc(im_l,im_r,start,steps,wid):
    m,n=im_l.shape
    mean_l=zeros((m,n))
    mean_r=zeros((m,n))
    s=zeros((m,n))
    s_l=zeros((m,n))
    s_r=zeros((m,n))
    dmaps=zeros((m,n,steps))#保存深度平面数组
    #计算图像块平均值
    filters.uniform_filter(im_l,wid,mean_l)
    filters.uniform_filter(im_r,wid,mean_r)
    #归一化图像
    norm_l=im_l-mean_l
    norm_r=im_r-mean_r
    #尝试不同视差
    for displ in range(steps):
        #将左边图像移动到右边计算加和
        filters.uniform_filter(np.roll(norm_l,-displ-start)*norm_r,wid,s) # 和归一化
        filters.uniform_filter(np.roll(norm_l,-displ-start)*np.roll(norm_l,-displ- start),wid,s_l)
        filters.uniform_filter(norm_r*norm_r,wid,s_r)#和反归一化
        #保存ncc分数
        dmaps[:,:,displ]=s/sqrt(s_l*s_r)
        #为每个像素选取最佳深度
    return np.argmax(dmaps,axis=2)
im_l=array(Image.open(r'C:/Users/xpp/Desktop/Lena.png').convert('L'),'f')
im_r=array(Image.open(r'C:/Users/xpp/Desktop/Lena.png').convert('L'),'f')
#偏移并设置步长
steps=12
start=4
wid=8#nccu宽度
res=plane_sweep_ncc(im_l,im_r,start,steps,wid)
imageio.imwrite('C:/Users/xpp/Desktop/result.png',res)

算法:视差匹配是以图像对中任一幅图像为基准,其大小为该基准图像的大小,元素值为视差值的图像进行匹配。从立体图像对中提取包含了场景的距离信息的视差图进行匹配,一直是双目视觉研究中最为活跃的领域。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档