簡體   English   中英

星跡圖像在python中的堆疊

[英]Star trails image stacking in python

我正在嘗試用python制作一些strar追蹤圖片,而且似乎缺少對圖像庫工作原理的一些基本了解。 因為在我看來,將所有框架加在一起並除以框架數應該很好。

但是,這給出了一張全黑的圖片,而僅添加它們便給出了下面的圖片。

碼:

import Image
import numpy as num

data = num.genfromtxt('list.txt',dtype='str')

pic = 0

for i in range(len(data)):
    im1=Image.open(data[i])
    pic1=num.array(im1)
    pic = pic + pic1 
    print(i)

pic = pic/2

im = Image.fromarray(pic)
im.save("pytrail.jpg")
print(i/len(data))

結果: 在此處輸入圖片說明

現在,如果我從網上獲取一些代碼:

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")

我得到這個: 在此處輸入圖片說明

但是我不確定這有什么不同。

打火機

ImageChops.lighter(image1,image2)⇒圖像

逐像素比較兩個圖像,並返回包含較亮值的新圖像。

 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將僅在您注冊星星的像素中返回不同的值,從而為您提供線索。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM