當前位置:
首頁 > 科技 > 如何拍出好星野

如何拍出好星野

周日 · 天文周曆 |周二 · 牧夫專欄| 周三 · 太空探索


周四 · 觀測指南 | 周五 · 天文視頻



如何拍出好星野







作者:章佳傑


編排:馮中



在上一篇文章(《星野攝影降噪(1):基礎知識》)中,我大致介紹了星野攝影中相機雜訊的一些特性,以及減少雜訊的大致手段。其中,拍攝多張圖片進行疊加降噪,是一種非常有效的降噪手段。


現在網上也已經有很多介紹疊加降噪的文章了,我這篇文章要說的和別人有什麼不同呢?其實我自己在拍攝實踐的過程中發現,網上的文章大多使用 Photoshop 軟體自帶的自動對齊功能,這個功能對普通場景的照片是挺好用的,不過並不太適合星野攝影的場景,很多情況下會對齊失敗。一旦失敗,往往需要手動對圖層進行變形對齊,費時費力不說,精度也很差。為此,我自己上手擼代碼,寫了一些處理圖片的小程序,來幫助對齊星空的圖片。

在本篇文章中,我會介紹在 Photoshop 里怎樣進行疊加降噪,還會詳細地介紹我自己寫程序處理對齊星野圖片的思路。


1


使用 Photoshop 疊加


要疊加降噪,首先要對圖片進行對齊。這個「對齊」的操作,在這裡對兩個對象需要分別對待:天空和地面。當使用三腳架拍攝多張圖片的時候,地面的對齊就比較簡單,甚至不用做特別的設置,直接疊加就行;但對於天空部分,就比較麻煩,需要仔細處理。

對一張照片來說,怎麼叫對齊了呢?我們可以很直接地提出一個標準:對照片上的「特徵點」,比如明顯的紋理、明顯的明暗交界、物體明顯的邊緣、拐角等,如果畫面里的所有「特徵點」在前後多張照片中都具有相同的位置坐標,那就是對齊了。直觀上說,就是把多張照片「摞起來」,「透視」地看下去,所有的特徵點都能重合上。


對一般場景的照片來說,特徵點比較豐富,軟體自動識別比較容易,這時 Photoshop 的自動對齊功能是很好用的。在 Photoshop 菜單中選擇「文件」-「腳本」-「將文件載入堆棧」(我使用的是英文系統,菜單名字是我按照記憶寫的,可能與實際中文版軟體略有出入),

如何拍出好星野



在彈出的對話框里選擇需要疊加的若干張圖片,同時勾選「嘗試自動對齊」和「創建智能對象」這兩個選項,

如何拍出好星野



點擊確定,Photoshop 就開始自動載入所有圖片,並且會分析圖片上的「特徵點」,根據特徵點嘗試對圖片進行對齊,之後就會創建一個智能對象的圖層。如果你沒有看到一個單獨的智能對象圖層,而是出現了多個圖層,那是因為在載入圖片的對話框中漏勾選了「創建智能對象」的選項。此時除了重走以上流程載入圖片,還可以把所有圖層選中,右鍵單擊,在菜單中選擇「轉換為智能對象」,把所有圖層一起轉換為一個智能對象。

如何拍出好星野



轉換為智能對象之後,在菜單中選擇「圖層」-「智能對象」-「堆棧模式」-「平均值」,就可以得到疊加之後降噪的圖片了。

如何拍出好星野



看起來一切都很順利,然而仔細看我們發現,Photoshop 自動對齊的結果,僅僅對齊了地面景物,天空的部分仍然是沒有對齊的。在這個過程中我們沒辦法控制讓軟體按照地景對齊還是按照星空對齊。在這個例子中地面景物佔據畫面很大一部分,對齊過程也比較順利,如果拍攝的畫面中大部分是星空,則很可能會對齊失敗。因為對星空來說,很難讓軟體自動識別。隨便取一塊局部的星空,上面密密麻麻布滿了大大小小的星點,看起來和另一塊隨便選的星空局部差不多。換句話說,星空缺少「特徵」,這也是為什麼Photoshop的自動對齊功能在面對星空的場景時,往往無能為力。


(此處是不是該有高能預警?因為接下來的部分,可能要進入另一個世界了)


2


提取星點


如果是人手動操作對齊,星空最明顯的特徵就是一個個的星點。為了讓電腦自動計算,我們也需要找出星空中的一個個星點,並且進一步地,我們需要識別出這些星點的對應關係,確定出前後幾張畫面中哪些星點實際上是同一顆星,然後以此為「特徵點」,計算不同照片之間的變換關係。


那怎麼才算是一個星點呢?


一個最樸素直觀的想法就是,把亮度大於某個值的像素作為星點。這個想法有一個很大的問題,照片中,即使是天空部分,亮度也是不均勻的,有來自地面的光污染,有銀河,有氣輝。如果簡單按照亮度一刀切,要麼會遺漏大量暗弱的星點,要麼會把銀河當做一個巨大的星點。

如何拍出好星野



上圖就是直接按照亮度進行劃分的,可以看到,在銀河中心部分,以及月亮周圍,由於本身背景的亮度就比較亮,在這個樸素的演算法下直接被當做兩團巨大的「星點」。此外,這個方法也不夠穩定,多張畫面之間如果曝光有變化,比如有薄雲、氣輝等造成畫面亮度的細微變化,這個方法識別出來的星點就會受到很大的影響,這對後續的星點匹配是不利的。


有沒有更好的辦法呢?


在之前樸素想法的基礎上,我們更深入地想想看,不是看絕對亮度,而是看相對於周圍背景的亮度。如果一個很小的區域,比它周圍的背景像素都要亮,就把它當做一個星點。這個判斷條件就比較好了,即使是銀河這樣的明亮區域,其中的星點也符合這樣的規律。


怎麼做呢?既然是相對背景,那直接減去背景不就行了?背景是什麼?背景就是亮度變化比較緩慢的、大尺度的區域。和畫面尺度有關,圖像處理中有個很好用的工具叫「小波變換」,可以把一張圖片在不同的尺度上進行分解。大尺度的成分對應畫面的大塊面的明暗,小尺度的成分對應畫面的細節。我們可以把最大尺度上的分解成分作為近似的背景,減掉它,然後根據相對的亮度判斷是否是一個星點。

如何拍出好星野



不妨假設畫面中的雜訊是獨立同分布的(事實上這一點是幾乎成立的,在暗環境下佔主導地位的隨機雜訊和固定雜訊,都近似滿足這一條件),那麼根據統計學知識,n 張畫面疊加後,信噪比變為原來的倍。

如何拍出好星野



可以看到這次的劃分結果就好多了,這次篩選出來的區域,都是一些畫面細節的部分,比如星點、比如山峰邊緣等,並且不會受到畫面整體亮度的影響。


這種方法對星點的判斷更加穩定可靠,在後續的程序處理中,只要再加上一點簡單的判斷,就可以把真正的星點給選出來了。比如判斷篩選出來的區域面積大小,星點都是比較小的,太大的區域排除;比如判斷篩選出來的區域長寬比,星點一般接近圓形,長寬比太大的區域排除掉。


3


匹配星點


提取了星點之後,就需要匹配星點,也就是判斷多張照片中的哪幾個星點實際上是同一顆星。人類要完成這個任務並不困難,比如我一眼看到了畫面里有北斗七星大勺子,那麼我可以輕易地在前後畫面中把大勺子的七顆星分別標記出來對應好。

如何拍出好星野



但是這個過程怎麼讓計算機自動地做呢?我注意到人在識別星點的時候,會去識別某種「模式」,一般來說是星點與它周圍星點組成的形狀特徵,比如北斗七星的「大勺子」。通過星點與其「鄰居」之間的連線關係,匹配星點構成的圖形模式,進而對星點進行確認。


受此啟發,我設計了利用圖形模式進行匹配的演算法。具體來說,針對每一顆星點,挑選出最近的 k個鄰居,每一個鄰居都可以用兩個參量來描述其相對於主星點的關係:角度θ和距離 r,其中角度從最亮的那個鄰居開始逆時針度量。選擇以最亮的鄰居為參考點開始計算角度,是為了避免畫面旋轉帶來的不確定性。由於星點都可以看做分布於一個半徑無限大的球面上,因此這裡的角度和距離都是用球面三角來表示,參見下圖。

如何拍出好星野



對每一個星點,其 k個鄰居總共有 2k個參量,這 2k個參量共同描述了這個星點與周圍鄰居之間的幾何關係。從前面的構造過程可以看出,這種描述是旋轉平移不變的。一堆星點,無論經過怎樣的平移旋轉,這種局部的幾何關係是保持不變的。為方便起見,這裡把每一個星點對應的這2k個參量叫做這個星點的「特徵」。畫在圖上,角度作為橫坐標,距離作為縱坐標,就表現為一系列高低起伏的「譜線」,就像光譜一樣,這個特徵圖,可以算做這顆星點的「特徵譜」。

如何拍出好星野



如果兩張圖中某兩個星點實際上對應同一顆星,那麼這兩個星點與周圍鄰居的幾何關係是相似的,他們各自的「特徵譜」應該是很接近的。至於衡量兩個「特徵譜」之間的相似程度,在數學上有很多方便簡單的方法,這裡就不深入介紹了。

如何拍出好星野



上圖是對前後兩張圖匹配星點的結果,畫出了前後圖片中同一顆星點的相對位移。為了顯示清楚,這裡把匹配星點的位移放大了 10 倍畫出來。


4


射影變換


由於地球自轉,星空也會有東升西落的運動。直觀想像,前後幾張照片中,似乎通過平移和旋轉,就能將星空完全重疊,然而果真如此嗎?對星空熟悉的人一定會說不是。比如通過長時間曝光得到的星軌我們可以看出星星在畫面里移動的軌跡,可以看到一般情況下這些軌跡並不是同心圓(事實上是一系列的圓錐曲線),這有力地說明了前後幾張圖片之間,並不是平移加旋轉的變換關係。經過數學分析我們知道,這個變換是射影變換(Projective Transformation)。

如何拍出好星野



如果直接按照旋轉加平移的方式進行對齊,在鏡頭視角小的情況下誤差較小,對於廣角鏡頭誤差就大了(實際上對於拍攝深空天體的情況,由於視角非常小,通常用於處理深空拍攝的軟體都是直接用旋轉加平移的方法進行對齊的,比如著名的深空拍攝處理軟體DeepSkyStacker)。鏡頭越廣,誤差就越大。很多人會誤認為這是鏡頭畸變造成的,這是完全誤解了。

如何拍出好星野



上圖是一個例子,來自我的朋友蒼老濕,可以看到,在畫面中心部分,星點非常細膩,到畫面邊緣可以明顯看到星點拖成了條狀,這就是進行了旋轉平移,而沒有採用真正的射影變換造成的。如果按照射影變換對圖片進行對齊,就不會出現廣角鏡頭邊緣無法完全對齊的情況。


假設第一張畫面中某星點的坐標是 (x,y),第二張畫面中對應星點的坐標是 (x′,y′),那麼這兩個坐標之間滿足以下關係,

如何拍出好星野



或者用齊次坐標寫成矩陣形式,

如何拍出好星野



這就是射影變換的數學表達,其中各個 m 就是需要計算的射影變換的參數。利用上面提到的技術識別出星點並匹配成功之後,就可以利用這些星點的位置關係來計算兩張圖片之間的射影變換參數了。對射影變換來說,一般取 4 個對應點就可以計算參數了。一般是通過隨機選取 4 個點計算出一個初始參數,然後再將所有匹配的星點坐標放進來對參數進行優化,以便得到相對整個畫面來說最優的變換參數。具體的計算過程可以參見《Multiple View Geometry in Computer Vision》一書的第四章《Estimation – 2D Projective Transformations》

如何拍出好星野



5


總結


1. 星野攝影圖片,對於地面部分,按照通常的方法使用 Photoshop 進行疊加,一般而言軟體會根據地景的特徵進行自動匹配對齊。這種自動對齊的功能卻難以適用於星空部分。


2. 對星空部分,採用小波變換的方法,提取畫面中的星點。


3. 利用星點與周圍鄰居星點之間的幾何關係,構造屬於一個星點的「特徵」,不隨平移旋轉而改變,可以用於匹配不同畫面中的星點。


4. 根據星點匹配的結果,計算畫面之間射影變換的參數,據此對畫面進行變換對齊。


5. 綜合以上步驟,就可以利用計算機程序,自動將星野攝影圖片按照星空進行對齊疊加了。再加上使用 Photoshop 自動對齊的地景部分,就可以得到一張天空和地景都得到降噪的高畫質圖片了。


責任編輯:馮中


牧夫新媒體編輯部


『天文濕刻』 牧夫出品


微信號:astronomycn

如何拍出好星野



垃圾回收從火箭開始


via Google


打賞是美德


打完賞記得加牧夫君好友:aimufu


謝謝閱讀

您的贊是小編持續努力的最大動力,動動手指贊一下吧!


本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 牧夫天文論壇 的精彩文章:

到銀河系中心去旅行
綠色彗星正在近距離飛掠地球
氣泡星雲深空吐艷
黑洞撕裂恆星 視頻
組成海王星的物質

TAG:牧夫天文論壇 |

您可能感興趣

生意好到了倒閉!粉絲聖地巡禮,星野源父母咖啡店為何卻關門了?
星野源特別節目《和源媽媽一起》出場嘉賓公開!
七夕過了,快說,愛我還是愛星野
星野源出演新劇《海灘》,還是當初的那個人夫嗎?
不止星野源,這些樸素眼鏡男都蘇到爆炸
星野源:《逃跑可恥》大熱後還是做自己
東靈星野——我們還在路上
現實也不放過?星野源最喜歡新垣結衣那樣的女孩
紅白綵排:星野源邀請現場及電視前觀眾一起跳戀愛舞
星野源已經徹底被攻陷,星野源廣播節目中表示自己每天聽《萌獸之友》 OP 幾十遍
不只是星野源:日本眼鏡男爆紅是為何
星野源拍日清泡麵廣告 狐狸精不是新垣結衣差評
星野源以圓框眼鏡扮相出席主演動畫電影試影會
【來撩木姐】星野遙
在水之教堂婚禮,又被星野圈了粉
星野源節目中男扮女裝,畫風詭異堪比「慎吾媽媽」!
在天文台拍攝星野是什麼樣的感受
《逃避雖可恥但有用》星野源得獎,新垣結衣驚喜登場
復活的變態——星野源