python中的星迹图像叠加

python中的星迹图像叠加,python,image,Python,Image,我试图用python制作一些strar trail图片,但我似乎对图像库的工作原理缺乏一些基本的了解。因为在我的头脑中,把所有的帧加在一起,然后除以帧数,应该可以很好地工作 然而,这给出了一个完全黑色的图片,而仅仅添加它们就给出了下面的图片 代码: 结果: 现在,如果我从网络上获取一些代码: from PIL import ImageChops import os, Image data = num.genfromtxt('list.txt',dtype='str') finalimage=

我试图用python制作一些strar trail图片,但我似乎对图像库的工作原理缺乏一些基本的了解。因为在我的头脑中,把所有的帧加在一起,然后除以帧数,应该可以很好地工作

然而,这给出了一个完全黑色的图片,而仅仅添加它们就给出了下面的图片

代码:

结果:

现在,如果我从网络上获取一些代码:

from PIL import ImageChops
import os, Image

data = num.genfromtxt('list.txt',dtype='str')
finalimage=Image.open(data[0])
for i in range(1,len(data)):
    currentimage=Image.open(data[i])
    finalimage=ImageChops.lighter(finalimage, currentimage)
finalimage.save("allblended.jpg","JPEG")
我明白了:

但我不确定这有什么不同

打火机

图像点烟器(图像1、图像2)⇒ 形象

逐像素比较两个图像,并返回一个新图像 包含较轻的值

out = max(image1, image2)
我知道这是为了寻找更亮的像素,但这应该是一种平均的形式,对吗?
有没有办法让我的方式发挥作用?(即使这意味着亮度降低)

不是真正的平均值。让我们看一个简单的例子:

# Averaging
>>> a = np.array([1, 2, 3, 4, 5, 6])
>>> b = np.array([6, 5, 4, 3, 2, 1])
>>> (a + b) / 2
array([3, 3, 3, 3, 3, 3])
现在让我们取每个位置的“较轻”值:

>>> np.max([a, b], axis=0)
array([6, 5, 4, 4, 5, 6])

第二种方法应该适合您。只需“堆叠”图像,并要求Numpy返回一个新帧,其中包含每个帧的最大值。在理想情况下,你的背景会完全相同,然后
np.max
只会在你注册星星的像素中返回不同的值,从而为你提供轨迹。

好的,这似乎可行!但是为什么我不能第一次得到一张普通的照片呢?以某种方式进行平均会很好,因为这样可以去除云层:P你可以从最大值的图像中减去平均图像吗?我不太精通图像处理(O:-)。不过我和天文学家一起工作。让我问一下……(仔细想想:不,那帮不了什么忙)。我得到的答案是:“为什么要去除云层?它们很好!”提示:不要问有眼睛的天文学家要拍照……也许你可以尝试一些技术?这样你就可以得到星星,然后把它们放在其中一个镜框上。更多的参与,但…我只是尝试了一下,它看起来更像现代艺术现在xD
>>> np.max([a, b], axis=0)
array([6, 5, 4, 4, 5, 6])