偏振3d算法(两张图形方可建模立体图像)
2023-09-14 09:05:38 时间
import numpy as np
import matplotlib.pyplot as plt
# 假设这个是 两个图像的比值的一行
# 有偏振的图像 /没有偏振的图像
one = np.random.random([64, 2])
def gt_or_lt(i):
return sum(i[1:] - i[:-1] > 0)
def compute_data():
# 递增 递增 低 抬高 高 顺
# 递增 递减 顺
# 递减 递增 顺
# 递减 递减 高 降低 低 顺
one_list = []
update_next_i = False
for i, j in zip(one[:-1], one[1:]):
if update_next_i:
i = one_list[-1]
update_next_i = not update_next_i
if gt_or_lt(i):
if gt_or_lt(j):
if j[0] - i[-1] > 0:
one_list.append(j)
else:
j += i[-1]
one_list.append(j)
update_next_i = not update_next_i
else:
one_list.append(j)
else:
if gt_or_lt(j):
one_list.append(j)
else:
if j[0] - i[-1] > 0:
j = 0 - j
one_list.append(j)
update_next_i = not update_next_i
else:
one_list.append(j)
return [one[0]] + one_list
if __name__ == '__main__':
one_data = compute_data()
plt.plot(list(range(np.hstack(one_data).size)), np.hstack(one_data))
plt.show()
实际验证和猜想的一样 就是 复原算法有待优化 稍微的 但是基本可以绘制出基本轮廓图3D的
只需要两个图片
如果直接使用深度学习代替建模的话应该 会更好
import numpy as np
import matplotlib.pyplot as plt
import cv2
# 假设这个是 两个图像的比值的一行
# 有偏振的图像 /没有偏振的图像
def gt_or_lt(i):
return sum(i[1:] - i[:-1] > 0)
def compute_data(one):
# 递增 递增 低 抬高 高 顺
# 递增 递减 顺
# 递减 递增 顺
# 递减 递减 高 降低 低 顺
one_list = []
update_next_i = False
for i, j in zip(one[:-1], one[1:]):
if update_next_i:
i = one_list[-1]
update_next_i = not update_next_i
if gt_or_lt(i):
if gt_or_lt(j):
if j[0] - i[-1] > 0:
one_list.append(j)
else:
j += i[-1]
one_list.append(j)
update_next_i = not update_next_i
else:
one_list.append(j)
else:
if gt_or_lt(j):
one_list.append(j)
else:
if j[0] - i[-1] > 0:
j = 0 - j
one_list.append(j)
update_next_i = not update_next_i
else:
one_list.append(j)
return [one[0]] + one_list
# return one_list
if __name__ == '__main__':
one = cv2.imread("2.jpg")
basic = cv2.imread("1.jpg")
one = one[40:120, 400:480]
basic = basic[40:120, 400:480]
new_data = np.sum(one / basic, -1)
x=[]
y=[]
z=[]
x_index=0
for one_data in new_data:
one_data = one_data.reshape([-1, 1])
one_data = compute_data(one_data)
z.append(one_data)
x.append([x_index]*len(one_data))
y.append(list(range(len(one_data))))
x_index+=1
# plt.ion()
# plt.plot(list(range(np.hstack(one_data).size)), np.hstack(one_data))
# plt.show()
# plt.pause(0.1)
# plt.clf()
ax=plt.axes(projection='3d')
ax.plot3D(np.hstack(x),np.hstack(y),np.hstack(z).reshape(-1),'gray')
plt.show()
相关文章
- 中台之建模篇
- 数学建模经验分享:国赛美赛对比/选题参考/常用技巧
- 数学建模番外篇6:二维/三维热力图绘制(matlab)
- 数学建模番外篇1:PPT绘制3D图形
- 数学建模暑期集训8:熵权法
- Atitit.软件的建模种类and 建模语言选型and UML???
- EL之RF(RFC):利用RF对二分类问题进行建模并评估
- 【总结】助力数学建模 — 预测模型总结篇(万字总结)
- 2021年美国大学生数学建模竞赛 — 模板篇+感悟篇
- 数学建模学习(107):卡方检验,Python实践
- 数学建模学习(48):安装matlab工具箱
- 数学建模学习(42):多元线性回归,重点!
- RSAC 2019 | 威胁建模模型ATT&CK
- Python小白的数学建模课-06.固定费用问题
- 【数学建模-某肿瘤疾病诊疗的经济学分析】数据分析
- 3D建模系统blender快捷键