【条纹结构光投影】分享一下四步相移的代码,仅供交流学习

本文详细介绍了使用Python进行四步相移法的实现,用于处理条纹图像中的包裹相位计算,包括读取图像、计算相位和保存结果。
摘要由CSDN通过智能技术生成

算法的原理我不赘述,很多博主有说,但是我看代码大家都比较神秘,这里放一些关于四步相移法的python代码,仅供后人交流学习。
更多传送门:
【条纹结构光投影】正反格雷码解相算法分享,仅供交流学习
【条纹结构光投影】相位图去噪算法分享,仅供交流学习

四步相移法:条纹图像计算包裹相位

from skimage import io
import numpy as np
import math

def list_dot(l1, l2):
	l3 = [0 for i in range(len(l1))]
	for i in range(len(l1)):
		l3[i] = l1[i] * l2[i]
	return l3

# 四张相移图像
ori_img_1 = io.imread('1.bmp')
ori_img_2 = io.imread('2.bmp')
ori_img_3 = io.imread('3.bmp')
ori_img_4 = io.imread('4.bmp')

height,width = ori_img_1.shape

N = 4

P_img = np.zeros((height, width))
A_img = np.zeros((height, width))
B_img = np.zeros((height, width))

for i in range(height):
	for j in range(width):
		l_i = [ori_img_1[i,j], ori_img_2[i,j], ori_img_3[i,j], ori_img_4[i,j]]
		a = 2 * math.pi / N
		l_sin = [math.sin(4 * a), math.sin(5 * a), math.sin(6 * a), math.sin(7 * a)]
		l_cos = [math.cos(0), math.cos(1 * a), math.cos(2 * a), math.cos(3 * a)]

		c1 = sum(list_dot(l_i, l_sin))
		c2 = sum(list_dot(l_i, l_cos))

		P_img[i, j] = math.atan2(c1, c2) 
		
		A_img[i, j] = sum(l_i) / N
		
		B_img[i, j] = 2 * math.sqrt(c1*c1 + c2*c2) / N

# 保存到bmp会被放到0-255
io.imsave('normal.tiff', P_img)
io.imsave('A.tiff', A_img)
io.imsave('B.tiff', B_img)

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值