github地址 https://github.com/HWenTing/Photo-Wake-Up
鉴于边界点等效果较差,采取两种措施
(1)使用bfs思想平滑图片。通过常识我们知道,相邻像素之间的深度值不会差别很大。从这种想法出发,选取基本点,然后用bfs方法减少相邻的像素之间的深度值差。主要代码如下
import queue
# 从中心点开始,bfs向外扩展,将变化大的点的深度值平滑
# x,y为图片中心,img为图片深度值,gap为相邻元素深度值最大差,diff为深度值差合理范围
def bfs_smooth(x,y,img,gap,diff):
q = queue.Queue()
visited = np.mat(np.zeros((x,y)))
mid_x = int(x/2)
mid_y = int(y/2)
q.put((mid_x,mid_y))
visited[mid_x,mid_y]=1
while not q.empty():
cx,cy = q.get()
before = img[cx][cy]
for i in range(-1,2):
for j in range(-1,2):
new_x = cx+i
new_y = cy+j
if(img[new_x][new_y]!=0 and visited[new_x,new_y] == 0 ):