2019年1月23日

用python做天空定點攝影的組圖

好久沒來寫Blog了,感覺都長了好多蜘蛛網呢。


前一陣子其實一直在寫程式畫圖,畫什麼圖呢?畫一個我多年前就想完成的作品。
2011年的時候看到日本的定點觀測計劃,覺得很有意思,居然可以把一整年的攝影機拍攝的圖片整合在一張圖上。後來我也小小做了一些嘗試,但其實都沒有延續下去做。

一直到2017年用樹莓派搭建定點攝影的拍攝主機motionEyeOS,我終於開始弄了定點攝影了。

不過拍是一回事,整理又是另一件事。我是把拍攝的圖片都上傳到雲端硬碟,現在的問題反倒是該怎麼把圖片下載回來?這可不是連到雲端硬碟按個右鍵下載就可以辦到的,因為啊,那樣下載時,都得先在雲端壓縮後再下載回來。可是啊,我下載的檔案可是相當巨大的呀。

有多大,來算算看吧!
當初設定每30秒拍攝一張,如此一天就有
2x60x24 = 2880張照片
一年就有 2880x365 =1051200張照片
而每張照片就當只有100 kB吧,一年的照片也要100GB之多啊,根本沒辦法壓縮下載呢。

從Google雲端硬碟下載照片
怎麼辦呢?一開始我只好去找了window筆電,用雲端硬碟的同步功能,看能不能下載那好幾百G的圖片。不過問題在於光是遠端準備下載就花了好幾天的時間,然後下載下來的時候,又發現筆電的硬碟根本不夠大,而且就算下載下來了,我還得再搬移檔案,把檔案放在我慣用的電腦用程式處理,這麼大也是搬不動啊。

於是我就想乾脆從頭設定一下,看看用雲端硬碟來同步時可不可以同步到自己的行動硬碟,結果找不到這樣的功能啊。唉啊啊

這可怎麼辦呢?只好找別的方式來下載了啊。還好還好,找到了一個用GO語言寫的命令列工具Skicka,在windows或是在linux上都能執行呢
https://github.com/google/skicka

寫得簡單,不過安裝有點煩,得先安裝GO語言,然後下載skicka,再取得Google硬碟的使用權限。弄好了之後,下載照片就很簡單了。

它不像Google硬碟的官方同步軟體那樣下載,如果是官方的,都是在雲端壓縮後再下載,但是Skicka是直接單個檔案接著傳輸,所以你可以隨時從命令列就看到下載的進度。一百多G的資料我可是下載了將近一週才下完啊,因為一開始的前幾天都忘記關掉休眠功能,以致下載幾分鐘它電腦就睡著了,每天都才下載一點點。

總之,經過千辛萬苦終於下載了定點拍攝的照片呢,但是啊真正的影像處理還沒開始哪!

用Python做組圖
不過啊,有了素材,後面的處理其實就不是太大問題了。

來說說程式的邏輯是什麼:
1.把每一年每分鐘的每一張照片的同一位置,複製一份下來(例如下圖的小紅框,紅框太小了,小到看起來就是一個紅方塊)
2.開一張空白圖片當作底圖,把上面複製下的天空小方塊,依照順序一個一個貼在地圖上
3.加上時間日期等資訊,結束




這就是花了一年多時間,終於完成的圖片呢,就這樣而已。好像沒有很珍貴的感覺耶,怎麼會這樣。

好啦,我還是要解釋一下這個圖在看什麼東西啦,整張圖都是不同日期時間的同一小塊天空組成的。由上而下是從凌晨0點到23點59分,由左至右是從2017年3月多開始,延續一整年的拍攝。

最明顯能看到的當然就是白色的部份如波浪一般波動,細看一下,也就是三月多大約六點多天亮。一直到六月多的夏至,那是最早天亮的時間,然後波浪就會開始往下走,冬天的時候,天空可是到六點多才會天亮呢。

除了看天亮天黑外,會看到有些週期性的白色色塊,像是七月多、八月多那些垂直的白條,或是每天三點多會有水平的白色線,那些時間是因為「沒有照片」,所以就會白白的。為什麼會沒有照片?可能是主機故障、網路重置...等各種原因了。

再來還可以看什麼呢?我覺得看天空的顏色也很有意思呢,看得出來什麼時候比較會有藍色天空呢?看起來似乎是秋天呢!



另外啊,我也特別來特寫一下天亮時間,照理說就時間序列來看,每天的天亮時間應該是有序的越來越早或是越來越晚。不過實際拍攝的影像卻看到細部的天亮時間呈現不規則的樣子,這當然不是說天真的隨便亮,其實天亮不亮跟當天的天氣、雲層還是有很大的關係,畢竟還是用一般網路攝影機拍攝的,所以天氣影響一部分的亮度呢





看了天空之後,再來看看河床上的植被,看看一年下來這植被的顏色變化是怎麼樣呢?





結果就是這樣呢!其實我覺得看植被,應該是不用時間資訊,只要日期資訊就好了。意思就是從早到晚的植物顏色,並沒有什麼意義,應該是看不同季節裡植被的顏色就好 ,所以下圖就橫著看就好,比方說都看中午十二點的顏色。

也蠻有趣的喔,在夏季七八月的時候,植被是比較綠的,而到了秋冬的時候,植被就變得黃褐色了。





最後就是來說明一下程式是怎麼寫的,這其實是為了自己。因為我覺得過一陣子我再看這些程式碼,可能我自己就會一臉茫然了。



程式的部份,我就放Github