三维重构的一点实践

最近听了一个公开课,将一个立体物体不同角度的图片进行傅里叶变换后,放置于三维数组中,再进行反傅里叶变换,可以得到物体的3维数据集(照片是二维3通道)。

所用图片:
他人ppt中的图片,仅供研究,代号1
他人ppt中的图片,仅供研究,代号2
他人ppt中的图片,仅供研究,代号3

#所引用的图片为某公开课ppt中的截图: 
import cv2 
import numpy as np
#对图像预处理,转换为单通道图像d
def preprocess(img):
	return 0.2126 * img[:,:,0] + 0.7152 * img[:,:,1] + 0.0722 * img[:,:,2]
p1=cv2.imread("1.png")
p2=cv2.imread("2.png")
p3=cv2.imread("3.png")
p1=preprocess(p1)
p2=preprocess(p2)
p3=preprocess(p3)
#傅里叶变换,同时将高频和低频调换位置
def fftchange(img,size):    
	img=cv2.resize(img,size)    
	f=np.fft.fft2(img)    
	f_shift=np.fft.fftshift(f)   
	f_l=np.log(1+np.abs(f_shift))
	return f_l
a1=fftchange(p1,(250,250))
a2=fftchange(p2,(250,250))
a3=fftchange(p3,(250,250))
#创建空数组按照ppt中的示意图将傅里叶变换后的图片放入空数组的对应位置
zeroc=np.zeros((250,250,250))
zeroc[:,:,125]+=a1
zeroc[:,125,:]+=a2
zeroc[125,:,:]+=a3
#对数组做反傅里叶变换
ifft = np.fft.ifft2(zeroc)     
#暂时没找到绘三维矩阵图像方法,求分享

你可能感兴趣的:(三维重构的一点实践)