三维重建一直是机器视觉研究的热门方向,比如,基于双目视觉,单目视觉,多视几何,光场三维重建等等。
每一种方法都有其有点和局限性。单目视觉需要拍摄多幅图像,并且在拍摄过程中需要不断的调整相机的聚焦位置,最后采取一定的融合方法来找到每幅图像中的清晰像素点,从而得到深度信息。这种方法也被称为焦点堆栈法。
在实际测试多个场景后,发现二级梯度评价函数和拉普拉斯评价函数融合效果较好。
程序实现如下:
import cv2
import numpy as np
def erjitidu(bh):#二级梯度评价函数
qq=0.0
m,n=bh.shape
for i in range (2,m-1):
for j in range (2,n-1):
gx=(bh[i+1,j-1]+2*bh[i+1,j]+bh[i+1,j+1])-(bh[i-1,j-1]+2*bh[i-1,j]+bh[i-1,j+1])
gy=(bh[i-1,j+1]+2*bh[i,j+1]+bh[i+1,j+1])-(bh[i-1,j-1]+2*bh[i,j-1]+bh[i+1,j-1])
qq=qq+gx*gx+gy*gy
return qq
def laplas(x):#拉普拉斯评价函数
qq=0.0
m,n=x.shape
for i in range (2,m-1):
for j in range (2,n-1):