先說結論
開啟圖片堆疊,把整串連拍放進去,然後按你想甩掉什麼來挑手法:
- 雜訊,而且什麼都沒動過 | 平均值。
- 雜訊,但有東西動過 | Sigma 裁剪。
- 人、車、飛機 | 中位數。
- 想變成星軌的暗夜空 | 最亮。
- 景深淺得可憐的微距 | 景深合成。
相機是端在手裡的,對齊就留著;架在三腳架上的,就關掉。RAW 檔案可以直接放進去,不用先衝。
下面所有內容,都在說那五行為什麼是那五行。
為什麼一串幀比一張帶的東西多
光線不好時拍的照片,是畫面加上雜訊,而雜訊每一次都不一樣。堆疊能成立,靠的正是最後這半句。同一個場景拍十六次,畫面十六張都一樣,雜訊卻不一樣,所以取平均值就留下了畫面,抵消了大部分雜訊。
改善的幅度是幀數的平方根:四幀把雜訊減半,十六幀減到四分之一,一百幀減到十分之一。這條曲線待著很難受,因為從十六幀走到六十四幀才能再改善同樣多,而拍攝量是四倍。幾乎所有實際的堆疊都落在八到三十幀之間,原因就在這裡。
還有第二個更安靜的好處。十六張八位的幀取平均,得到的層次確實比其中任何一張都細,因為正是那個讓每一幀四捨五入得不一樣的雜訊,才讓平均值能落在兩級之間。堆疊一組有雜訊的照片,不只是去掉雜訊,還把單張裡被量化掉的層次找了回來。
決定手法的那個問題
問題不是「我想留下什麼」,而是各幀之間有什麼是不一樣的。別的都從這裡推出來。
什麼都沒動:平均值
就是普通的平均。對一組幀與幀之間只差雜訊的照片,這是能拿到的最有效的消噪方式,也是最容易被毀掉的那一種:只要有一幀裡飛進來一隻鳥,整個堆疊上就多了一隻淡淡的鳥。平均值對一個跟別人不合的數值沒有任何看法,它只是照單收進去。
有東西橫穿過畫面:中位數
把一個人來人往的廣場拍的十幾張對齊,盯住其中一個畫素。多數張裡它是地磚,一兩張裡它是某人的外套。把這十幾個值排一下取中間那個,得到的是地磚,因為外套從來就不是多數。
每個畫素都這麼來一遍,廣場就空了。所有那些「把遊客從旅行照裡去掉」的文章,背後就是這個把戲,而它需要的不過是一串連拍和一點耐心。它只要求一件事:場景裡沒有哪一處被佔住的時間超過一半。在你那十二幀裡站著不動了八幀的人,在那些畫素上就是多數,中位數會把他留下。
兩樣都要:Sigma 裁剪
中位數是拿丟掉大部分資訊換來的穩健:每個畫素上十二個值裡丟掉十一個,所以它消噪的能力遠不如同一組照片的平均值。
Sigma 裁剪是那個折中,而且對任何一組真實拍攝的照片,它通常才是對的預設。它把每個畫素在所有幀上看一遍,算出它通常是什麼、又能晃多少,然後只對跟這個說法一致的數值取平均。橫穿過一幀的那輛車在那些畫素上被排除掉,而其餘每一幀在所有地方照樣算數。於是你既有中位數那種對動過的東西的免疫,又有平均值大部分的消噪能力。
閾值按標準差算,兩個是常用的起點。調低會丟得更多,也會連著那輛車一起開始丟掉真的細節。
只有亮的東西要緊:最亮
留下每個畫素出現過的最亮值。把夜空拍成兩百張三十秒的曝光,再用最亮合起來,每顆星都會在結果上畫出自己那道弧,也就是一條星軌,由一堆單張從沒過曝的短曝光拼出來。同一個手法能把一場煙花從它自己爆開的那些幀裡重新拼起來,也能把一個人舉著手電在暗屋裡走一圈變成一幅光繪。
它的反面是最暗,是這一對裡安靜的那個:一個畫素只有在每一幀裡都亮才會保持亮,所以窗戶上的反光、開過去的車燈、被閃光燈打亮的雨滴,全都會消失。
被攝體比景深厚:景深合成
f/8 的微距大概只有一毫米是清楚的,對一隻蟲子來說遠遠不夠。辦法是沿著對焦環拍二十張,再從每一張裡只留下它自己清楚的那一部分。工具會量每個畫素跟鄰居差多少,在邊緣上很大,在虛化處接近零,然後取贏的那一個。
這一種比別的都更需要三腳架,因為用手擰對焦環會帶動相機,而一張從稍遠一點拍到的幀,並不是同一個畫面換了個焦點。
對齊各幀
堆疊是逐畫素的算術,所以它預設某個畫素在每一幀裡都是場景的同一處。手持的時候並不是:一串連拍會漂開幾十個畫素,把那樣的東西平均起來,出來的是一團糊而不是一張乾淨的畫面。第一次堆疊讓人失望,頭號原因就是這個。
所以這些幀會先拿其中一張當基準量一遍,再挪回各自的位置,精度到一個畫素的幾分之一。有三檔設定:
- 只平移適合幾乎所有手持的情形,它糾正的是漂移和抖動。
- 平移、旋轉、縮放用在你還稍微轉過身、或者變焦悄悄挪過的那一組上。每幀多花一次測量,而如果這些幀本來就是正的,那就一點不多花。
- 不對齊用在鎖死的三腳架或者一段間隔拍攝上,那時它們本來就齊了,量一遍純屬浪費時間。
任何對齊都修不好的,是動了的被攝體而不是動了的相機,也修不好往左挪了一步再拍的那一張。橫著挪會改變近處的東西相對遠處的東西挪了多少,而沒有哪一個統一的修正能同時說清這兩者。原地轉身沒問題,走動就不行。
RAW 檔案在這裡是什麼位置
CR2、CR3、NEF、ARW、DNG、RAF、RW2、ORF 這些都可以直接拖進去,而它們身上發生了什麼值得說準確,因為那不是 RAW 轉換器做的事。
每個 RAW 檔案裡本來就有一張相機在按下快門那一刻渲染好的原尺寸 JPEG。那就是相機背後螢幕上顯示給你看的那張,也是你的作業系統拿來當縮圖畫的那張。堆疊工具找到那張圖,用的就是它,它不去解碼感測器資料。
由此有兩個結果,一個是好處,一個值得知道:
- 它快。找那張預覽圖意味著讀幾十 KB 的目錄再取其中一段,所以一張 60 MB 的幀開起來跟 JPEG 差不多快。RAW 轉換器處理一張的工夫,這裡能開二十張。頁面會一直告訴你它實際只讀了你的檔案多少。
- 那是相機的解釋,不是你的。每通道八位,帶著相機當時設定的白平衡和照片風格,而不是轉換器會給你的那十二位或者十四位線性感測器資料。
對消雜訊、星軌、去路人和景深合成來說,這筆交易幾乎總是划算的:預覽圖是全解析度的,本來也就是你會拿到的那張 JPEG。要是你在把暗部往上狠拉,或者是在為天文攝影堆疊、而最後那一點動態範圍恰恰是全部意義所在,那就先在 RAW 轉換器裡衝一遍,再把它給出的 TIFF 或者 JPEG 拿來堆。那些也是照樣放進去。
跑一次要花多少
值得知道,因為這是一次八秒和一次兩分鐘的分別。
七種手法裡有六種只需要記住一樣東西。一個滾動的最大值不在乎它已經看過哪些幀,一個滾動的合計也不在乎,所以這些手法把每一幀恰好讀一次,一百幀和兩幀佔的記憶體一樣多。
中位數沒法這麼做,因為一組數的中間那個值,不把整組拿全就無從知道。二十張 2400 萬畫素同時抱著,差不多是 1.4 GB 的畫素,沒有哪個瀏覽器給得起。於是圖被切成橫條,一條一條地堆,正確,但更慢,因為每條都要把這些幀重讀一遍。
工具在你按下按鈕之前就把這些全算好並告訴你:結果會有多大、大概要多少記憶體、你的幀會被解碼多少次。它要是說這一次會分條跑,把工作解析度降一檔,記憶體就變成四分之一,幾乎總能變回一遍跑完。而且你要是本來就是為了消雜訊才堆的,一半解析度看著反正也比全尺寸乾淨。
為堆疊而拍
一次堆疊的品質,大半在任何軟體看到它之前就已經定下來了。
- 比你以為需要的多拍幾張。那條平方根曲線前松後緊:從四張走到九張,看得出的變化比從二十張走到四十張還大。
- 別在幀與幀之間改曝光。堆疊預設這些幀是同一個場景、同一個亮度。把曝光鎖住,否則這個工具就是在給兩張不同的畫面取平均。
- 要去人,就在幀與幀之間等一等。兩秒內拍完的一串連拍,會把同一個人釘在每一幀的同一處,中位數就會把他留下。隔幾秒拍十張,比連拍五十張管用得多。
- 要星軌,就把間隔壓短。最亮畫出來的就是這些幀記錄下的東西,所以兩次曝光之間的停頓,會在每一條軌跡上變成一段看得見的斷口。
這裡沒有一樣東西離開過你的機器
二十個 RAW 幀差不多是一個 G 的照片,為了讓人算一次平均值就把這麼多交給一個網站,實在是多了。圖片堆疊從你自己的硬碟讀檔案,在你自己的瀏覽器裡做算術。沒有上傳這一步,沒有帳號,也沒有排隊。而這個說法你可以像核實任何人的說法那樣核實:在它跑的時候開啟瀏覽器的網路面板,或者乾脆斷網再堆一次。
與之相關的那個問題,也就是對任何一個工具,怎麼判斷把檔案交給它到底有沒有必要,有它自己的一篇指南。