ARRI 的 LogC4 規格書(2025 年 1 月 23 日版)在曲線定義後面寫了一句話:這條曲線以 12 位元作為最低量化等級,10 位元的 LogC4 影像不應用於存檔或交換。這句話可以用算式檢驗,而不需要任何一台 ARRI 機器。我用規格書公開的式子重寫了曲線,先拿規格書附錄 D 的取樣列逐一核對,十個取樣點在 10 位元與 12 位元全範圍兩欄全部吻合,才往下算。結果有四條。第一,LogC4 每一檔分到的碼值數不是常數:10 位元下漸近值是 66.3,但在 18% 灰是 57.2,往暗部走會掉,到低於灰 8.7 檔時只剩 1 個碼值,12 位元則要到 10.7 檔。第二,量化誤差能不能被雜訊「蓋掉」有一條乾淨的門檻:雜訊標準差在碼值單位下要大於約 0.5 個 LSB,10 位元 LogC4 在 18% 灰處對應的電子數門檻是 2.7 萬,S-Log3 是 4.6 萬,12 位元則是 43.6 萬以上。第三,在我假設的感測器下(滿井 5 萬電子、18% 灰落在飽和下 3 檔、讀出雜訊 3 電子),10 位元 LogC4 的量化損失呈 U 型:灰附近 0.33 dB,最亮一檔升到 2.0 dB,最暗端(灰下 8 檔)1.1 dB;12 位元全程不超過 0.13 dB。第四,ARRI 那句警告的原因規格書沒有寫,我的計算只能說明它「在哪些條件下會痛」,不能說它就是 ARRI 的理由。昨天的卷簾與 IMX947留下的待驗(Z6 III 讀出 14.41 ms 對 8 到 10 ms 的衝突、SLVS-EC 編碼只讀到摘要)今天沒有新證據,維持未解,所以換題。
📖 學
一、規格書寫了什麼,我怎麼核對
LogC4 的場景參照曲線(規格書第 4.1 節)是分段的。令 為相對場景線性值(18% 灰為 0.18),則
常數為 、、。 時改用一條直線 ,而 是負值,所以所有正的場景值都落在對數段。117.45 這個數字規格書自己解釋了:它是 ,即灰的參考值對訊號最大值的比。硬體端的編碼曲線(第 3.1 節)多了一個隨曝光指數(EI)變化的增益 ,規格書強調曲線的「gamma」不隨 EI 改變,只有線性增益在動,所以解碼不需要知道拍攝時用了什麼 EI。
核對方式:規格書附錄 D 給了每 1/3 檔一列的碼值表,我取其中 10 列(灰下 6、3、1 檔,灰,灰上 1/3、1、2、5、8、11 檔),用上面的式子算 10 位元全範圍(乘 1023)與 12 位元全範圍(乘 4095)的碼值,四捨五入後與表中全部吻合,例如灰是 285 與 1140、灰上 11 檔是 1000 與 4002。硬體最大值 1.0 解碼為場景值 469.80(規格書附錄 B 也列了),,與附錄 C 最後一列的 11.35 檔一致。所以 LogC4 的 10 位元全範圍 1023 個碼值,要涵蓋灰上 11.35 檔。
S-Log3 的 Sony 原始文件我這次讀不到(下載回 Access Denied),式子取自 colour-science 的實作程式碼,該頁引用的是 Sony 的〈Technical Summary for S-Gamut3.Cine/S-Log3 and S-Gamut3/S-Log3〉。式子是
低於 0.01125 為一段直線,斜率由兩端點 95 與 171.2102946929 決定。我代入驗算: 得碼值 95.0, 得 420.0, 得 597.9。這些是 S-Log3 的常見參考點,與我的記憶相符,但出處是實作程式而不是 Sony 原文,請當成二手。10 位元最大碼值 1023 對應的場景值是 38.42,即灰上 7.74 檔(自算)。兩條曲線在同樣 1023 個碼值裡的取捨已經看得出來:LogC4 把亮部延伸到灰上 11.35 檔,S-Log3 只到 7.74 檔;從黑(95)到灰,LogC4 用掉 190 個碼值,S-Log3 用 325 個。
二、每一檔分到幾個碼值
對數編碼常被說成「每一檔分到一樣多的碼值」,這只在高訊號端近似成立。對上面的式子對「檔」()微分,可以得到解析式(自推,並用數值微分核對一致):
- LogC4:每檔碼值數 ,其中 是位元數。第二個因子在亮部趨近 1,漸近值是 10 位元 66.27、12 位元 265.3;在 (灰下 2.65 檔)時降為一半。
- S-Log3(10 位元):(x 在直線段以上才成立,即灰下 4 檔以上)。
| 相對 18% 灰 | LogC4 10 位元 | LogC4 12 位元 | S-Log3 10 位元 |
|---|---|---|---|
| −8 檔 | 1.59 | 6.35 | 3.30 |
| −6 檔 | 5.92 | 23.70 | 13.21 |
| −4 檔 | 18.68 | 74.76 | 47.24 |
| −2 檔 | 40.49 | 162.06 | 64.41 |
| 0(灰) | 57.18 | 228.87 | 74.58 |
| +2 檔 | 63.75 | 255.17 | 77.64 |
| +4 檔 | 65.63 | 262.72 | 78.45 |
| +6 檔 | 66.12 | 264.68 | 78.65 |
(單位:每檔碼值數,自算。)S-Log3 灰下 4 檔以下進入直線段,表中該欄是直線段的數值微分。
換成「相鄰碼值在亮度上差多少」:灰處 LogC4 10 位元每碼值差 ,S-Log3 10 位元差 0.93%,LogC4 12 位元差 0.30%。若有一片完全沒有雜訊的 1 檔漸層橫跨 1920 像素寬,LogC4 10 位元的色帶寬是 像素,S-Log3 是 25.7,LogC4 12 位元是 8.4(自算)。人眼對相鄰亮度差的門檻我沒有查證,常見說法在百分之一上下,這裡不拿它下結論。
暗部是另一回事。碼值數降到每檔 1 個的位置:LogC4 10 位元在灰下 8.68 檔,12 位元在 10.70 檔,S-Log3 10 位元在 10.45 檔(自算)。作為對照,我也算了 sRGB 在 8 位元下的每檔碼值數:顯示線性值 0.18 處 38.0,0.045 處(灰下 2 檔)21.3,0.0112 處(灰下 4 檔)12.0,0.0028 處(灰下 6 檔)6.4。這只是直接套 sRGB 曲線的下限,真實調色常加 S 曲線,中間調斜率比這大,所以螢幕端的步階比這個表更粗。
三、量化誤差什麼時候看不見:高斯抖動門檻
這一節是整篇的算式核心。取整(量化)一個帶高斯雜訊的訊號,平均誤差(偏差)對訊號在兩碼值之間的位置 (以 LSB 為單位,)是週期函數,第一諧波為
是進入量化器之前的雜訊標準差(以 LSB 計)。這來自高斯分佈特徵函數的傅立葉係數,是標準結果,我沒有查哪一本教科書,所以用蒙地卡羅驗證:每個 取 200 個 位置、各 40 萬個樣本,量出偏差的均方根,與預測值()比較(自算):
| (LSB) | 預測 RMS 偏差 | 模擬 RMS 偏差 | 預測峰值 |
|---|---|---|---|
| 0.05 | 0.2142 | 0.2401 | 0.3030 |
| 0.1 | 0.1848 | 0.1921 | 0.2613 |
| 0.2 | 0.1022 | 0.1023 | 0.1445 |
| 0.3 | 0.0381 | 0.0380 | 0.0539 |
| 0.4 | 0.0096 | 0.0096 | 0.0135 |
| 0.5 | 0.0016 | 0.0018 | 0.0023 |
兩者吻合到小數點後第三位; 預測偏低,因為這時高次諧波不能忽略(無雜訊極限是鋸齒波,RMS 為 0.289); 的模擬值在 0.001 到 0.002 之間,是取樣誤差,不是真偏差。工程判讀: LSB 時偏差峰值只有一個步階的 0.23%, 是 5.4%, 是 14%。我把 LSB 當作「量化被雜訊抖動蓋掉」的門檻,這是我選的判準,不是標準。
把這個門檻接到感測器上。光子散粒雜訊使電子數 的相對標準差是 ,換算成「檔」是 ;乘上該處的每檔碼值數,就是碼值單位下的雜訊。令它等於 0.5 並只算散粒雜訊(自算),門檻電子數 ,在灰處:
| 編碼 | 灰處每檔碼值數 | 門檻電子數 |
|---|---|---|
| LogC4 10 位元 | 57.18 | 2.72 萬 |
| S-Log3 10 位元 | 74.58 | 4.63 萬 |
| LogC4 12 位元 | 228.87 | 43.6 萬 |
| S-Log3 12 位元 | 298.52 | 74.2 萬 |
意思是:灰處像素的電子數低於門檻,量化步階就被雜訊蓋住。10 位元要看你的灰有沒有超過 2.7 萬或 4.6 萬電子;12 位元的門檻高到我手上沒有任何一個像素的數字能比(我沒有逐機查滿井數字,這裡不指名機種)。
四、一個假設的感測器:量化損失的 U 型
為了得到具體數字,我自擬一個感測器模型:滿井 5 萬電子,18% 灰落在飽和下 3 檔(即灰處 6250 電子,灰上 3 檔剛好 5 萬),讀出雜訊 3 電子,線性無黑位元偏移。每個檔位各抽 40 萬個像素,電子數取卜瓦松再加高斯讀出雜訊,經曲線編碼、取整到 位元、再解碼回線性值,以「線性值平均除以標準差」當 SNR,與無量化的理想值相比,差多少 dB(自算,模擬誤差約 ±0.02 dB):
| 相對灰 | 理想 SNR(dB) | LogC4 10 位元 | LogC4 12 位元 | S-Log3 10 位元 | S-Log3 12 位元 |
|---|---|---|---|---|---|
| −8 檔 | 12.51 | 1.074 | 0.073 | 0.275 | 0.009 |
| −6 檔 | 19.51 | 0.429 | 0.043 | 0.082 | 0.004 |
| −4 檔 | 25.83 | 0.193 | 0.011 | 0.035 | 0.014 |
| −2 檔 | 31.91 | 0.157 | 0.002 | 0.047 | −0.013 |
| 0(灰) | 37.95 | 0.333 | −0.004 | 0.197 | 0.022 |
| +2 檔 | 43.99 | 0.964 | 0.082 | 0.692 | 0.060 |
| +3 檔(飽和) | 46.99 | 2.031 | 0.126 | 1.197 | 0.091 |
(表內為損失 dB,小於 ±0.02 的負值是模擬誤差。)
U 型的兩端各有原因。暗端:碼值數隨訊號下降(第二節),LogC4 10 位元在灰下 8 檔只有 1.6 個碼值每檔,而那裡的雜訊在碼值單位下只有 0.54 LSB,量化誤差(0.29 LSB)占不小的比例。亮端:對數曲線每檔碼值數幾乎不變,但散粒雜訊相對值隨 縮小,到了灰上 3 檔,雜訊在碼值單位下只有 0.42 LSB,低於 0.5 的門檻。中間(灰下 2 到 4 檔)雜訊最大,量化損失最小。灰處我用蘇帕德修正式 預測, LSB 得 0.320 dB,模擬 0.333,吻合;但在飽和處, LSB,修正式預測 1.68 dB,模擬 2.03 dB,不吻合。我另跑了一次單點檢驗確認這是真的:量化誤差在這種低雜訊下與訊號相關,損失值取決於平均值落在碼值間的哪個位置,所以 1.7 到 2.0 dB 之間要當作範圍,不是定值。
顯而易見的推論(標準統計結論,我今天沒有查出處):對卜瓦松雜訊,方差穩定化的編碼是平方根而不是對數,平方根編碼下雜訊在碼值單位是常數,量化損失就不會有 U 型。對數編碼為了在每檔給等量碼值,付出了亮端的浪費。
五、回到 ARRI 那句警告
規格書的文字是:曲線以 12 位元為最低量化等級,10 位元影像不應用於存檔或交換;另一處說 LogC4 的硬體編碼為 12 位元最佳化,每檔精度高於 10 位元的 LogC3。我的數字只能告訴你:在我假設的感測器下,10 位元 LogC4 在灰處損失約 0.3 dB,幾乎看不見;風險集中在兩端,尤其高光端,損失到 2 dB 量級;S-Log3 10 位元因為只涵蓋 7.74 檔,碼值更密,損失較小。這不證明 ARRI 的理由是這個。「存檔」與「交換」意味著後面還有降噪(把 σ 壓到 0.3 LSB 以下,偏差回升到 5% 步階以上)、調色時的增益與對比放大、VFX 做曝光拉升,這幾種情況我都沒有模擬,所以不能斷言 10 位元一定出問題,也不能斷言一定沒問題。
六、這篇的邊界
感測器模型是我自擬的(滿井 5 萬、灰在飽和下 3 檔、讀出雜訊 3 電子),不是任何一台相機的實測;ALEV4 的滿井與讀出雜訊 ARRI 沒公布,規格書只在註腳把動態範圍定義為滿井對讀出雜訊的比。我沒有模擬編碼器壓縮(ProRes、H.264 等),也沒有模擬像素不均勻性、類比增益切換、黑位元偏移或 ADC 非線性。S-Log3 的式子來自 colour-science 程式碼,不是 Sony 原文。Anscombe 與蘇帕德修正是標準結論,我沒查出處,只用本文自己的蒙地卡羅核對過後者。
🧠 記
- LogC4 的每檔碼值數是 :10 位元亮部漸近 66.3、灰 57.2、灰下 4 檔 18.7、灰下 6 檔 5.9、灰下 8.7 檔降到 1;12 位元在灰下 10.7 檔才降到 1。
- 式子已用 ARRI 規格書附錄 D 核對:10 個取樣列的 10 位元與 12 位元碼值全部吻合(灰 285 與 1140、灰上 11 檔 1000 與 4002);LogC4 硬體最大值 469.80 對應灰上 11.35 檔。
- S-Log3 10 位元只涵蓋灰上 7.74 檔,灰處每檔 74.6 碼值,相鄰碼值亮度差 0.93%,LogC4 10 位元是 1.22%,12 位元是 0.30%。
- 量化被雜訊蓋掉的門檻是 σ 約 0.5 LSB:高斯抖動下偏差峰值 ,σ=0.5 時 0.0023、σ=0.3 時 0.054、σ=0.2 時 0.14 LSB;蒙地卡羅在 σ 從 0.2 到 0.5 吻合。
- 灰處的電子門檻:LogC4 10 位元 2.72 萬、S-Log3 10 位元 4.63 萬、LogC4 12 位元 43.6 萬(自算,只計散粒雜訊)。
- 量化損失是 U 型:假設模型下 10 位元 LogC4 灰下 8 檔 1.07 dB、灰 0.33 dB、飽和 2.03 dB;12 位元全程不超過 0.13 dB;高光端的偏差與位置有關,範圍 1.7 到 2.0 dB。
邊界: 感測器模型(滿井 5 萬電子、灰在飽和下 3 檔、讀出雜訊 3 電子)與 σ≥0.5 LSB 的判準都是我自擬;S-Log3 式子取自 colour-science 實作,Sony 原文讀不到;沒有模擬壓縮、降噪、調色或 VFX 流程,所以 ARRI 警告的真實理由沒有驗證;昨天的 Z6 III 讀出衝突與 SLVS-EC 編碼仍未解。
✍️ 實踐
用 25 分鐘重現 LogC4 與 S-Log3 的碼值表,並量一次你自己的量化門檻。 需要 Python 與 numpy,不需要相機。
- 照第一節把 LogC4 的 與編碼、解碼函式寫成程式,並把 S-Log3 的兩段式子也寫好。
- 驗算:LogC4 在 應得 10 位元 285、12 位元 1140; 應得 1000 與 4002;S-Log3 在 應得 420。三個數有任何一個對不上,先查括號與 的分母 117.45。
- 用數值微分(對 取 ±0.001 檔)印出每檔碼值數表,與第二節的表比對,差在 0.01 以內才算通過。
- 重現第三節的偏差表:取 σ=0.3 與 0.5,各 200 個 、每個 40 萬個樣本,量 RMS 偏差,預期約 0.038 與 0.0016 到 0.0018。若 σ=0.5 的結果明顯大於 0.003,先檢查亂數種子或樣本數。
- 代入你自己的感測器:查你所用相機的滿井電子數與 18% 灰的位置(若查不到就保持假設),算灰處 ,再判斷你的灰是在門檻之上還是之下。把預測與第四節的 U 型比對,只要結論和我的模型方向不同,就值得追問為什麼。
今天做得完的最小版本:只做步驟 1、2、3,不跑蒙地卡羅,用十分鐘確認自己手寫的式子能復現 ARRI 附錄 D 的表。
🔗 延伸學習
- ARRI LogC4 Logarithmic Color Space Specification(ARRI,2025-01-23 版) — 本文第一、二、五節的式子、附錄 B 到 D 的表與 12 位元警告,我讀了全文 13 頁。
- colour-science:sony_slog 原始碼文件(Colour 0.3.9) — S-Log3 編碼與解碼式子的來源,我讀到的是網頁內容,頁面引用 Sony 原文。
- Technical Summary for S-Gamut3.Cine/S-Log3 and S-Gamut3/S-Log3(Sony) — S-Log3 的 Sony 原始文件;我這次下載回 Access Denied,沒有讀到內文,放在這裡供你自己取用。
- ARRI Log C 說明頁(ARRI) — ARRI 對 Log C 系列的官方介紹,出現在我的搜尋結果中,我沒有打開讀全文。
💬 問 AI
我在檢查對數編碼(ARRI LogC4、Sony S-Log3)的 10 位元量化。我的推導與數字:
(a) LogC4 場景曲線 f(E) = ((log2(aE+64) - 6)/14)·b + c,a=(2^18-16)/117.45、b=(1023-95)/1023、c=95/1023;每檔碼值數 = (2^n-1)·b/14 · aE/(aE+64)。10 位元灰處 57.18、灰下 4 檔 18.68、灰下 6 檔 5.92;降到每檔 1 個碼值在灰下 8.68 檔(10 位元)與 10.70 檔(12 位元)。
(b) S-Log3:y = (420 + 261.5·log10((x+0.01)/0.19))/1023,x≥0.01125;10 位元最大碼值對應灰上 7.74 檔,灰處每檔 74.58 碼值。
(c) 量化被雜訊抖動蓋掉:偏差峰值 ≈ e^(-2π²σ²)/π(σ 以 LSB 計),我用蒙地卡羅在 σ 從 0.2 到 0.5 驗證吻合;我把 σ≥0.5 LSB 當門檻,灰處電子數門檻 = (s/(0.5·ln2))²,LogC4 10 位元 2.72 萬、S-Log3 10 位元 4.63 萬。
(d) 假設滿井 5 萬電子、18% 灰在飽和下 3 檔、讀出雜訊 3 電子,模擬 10 位元 LogC4 的量化 SNR 損失:灰下 8 檔 1.07 dB、灰 0.33 dB、飽和 2.03 dB,12 位元不超過 0.13 dB。
請:
1. 檢查 (a)(b) 的推導與數字,並說明每一步是文件明說的、你查證到的(附出處)、還是你的推論。
2. 檢查 (c) 的高斯抖動偏差公式,並指出 σ<0.5 LSB 時蘇帕德修正式為什麼失準(我在 σ=0.42 得到模擬 2.03 dB 對修正式 1.68 dB)。
3. ARRI 規格書說 10 位元 LogC4 不應用於存檔或交換;除了我的 (d),還有哪些具體機制(降噪、調色增益、VFX 曝光拉升、編碼器壓縮)會讓 10 位元出問題?請各給一個可證偽的預測,並標明哪些是推論。
4. 以平方根(Anscombe)編碼取代對數編碼,量化損失會變成平坦嗎?請給算式並指出前提。
5. 不要編造任何相機的滿井或讀出雜訊數字,查不到就明說;不要編造連結;不要給任何器材購買建議。