计算一个全息图片的两个设想
程序员文章站
2022-03-07 20:50:39
import cv2import numpyimage=cv2.imread("12.jpg")image=image.astype(numpy.float32)image=image[:,:,:1]+image[:,:,1:2]+image[:,:,2:3]cols_list=[]rows_list=[]for i in range(image.shape[1]-2): v......
import cv2
import numpy
image=cv2.imread("13.jpg")
image=image.astype(numpy.float32)
image=image[:,:,:1]+image[:,:,1:2]+image[:,:,2:3]
# 建设一个像素代表实际像素的100000
long_data=100000
cols_list=[]
rows_list=[]
for i in range(image.shape[1]-2):
h2=(image[:,i:i+1, :]-image[:,i+1:i+2, :])**2
value_av=numpy.sqrt(h2/(h2+long_data))
cols_list.append(value_av)
cols_list=numpy.hstack(cols_list)
# 光线的纵向夹角
col=numpy.max(cols_list)
x_max=numpy.argmax(cols_list)//cols_list.shape[1]
y_max=numpy.argmax(cols_list)%cols_list.shape[1]
# 色差最大的两个点
for i in range(image.shape[0]-2):
h2=(image[i:i+1,:, :]-image[i+1:i+2,:, :])**2
value_av=numpy.sqrt(h2/(h2+long_data))
rows_list.append(value_av)
rows_list=numpy.vstack(rows_list)
# 光线的横向夹角
row=numpy.max(rows_list)
x__max=numpy.argmax(rows_list)//rows_list.shape[1]
y__max=numpy.argmax(rows_list)%rows_list.shape[1]
# 色差最大的两个点
print(image.shape,x_max,y_max,x__max,y__max,col,row)
image=cv2.imread("13.jpg")
cv2.line(image,(x_max,y_max),(x__max,y__max),5)
cv2.imwrite("131.jpg",image)
# 光线的横纵夹角才能代表光作用于三维世界 也就是说光平面代表光的方向,人的眼睛可以虚拟出来光平面
# 可以写作z=ax+by
# 在long_data=1000000实际比例一定的情况先不同的图片的光平面是不一样的也就是col和row不一样
# 然而一般素描图片两个亮度点距离比较远距离比较立体
# 正常相机拍出来的两个点会十分的接近 所以就是个平面
# 所以根据光平面改造图片
# 最适合的两个点就是光平面和sensor焦线上的点,加入x,y坐标形成的面是sensor(可以是图片)(焦线的两端3分之一处)
# 最好是图片的中心作为坐标的中心点 与y的焦点是(图片的一半,-a/b )与x是(-b/a,图片的一半) (负号代表图片的坐下方)这样直接就得出了也不用考虑太多
# 将图片改造参考上面的算法,相邻的点相减,得到h也就是控制相减的h,最后倒退回去,在使用原始图片三个通道的比例分成h即可
if __name__ == '__main__':
pass
同理可以实现多个不同位置的感光最大位置
这样多个图片在像视频一样播放是不是会全息 当然这里使用的是最大
也可以使用平均光平面,
还有一个猜想就是一个素描还是普通的图片都是一个光平面,
如果通过上面的方法自定义光平面多个,为一个图片,也是有可能实现全息图片的
本文地址:https://blog.csdn.net/weixin_32759777/article/details/104856214
推荐阅读
-
用java写了一个计算器(两个数的加减乘除运算)
-
计算一个全息图片的两个设想
-
实现X*Y,其中X=4,Y=3,在数据段定义X,Y两个8位的变量和一个两个字节的Z变量,计算结果存放在Z变量中。
-
C语言:计算字符串中子串出现的次数 程序说明:利用输入函数输入任意两个字符串,请你编写程序求出第二个字符串在第一个字符串中出现的次数,即在第一个字符串中有几个第二个字符串。
-
对象的扩展(属性名简写、对象简写、字面量对计算属性的改进、两个数组里面的元素一一对应,赋值到一个对象中去)
-
用JAVA写一个简单的计算器程序有GUI界面(仅实现两个数的加减乘除已经清空)
-
计算一个全息图片的两个设想
-
骰子游戏 我们来玩一个游戏。 同时掷出3个普通骰子(6个面上的数字分别是1~6)。 如果其中一个骰子上的数字等于另外两个的和,你就赢了。 下面的程序计算出你能获胜的精确概率(以既约分数表示)
-
编写一个汇编程序语言,把20个字节的数组分成正数数组和负数数组,并分别计算两个数组中数据的个数。