abox.tools

語言: 繁體中文

怎麼堆疊照片來壓雜訊,或者把人去掉

一串連拍帶著的資訊,比其中任何一張都多。取平均值能抵消雜訊;取每個畫素的中間那個值,則會抹掉一切只在一部分時間裡出現過的東西。你要哪一個,完全取決於動的是什麼。

開啟圖片堆疊 二十張變一張,不用傳二十次,也不用 RAW 轉換器。

以 Markdown 檢視

先說結論

開啟圖片堆疊,把整串連拍放進去,然後按你想甩掉什麼來挑手法:

相機是端在手裡的,對齊就留著;架在三腳架上的,就關掉。RAW 檔案可以直接放進去,不用先衝。

下面所有內容,都在說那五行為什麼是那五行。

為什麼一串幀比一張帶的東西多

光線不好時拍的照片,是畫面加上雜訊,而雜訊每一次都不一樣。堆疊能成立,靠的正是最後這半句。同一個場景拍十六次,畫面十六張都一樣,雜訊卻不一樣,所以取平均值就留下了畫面,抵消了大部分雜訊。

改善的幅度是幀數的平方根:四幀把雜訊減半,十六幀減到四分之一,一百幀減到十分之一。這條曲線待著很難受,因為從十六幀走到六十四幀才能再改善同樣多,而拍攝量是四倍。幾乎所有實際的堆疊都落在八到三十幀之間,原因就在這裡。

還有第二個更安靜的好處。十六張八位的幀取平均,得到的層次確實比其中任何一張都細,因為正是那個讓每一幀四捨五入得不一樣的雜訊,才讓平均值能落在兩級之間。堆疊一組有雜訊的照片,不只是去掉雜訊,還把單張裡被量化掉的層次找了回來。

決定手法的那個問題

問題不是「我想留下什麼」,而是各幀之間有什麼是不一樣的。別的都從這裡推出來。

什麼都沒動:平均值

就是普通的平均。對一組幀與幀之間只差雜訊的照片,這是能拿到的最有效的消噪方式,也是最容易被毀掉的那一種:只要有一幀裡飛進來一隻鳥,整個堆疊上就多了一隻淡淡的鳥。平均值對一個跟別人不合的數值沒有任何看法,它只是照單收進去。

有東西橫穿過畫面:中位數

把一個人來人往的廣場拍的十幾張對齊,盯住其中一個畫素。多數張裡它是地磚,一兩張裡它是某人的外套。把這十幾個值排一下取中間那個,得到的是地磚,因為外套從來就不是多數。

每個畫素都這麼來一遍,廣場就空了。所有那些「把遊客從旅行照裡去掉」的文章,背後就是這個把戲,而它需要的不過是一串連拍和一點耐心。它只要求一件事:場景裡沒有哪一處被佔住的時間超過一半。在你那十二幀裡站著不動了八幀的人,在那些畫素上就是多數,中位數會把他留下。

兩樣都要:Sigma 裁剪

中位數是拿丟掉大部分資訊換來的穩健:每個畫素上十二個值裡丟掉十一個,所以它消噪的能力遠不如同一組照片的平均值。

Sigma 裁剪是那個折中,而且對任何一組真實拍攝的照片,它通常才是對的預設。它把每個畫素在所有幀上看一遍,算出它通常是什麼、又能晃多少,然後只對跟這個說法一致的數值取平均。橫穿過一幀的那輛車在那些畫素上被排除掉,而其餘每一幀在所有地方照樣算數。於是你既有中位數那種對動過的東西的免疫,又有平均值大部分的消噪能力。

閾值按標準差算,兩個是常用的起點。調低會丟得更多,也會連著那輛車一起開始丟掉真的細節。

只有亮的東西要緊:最亮

留下每個畫素出現過的最亮值。把夜空拍成兩百張三十秒的曝光,再用最亮合起來,每顆星都會在結果上畫出自己那道弧,也就是一條星軌,由一堆單張從沒過曝的短曝光拼出來。同一個手法能把一場煙花從它自己爆開的那些幀裡重新拼起來,也能把一個人舉著手電在暗屋裡走一圈變成一幅光繪。

它的反面是最暗,是這一對裡安靜的那個:一個畫素只有在每一幀裡都亮才會保持亮,所以窗戶上的反光、開過去的車燈、被閃光燈打亮的雨滴,全都會消失。

被攝體比景深厚:景深合成

f/8 的微距大概只有一毫米是清楚的,對一隻蟲子來說遠遠不夠。辦法是沿著對焦環拍二十張,再從每一張裡只留下它自己清楚的那一部分。工具會量每個畫素跟鄰居差多少,在邊緣上很大,在虛化處接近零,然後取贏的那一個。

這一種比別的都更需要三腳架,因為用手擰對焦環會帶動相機,而一張從稍遠一點拍到的幀,並不是同一個畫面換了個焦點。

模式列表:平均、中位數、最亮、最暗,下面的計畫給出輸出大小、所需記憶體,以及每個檔案要讀多少。
模式就是這一節要問的問題。下面的計畫,是工具在開跑之前先把這趟的代價說出來。

對齊各幀

堆疊是逐畫素的算術,所以它預設某個畫素在每一幀裡都是場景的同一處。手持的時候並不是:一串連拍會漂開幾十個畫素,把那樣的東西平均起來,出來的是一團糊而不是一張乾淨的畫面。第一次堆疊讓人失望,頭號原因就是這個。

所以這些幀會先拿其中一張當基準量一遍,再挪回各自的位置,精度到一個畫素的幾分之一。有三檔設定:

任何對齊都修不好的,是動了的被攝體而不是動了的相機,也修不好往左挪了一步再拍的那一張。橫著挪會改變近處的東西相對遠處的東西挪了多少,而沒有哪一個統一的修正能同時說清這兩者。原地轉身沒問題,走動就不行。

結果:疊加後的畫面,旁邊一行說明每一幀為了對齊第一幀被移動了多少。
對齊的數字值得一讀。手持連拍每一幀會偏幾個畫素,而對齊做的正是悄悄把這點偏移撤銷。

RAW 檔案在這裡是什麼位置

CR2、CR3、NEF、ARW、DNG、RAF、RW2、ORF 這些都可以直接拖進去,而它們身上發生了什麼值得說準確,因為那不是 RAW 轉換器做的事。

每個 RAW 檔案裡本來就有一張相機在按下快門那一刻渲染好的原尺寸 JPEG。那就是相機背後螢幕上顯示給你看的那張,也是你的作業系統拿來當縮圖畫的那張。堆疊工具找到那張圖,用的就是它,它不去解碼感測器資料。

由此有兩個結果,一個是好處,一個值得知道:

對消雜訊、星軌、去路人和景深合成來說,這筆交易幾乎總是划算的:預覽圖是全解析度的,本來也就是你會拿到的那張 JPEG。要是你在把暗部往上狠拉,或者是在為天文攝影堆疊、而最後那一點動態範圍恰恰是全部意義所在,那就先在 RAW 轉換器裡衝一遍,再把它給出的 TIFF 或者 JPEG 拿來堆。那些也是照樣放進去。

跑一次要花多少

值得知道,因為這是一次八秒和一次兩分鐘的分別。

七種手法裡有六種只需要記住一樣東西。一個滾動的最大值不在乎它已經看過哪些幀,一個滾動的合計也不在乎,所以這些手法把每一幀恰好讀一次,一百幀和兩幀佔的記憶體一樣多。

中位數沒法這麼做,因為一組數的中間那個值,不把整組拿全就無從知道。二十張 2400 萬畫素同時抱著,差不多是 1.4 GB 的畫素,沒有哪個瀏覽器給得起。於是圖被切成橫條,一條一條地堆,正確,但更慢,因為每條都要把這些幀重讀一遍。

工具在你按下按鈕之前就把這些全算好並告訴你:結果會有多大、大概要多少記憶體、你的幀會被解碼多少次。它要是說這一次會分條跑,把工作解析度降一檔,記憶體就變成四分之一,幾乎總能變回一遍跑完。而且你要是本來就是為了消雜訊才堆的,一半解析度看著反正也比全尺寸乾淨。

為堆疊而拍

一次堆疊的品質,大半在任何軟體看到它之前就已經定下來了。

這裡沒有一樣東西離開過你的機器

二十個 RAW 幀差不多是一個 G 的照片,為了讓人算一次平均值就把這麼多交給一個網站,實在是多了。圖片堆疊從你自己的硬碟讀檔案,在你自己的瀏覽器裡做算術。沒有上傳這一步,沒有帳號,也沒有排隊。而這個說法你可以像核實任何人的說法那樣核實:在它跑的時候開啟瀏覽器的網路面板,或者乾脆斷網再堆一次。

與之相關的那個問題,也就是對任何一個工具,怎麼判斷把檔案交給它到底有沒有必要,有它自己的一篇指南。