ISO/TS 19567-2:2019 的第 1 章 Scope 底下掛著一條 NOTE,原文是:「The measurement method specified in this document is for objective evaluations of texture reproduction, of which the results are sometimes inconsistent with subjective evaluations (See Annex C).」附錄 C 的標題就叫〈Inconsistency between results of the measurement method specified in this document and subjective evaluations〉。上一篇花了整篇在論證「實驗室分數和使用者體感對不上,是標準的結構性問題」,而制定標準的那個委員會在 2019 年就把這句話寫在正文第一頁了。

這是上一篇要修的第一件事,而且是最輕的一件。下面四件比較重。

第二件:那張 dead leaves 圖卡不是中性的。 ISO/TS 19567-2:2019 的 Introduction 寫著:「The test charts described here are based on randomly arranged circles of various sizes and colour with a limited contrast.」various sizes and colour。上一篇說 Artmann 與 Wueller 在 2012 年指出的彩色目標缺口「十四年沒進標準」——它 2019 年就進去了。真正還在的缺口不是圖卡的顏色,是從那張彩色圖卡上量出來的仍然只有一條亮度 SFR。

第三件:上一篇那張總表裡「色度解析度:查不到」那一格是錯的。 ISO 19084:2015《Photography — Digital cameras — Chromatic displacement measurements》存在,IEEE 1858-2023 裡有 chroma level 與 lateral chromatic displacement 兩個色度量測。ISO 19084 量的是色邊的位置。而我今天把去馬賽克在一條中性邊上製造出來的色邊算了出來:位移恰好是 0.00000 px,只有振幅——雙線性做出相當於階高 9.41 % 的色邊,Malvar-He-Cutler 3.08 %,而兩者的 R、B 邊緣質心相對 G 的位移在三種模糊量、十六個次像素位置下全部是零。ISO 19084 對去馬賽克製造的假色,在定義上是盲的。

第四件:上一篇那張 MTF 表的「雙線性」那一欄不是亮度 MTF,是綠通道 MTF。 重跑之後:雙線性的綠通道在九個頻率上是 0.988 / 0.952 / 0.897 / 0.827 / 0.750 / 0.673 / 0.603 / 0.548 / 0.512,和上一篇那一欄幾乎逐格吻合;而真正的亮度 MTF 是 0.982 / 0.928 / 0.845 / 0.741 / 0.625 / 0.509 / 0.405 / 0.322 / 0.268。在 0.45 cyc/px 上,0.512 和 0.268 差了將近一倍。

第五件,也是今天的主線:上一篇說「先驗不是免費的,它在成立的地方給你 14 dB,在不成立的地方跟你收 4 dB,代價是負的」——這個帳只算了一欄。 把另一欄補上:Malvar-He-Cutler 在等亮度色度光柵上確實輸給雙線性 4.28 dB,但它在中性內容上少製造了 11.45 dB 的假色。同一組參數、同一次模擬。先驗的帳是正的,而且是大正。

把這五件事串起來,會得到一個比上一篇更乾淨的敘述:在中性場景上,去馬賽克器唯一在做的事,就是把亮度變成色度。訊號如此,雜訊也如此。 而這件事,沒有任何一份標準在量。

今天的模擬全部自己跑,參數一次寫清楚:256×256 影像、RGGB 排列、線性光、環形卷積(np.roll)、裁掉外圈 8 像素、正弦光柵的中心值 0.5、振幅 0.4、對 linspace(0, 2π, 16, endpoint=False) 這 16 個均勻相位取平均。上一篇用的是 8 個隨機相位,所以個別數字會有小差異,我會逐處標出來。

📖 學

一、更正 1:標準自己把「和主觀不一致」寫進了正文

先把 ISO/TS 19567 這一族的實際條文擺出來,因為上一篇只引了第二部分,而且引得不夠。

這一族有兩部分,而且第一部分先出:

編號年標題用什麼圖案
ISO/TS 19567-12016Texture reproduction measurements — Part 1: Frequency characteristics measurements using cyclic pattern低對比多爆發條紋(multiburst)與低對比正弦西門子星
ISO/TS 19567-22019Part 2: Texture analysis using stochastic pattern隨機圓盤(dead leaves)

Part 1 的 Scope 說它「specifies protocols for the measurement of the texture reproduction using test charts with cyclic pattern」,並明講「excludes the acceptable range of value for texture reproduction」——只定量法,不定及格線。它的正文架構是 5.2 Multiburst measurement(5.2.1 低對比 multiburst 圖卡)與 5.3 Siemens star measurement(5.3.1 低對比正弦西門子星圖卡)。所以上一篇說「2017 年 ISO 12233 把正弦西門子星寫成正式方法」是對的,但在紋理這條線上,低對比版本的西門子星早在 2016 年就已經有自己的技術規範了。

Part 2 的 Scope 只有兩句正文加一條 NOTE,那條 NOTE 就是開頭引的那句。它的第 2 章寫著「There are no normative references in this document.」——沒有任何規範性引用,整份文件自足。

第 3 章的定義簡短到值得整條抄:

3.1 texture — low contrast fine details, which appear in objects EXAMPLE Low contrast fine details, which is visible in foliage, fur, sand, textiles, grass, or masonry surfaces.

3.2 texture reproduction — response in the output image of cameras to the texture of the object in the scene

注意 3.1 把紋理定義成「低對比細節」,而且舉的例子全是自然物:樹葉、毛皮、沙、織品、草、砌石面。這和 ISO 12233 的斜邊(4:1)、楔形、斜星是完全不同的世界觀——一個量「邊有多銳」,一個量「低對比細節還剩多少」,而後者才是降噪會吃掉的東西。

Introduction 把動機寫得比任何二手資料都直接:

The on going tendency to utilize smaller sensors with higher pixel counts in some cameras leaves a very small amount of light reaching each individual pixel. With the signal getting smaller and the noise level remaining at a certain level, it is necessary to reduce the noise in the image processing after capturing the image. Although the algorithms used for noise reduction have been developed over time, they are still not able to differentiate texture in the actual scene from the unwanted noise introduced by the capturing system.

這段話的邏輯鏈是:像素變小 → 每個像素的光變少 → 必須降噪 → 降噪演算法分不出「場景裡的紋理」和「系統引入的雜訊」 → 所以需要一個量紋理損失的方法。這條鏈和上一篇第九節那張繞射表接得上:0.7 µm 像素的問題不只是繞射把解析度關掉,還有每個井裡的電子數少到必須靠演算法救。

再往下一段:

The texture reproduction is dependent on frequency and contrast because the noise reduction and the acutance enhancement, etc., are nonlinearly dependent on the values of the surrounding pixels.

「頻率與對比都相依,因為降噪與銳化對周圍像素的值是非線性相依的。」 這一句就是上一篇第五節「斜邊法的三個前提現代 ISP 一個都不守」的標準版官方說法——標準明講了被量的系統是非線性且內容自適應的。

然後是那條 NOTE 和 Annex C。Annex C 的完整標題是「Inconsistency between results of the measurement method specified in this document and subjective evaluations」,Introduction 裡還交代了原因的方向:

Annex C explains possible inconsistency between measurement results using the method described in this document and subjective evaluations, due to different condition of noise, with experimental results for images.

歸因是「雜訊條件不同」,不是色度。 這點很重要,我後面第八節會回到它——因為雜訊和色度在去馬賽克這一段其實是同一件事的兩面,而標準看見了雜訊那一面,沒看見色度那一面。

拍攝條件也值得記下來,因為它們和 ISO 19084、ISO 12233 高度一致,顯示 ISO/TC 42 有一套共用的環境規格:

項目ISO/TS 19567-2:2019 的規定
溫度23 °C ± 3 °C
光源色溫預設 5 700 K ± 1 000 K(用別的要一起報告)
照度建議 1 000–2 000 lx;透射式圖卡 18 % 灰為 57,3–115 cd/m²
照度不均< 10 %
閃頻光源不建議;非用不可時曝光時間不得短於一個閃頻週期
曝光18 % 灰的輸出要落在 sRGB 8 位元的 Y = 118,容差 +2 / −6(即 +5 % / −10 %)
白平衡「White balance should be adjusted to render the centre of the image as neutral as possible.」
銳化/降噪出廠預設
raw要量轉檔軟體的輸出,並報告軟體名稱與設定

最後那條白平衡的規定,和上一篇第一節推的那件事完全對得上:標準要求你先把畫面中心弄成中性,而中性正是「色差是低頻」這個先驗成立的條件。 標準沒有解釋為什麼,但它規定了。

(能公開讀到的預覽只到正文第 3 頁,所以 4.5 Test Chart 的圖卡生成規格、5.2 的量測公式、6.2 的 SFR10 / SFR50 / texture acutance 定義我讀不到,已標存疑:下面關於「量的是一條 SFR 曲線」的說法,依據是 Introduction 和目次,不是條文本身。)

二、更正 2:那張 dead leaves 圖卡是彩色的

上一篇修訂後的總表裡,「去馬賽克 + 降噪 + 銳化(合併)」那一列的「量測用什麼場景」寫的是「中性 dead leaves,3:1 對比」。這一格要改。

ISO/TS 19567-2:2019 的 Introduction 原文:

This document specifies methods to measure texture reproduction using test charts with a stochastic pattern. … The test charts described here are based on randomly arranged circles of various sizes and colour with a limited contrast. This provides a target with known structure and spatial statistics similar to natural images.

「various sizes and colour」。再加上 4.4.4 的曝光條款寫的是「the output value for the background grey near the centre of the measured chart」——灰底、彩色圓盤。這和 Imatest 那張按 CPIQ 做的 3:1 對比、18 % 灰底版本並不衝突:灰底是同一個,圓盤的顏色是另一回事。

所以上一篇第八節那個敘事要改寫。原話是:

所以這不是新發現,是一個被明確寫下來、發表在同儕審查的會議論文上、然後在十四年裡沒進標準的缺口。

Artmann 與 Wueller 的那篇是 Improving texture loss measurement: spatial frequency response based on a colored target,Proc. SPIE 8293, Image Quality and System Performance IX, 829305,2012 年 1 月 24 日,DOI 10.1117/12.907303。從 2012 到 ISO/TS 19567-2:2019,是七年,不是十四年,而且結局是進去了,不是沒進去。

但這個更正不會讓上一篇的結論倒掉,它只是讓缺口的位置變得更精確。把圖卡染上顏色,和把量測擴展到色度,是兩件不同的事。

彩色圖卡解決的是上一篇第六節講的那個問題:現代 ISP 靠統計特徵決定怎麼處理一塊區域,而一張長得不像自然場景的圖卡會被當成圖卡處理。彩色 dead leaves 比灰階 dead leaves 更像自然場景,所以更難被特殊處理——這是輸入端的改進。

但 Introduction 對輸出端的描述是:

The measurement results are presented in SFR (Spatial Frequency Response) curves from which a single value representing the overall texture content is derived.

一條 SFR 曲線,壓成一個數字。 一條。從一張彩色圖卡上量出一條曲線,那條曲線只能是亮度的(或者逐通道三條亮度的)。上一篇第八節末尾那段話仍然成立,而且現在可以講得更準:

逐通道 MTF 量的是三條亮度軸;色度 MTF 要量的是三條軸之間的差。

圖卡在 2019 年彩色化了,量測沒有。缺口從「圖卡是中性的」精確化成「量出來的是亮度的」。 這是一個比原本的說法更難被反駁、也更難被修補的缺口——因為染色一張圖卡很便宜,定義一個色度量測很貴。

Introduction 還誠實地寫了單一數字的失效條件:

In general if one measured SFR is greater than the other across all measured spatial frequencies, a larger amount of texture is reproduced in the corresponding image. If two SFRs have a crossover point and the larger SFR depends on the frequency range, relative ordering of texture preservation quality is less clear.

兩條 SFR 交叉的時候,誰好誰壞就不清楚了。Part 1 的 Introduction 把同一件事講得更強:「the superior image in the subjective evaluation is dependent on the dominant frequency of the image」——主觀上誰比較好,取決於這張照片的主導頻率是多少。 也就是說,標準自己承認:紋理 acutance 這個單一數字,在曲線交叉時沒有排序能力。這正是上一篇第七節做 acutance 積分時該補上的但書。

三、更正 3:色度那一格不是空的——ISO 19084 與 IEEE 1858-2023

上一篇那張修訂後總表的倒數第三列:

| 色度解析度 | 無 | 查不到 | — | — |

這一格要改成兩列,而且都有標準。

ISO 19084:2015,Photography — Digital cameras — Chromatic displacement measurements,ISO/TC 42 制定,2015 年 12 月 15 日第一版。Scope 三句:

This International Standard specifies the definition of chromatic displacement for digital still cameras, test patterns, measurement conditions and methods, so as to enable the comparison of the results of measurement. The methods of measurement are designed to enable the assessment of the performance of digital still cameras by using image data output by the digital still cameras. This International Standard does not specify the allowable amount of chromatic displacement.

定義那一條寫得很寬:

2.1 chromatic displacement — shift in location of features of different colours in the output image caused by optical, mechanical, electrical and image processing factors Note 1 to entry: Optical factor include lateral chromatic aberration, longitudinal chromatic aberration, characteristic comatic aberration and others. Note 2 to entry: It is the displacement of the red (R) and the blue (B) channel in relation to the green (G) channel in an output image. Note 3 to entry: Chromatic displacement is evaluated by measuring the chromatic displacement in the lateral direction in the image.

注意定義裡明確包含「image processing factors」,也就是說標準本來就打算把影像處理造成的色位移算進去。這正是我想要的那種量測。 而且 Note 2 用的量正好是去馬賽克最容易出事的那組:R 與 B 相對 G。

圖卡規格:

項目規定
兩種圖卡點圖卡(白底黑圓點,正方網格)、V 圖案圖卡
黑色圖樣面積佔全影像 < 20 %
對比至少 40:1,不得高於 10 000:1
點數(4:3 影像)不少於 20 × 15
點徑不少於 10 像素
光源色溫5 700 K ± 1 000 K
照度建議 1 000–2 000 lx(透射式 318–637 cd/m²)
照度不均< 10 %
圖卡平面度彎曲高度 < 圖卡寬度的 1,5 %
背景消光黑牆或黑圍幕
對位用放在圖卡平面上的鏡子,把鏡中相機鏡頭中心對到畫面中心

標準還附了一條 NOTE:「ISO 17850, Geometric distortion measurement also adopts the dot chart. Use of the dot chart may reduce the workload required for camera characterization.」——同一張點圖卡也用於 ISO 17850 幾何變形量測,共用可以省事。

兩件事跳出來。

第一,又是中性的。 白底、黑點。整張圖卡沒有任何彩色。要量「不同顏色的特徵之間的位移」,用的是一張完全沒有顏色的圖卡——這個設計只有在「色位移來自鏡頭的橫向色差」的前提下才說得通,因為橫向色差在一條中性黑白邊上就會顯影。它對「演算法在中性邊上憑空造出顏色」這件事沒有防備。

第二,對比至少 40:1。 這是 ISO 12233:2000 用的那個高對比,而 ISO 12233 在 2014 年第二版把斜邊對比從 ≥40:1 降到 4:1,理由是 40:1 的邊在真實相機上幾乎必然裁切,裁切之後的邊緣擴散函數已經不是系統響應。ISO 19084 在 2015 年出版,保留了 40:1。它可以這樣做,因為它量的是位置不是調變度,而位置對裁切比較不敏感。但這也意味著它的工作點被刻意選在一個高對比、容易飽和的區域——上一篇的規律再一次適用:量測協定被選在該量能穩定讀數的工作點上。

IEEE 1858-2023,IEEE Standard for Camera Phone Image Quality (CPIQ),2023 年 8 月 4 日發布,取代 IEEE 1858-2016。它定義的指標是:spatial frequency response、color uniformity、chroma level、lateral chromatic displacement、local geometric distortion、texture blur、visual noise。Scope 一句:「Quantifying the performance of camera-equipped mobile devices is covered in this standard, with an emphasis on metrics and procedures appropriate to the types of sensors, lenses, and signal processing routines present on such devices.」

所以色度軸上其實有三個量測:色度位移(ISO 19084 / IEEE 1858)、色度水平(chroma level,量的是飽和度渲染)、色彩均勻度(color uniformity,量的是鏡頭陰影造成的畫面各處色偏)。

而它們三個沒有一個量色度的空間調變。這就是接下來要補的那一塊。

四、更正 4:昨天那張「雙線性 MTF」是綠通道,不是亮度

上一篇第三節那張 MTF 表把雙線性和 MHC 並排,結論是 MHC 的 MTF 超過 1、所以去馬賽克自帶銳化。結論沒問題,但那張表的雙線性那一欄數字有問題,而且問題的性質值得單獨講。

重跑,同一個場景(中性水平正弦光柵、振幅 0.4、16 個均勻相位),把三種讀法並排:

頻率 (cyc/px)雙線性:綠通道雙線性:紅通道雙線性:亮度 φ_L上一篇表上的數字
0.050.9880.9760.9820.998
0.100.9520.9050.9280.955
0.150.8970.7940.8450.896
0.200.8270.6550.7410.826
0.250.7500.6280.6250.750
0.300.6730.3450.5090.673
0.350.6030.2060.4050.603
0.400.5480.0950.3220.547
0.450.5120.0240.2680.511

最右邊那欄和最左邊那欄幾乎逐格吻合(最大差 0.016,在最低頻那一格)。上一篇量的是綠通道。

為什麼差這麼多?因為在 RGGB 上,綠佔一半的像素、紅和藍各佔四分之一。綠的子晶格是梅花形(quincunx),它的有效取樣密度是全影像的 1/2;紅的子晶格是每隔一個像素一個,水平方向的取樣率只有 0.5 cyc/px,所以紅通道自己的 Nyquist 就在 0.25 cyc/px。在 0.45 cyc/px 上,紅通道的 MTF 是 0.024——基本上是零。亮度 φ_L = (R + 2G + B)/4 把三者加權平均,所以它落在綠和紅之間,靠近中間。

這件事的意義不只是一欄數字。如果你用綠通道的 MTF 去代表一台相機的解析度,你會系統性地高估它,而高估的幅度正好等於紅藍通道被抹掉的那部分——也就是去馬賽克真正在做工的那部分。 在 0.45 cyc/px 上,綠報 0.512、亮度報 0.268,差 91 %。

順帶把 MHC 那一欄也重報一次,因為它有另一個性質:

頻率 (cyc/px)MHC 綠通道MHC 紅通道MHC 亮度上一篇
0.051.0121.0121.0121.023
0.101.0391.0391.0391.043
0.151.0611.0611.0611.058
0.201.0531.0531.0531.050
0.251.0001.0041.0000.997
0.300.8990.8990.8990.898
0.350.7670.7670.7670.766
0.400.6340.6340.6340.635
0.450.5360.5360.5360.536

MHC 的三個通道在中性光柵上響應完全一致(0.25 cyc/px 那一格的 1.000 對 1.004 是相位平均的殘差)。這就是為什麼上一篇那張表在 MHC 那一欄沒出事:量綠通道和量亮度得到同一個答案。MHC 的梯度修正項正是為了讓三個通道對齊而設計的,它在中性內容上把這件事做到了數值上幾乎精確。

MTF 的峰值我算到 1.061(在 0.15 cyc/px),上一篇是 1.058,差 0.003,落在 8 個隨機相位對 16 個均勻相位的差異範圍內。過衝是 6.1 %,不是 5.8 %,但結論不變:去馬賽克自帶一個高通成分,它會把斜邊 SFR 的讀數頂上去。

五、中性場景上,去馬賽克器唯一的輸出是它自己製造的色度

上一篇證明了:白平衡之後的完全中性場景上,,所以 ,馬賽克陣列就是原圖。從這裡可以再推一步,而這一步上一篇沒走。

任何去馬賽克器的輸出都可以寫成三個通道 ,誤差是 。把誤差投影到上一篇那組正交分解上:

e_L  = ( e_R + 2e_G + e_B ) / 4
e_C1 = ( e_R − 2e_G + e_B ) / 4
e_C2 = ( e_R − e_B ) / 4

因為輸入的色度精確為零(),所以輸出的任何色度全部都是誤差。不需要參考值、不需要色度校準、不需要知道相機的光譜響應——只要輸入是中性的,輸出的色度就是純誤差,而它的參考值是 0。

所以可以定義一個量:

FCT(f) = 輸出色度調變振幅 / 輸入亮度調變振幅

我叫它假色轉移(false-colour transfer)。它量的是「這個演算法把多少亮度變成了色度」。輸入純亮度,輸出應該純亮度,任何色度都是憑空造的。

跑出來:

水平中性正弦光柵,振幅 0.4,16 個均勻相位:

頻率 (cyc/px)雙線性 C1雙線性 C2雙線性 |C|MHC C1MHC C2MHC |C|直通 |C|
0.050.00870.01220.01500.00600.00570.00820.000000
0.100.03380.04770.05850.02160.01700.02750.000000
0.150.07290.10310.12620.04090.01970.04540.000000
0.200.12210.17270.21160.05650.00320.05660.000000
0.250.17680.25000.30620.06250.06250.08840.000000
0.300.23140.32730.40080.05650.15770.16750.000000
0.350.28070.39690.48620.04090.27420.27730.000000
0.400.31980.45230.55390.02160.38750.38810.000000
0.450.34490.48780.59740.00600.46990.46990.000000

對角 45 度中性光柵:

頻率 (cyc/px)雙線性 |C|MHC |C|直通 |C|
0.050.01220.00730.000000
0.100.04740.02640.000000
0.150.10170.04960.000000
0.200.17030.06730.000000
0.250.24850.07460.000000
0.300.33400.08800.000000
0.350.42620.14680.000000
0.400.52540.25750.000000
0.450.63030.40420.000000

三件事。

第一,雙線性在 0.45 cyc/px 的水平中性光柵上,做出相當於輸入亮度調變 59.7 % 的色度。 對角是 63.0 %。輸入是一張完全沒有顏色的黑白條紋,輸出有六成幅度的顏色。這就是摩爾紋。

第二,直通在所有頻率、兩個方向上都是精確的 0.000000。 這是上一篇「直通 RMSE = 0」的必然推論,但寫成 FCT 之後意義不同:直通不只是誤差為零,它是結構上不可能製造假色——它把同一個數字複製到三個通道, 恆成立,所以 ,不管輸入是什麼。

第三,MHC 在中低頻遠遠優於雙線性。 0.20 cyc/px 上是 0.0566 對 0.2116,差 3.74 倍。這件事上一篇完全沒量到,而它是接下來那個更正的基礎。

六、假色落在哪個頻率:f → 0.5 − f 的鏡像

FCT 只說了假色有多大,沒說它在哪裡。把輸出色度做二維 FFT,找峰值:

輸入頻率 (cyc/px)演算法C1 峰值位置C1 振幅C2 峰值位置C2 振幅
0.05雙線性(0.449, 0.500)0.0059(0.449, 0.000)0.0119
0.05MHC(0.449, 0.500)0.0058(0.449, 0.000)0.0055
0.15雙線性(0.352, 0.500)0.0384(0.352, 0.000)0.0768
0.15MHC(0.352, 0.500)0.0306(0.352, 0.000)0.0151
0.25雙線性(0.250, 0.000)0.1250(0.250, 0.000)0.2500
0.25MHC(0.250, 0.500)0.0625(0.250, 0.000)0.0625
0.35雙線性(0.352, 0.000)0.1504(0.148, 0.000)0.3009
0.35MHC(0.148, 0.500)0.0304(0.148, 0.000)0.2096
0.45雙線性(0.449, 0.000)0.2270(0.051, 0.000)0.4539
0.45MHC(0.051, 0.500)0.0057(0.051, 0.000)0.4367

規律精確得不需要統計:輸入在 ,色度誤差在 。 0.05 → 0.45,0.15 → 0.35,0.25 → 0.25,0.35 → 0.15,0.45 → 0.05。

這直接來自上一篇引用的那條 CFA 恆等式。 的載波是 ,也就是空間頻率 ; 的載波是 與 ,也就是 與 。去馬賽克器要做的事就是把這些載波解調回基頻。任何解調不乾淨的殘留,都會以「載波頻率減去訊號頻率」的形式出現——這是一個繞著 0.25 cyc/px 的頻率鏡射。

然後是關鍵的一步:把這個鏡射放到人眼的色度解析力上看。

Mullen 在 1985 年(The contrast sensitivity of human colour vision to red-green and blue-yellow chromatic gratings,J. Physiol. 359, 381–400)量出等亮度色度光柵的對比敏感度函數:紅綠與藍黃兩條曲線都是低通的,而且在低頻端沒有衰減(即使到 0.1 cyc/deg 以下也不掉),高頻截止在 11 到 12 cycles/degree。相較之下亮度的 CSF 是帶通的,峰值約 4 cyc/deg,截止在數十 cyc/deg。

用上一篇算過的那兩組觀看條件換算:

觀看條件α (度/像素)Nyquist (cyc/deg)色度截止 11 cyc/deg色度截止 12 cyc/deg
螢幕 100 % 檢視(127 ppi)@ 50 cm0.0229221.820.2521 cyc/px(Nyquist 的 50.4 %)0.2750 cyc/px(55.0 %)
300 ppi 印刷 @ 25 cm0.0193925.790.2133 cyc/px(42.7 %)0.2327 cyc/px(46.5 %)

在螢幕 100 % 檢視下,0.25 cyc/px 以上的色度細節人眼看不到。那是相機色度頻寬的上面一半。 印刷更嚴格,只到 0.21 cyc/px。

把這兩件事疊起來:

  • 輸入 0.45 cyc/px 的中性亮度細節 = 19.63 cyc/deg。亮度上這已經很細,但還在可見範圍;色度上遠遠超過 11–12 的截止。
  • 它產生的色度誤差落在 0.05 cyc/px = 2.18 cyc/deg,振幅是輸入的 44–45 %。
  • 2.18 cyc/deg 在色度 CSF 的平坦高敏感區——低通、低頻不衰減。

去馬賽克的誤差不是把細節變模糊,是把你看不見的亮度細節搬到你最看得見的色度頻率上,而且幾乎不損失振幅。 這就是為什麼摩爾紋和偽色在視覺上這麼刺眼:它是一個從不可見頻段到最可見頻段的高效率搬運。

反過來也成立,而且同樣重要:輸入 0.05 cyc/px 的低頻亮度,色度誤差跑到 0.45 cyc/px,在人眼色度截止之外,完全看不見。 所以平坦與低頻區域即使有色度誤差也無所謂。這解釋了上一篇那個觀察——「平坦區域所有演算法幾乎一樣」——的一半理由:另一半理由是誤差被搬到了看不見的地方。

七、更正 5:先驗的帳是正的,昨天只算了一欄

上一篇第二節的結論:

先驗不是免費的。它在成立的地方給你 14 dB,在不成立的地方跟你收 4 dB。 這件事上一篇只推到「先驗失效時輸出偽色」,沒算出代價的正負號。代價是負的。

「代價是負的」這個判斷,是拿等亮度色度光柵上的 4.26 dB 損失當成本,而收益那一欄算的是中性光柵上的 PSNR。問題在於:中性光柵上的 PSNR 把亮度誤差和色度誤差混在一個數字裡,而這兩種誤差的可見度差了一個數量級。把帳重算。

先把兩個數字擺清楚(我的重跑值,16 個均勻相位):

等亮度色度光柵上的 PSNR(成本欄):

頻率 (cyc/px)直通雙線性MHCMHC − 雙線性
0.0510.3041.9535.92−6.03 dB
0.1010.3030.1224.45−5.67 dB
0.1510.3023.4418.37−5.07 dB
0.2010.3018.9514.67−4.28 dB
0.2510.3015.7412.40−3.34 dB
0.3010.3013.4011.07−2.33 dB
0.3510.3011.7210.33−1.39 dB
0.4010.3010.599.95−0.64 dB
0.4510.309.939.77−0.16 dB

(0.20 cyc/px 上 MHC 比雙線性差 4.28 dB,上一篇是 4.26 dB,吻合。值得注意的是 MHC 在每一個色度頻率上都輸給雙線性,而且低頻輸得更多——這比上一篇只報一個頻率更糟,也更說明問題。)

中性光柵上的假色轉移(收益欄):

頻率 (cyc/px)雙線性 |C|MHC |C|MHC 的改善
0.100.05850.0275+6.56 dB
0.150.12620.0454+8.89 dB
0.200.21160.0566+11.45 dB
0.250.30620.0884+10.78 dB
0.300.40080.1675+7.57 dB
0.350.48620.2773+4.88 dB
0.400.55390.3881+3.10 dB
0.450.59740.4699+2.09 dB

(對角方向 0.20 cyc/px 的改善是 +8.06 dB,略小但同號。)

在 0.20 cyc/px 這一點上:成本 −4.28 dB,收益 +11.45 dB。

而且這兩欄的「份量」完全不對等:

成本那一欄要求場景是等亮度色度光柵。 這是一種在真實世界極罕見的內容:亮度完全不變、只有顏色以正弦變化,而且調變振幅和亮度光柵一樣大(0.4,也就是 80 % 對比)。Ruderman、Cronin 與 Chiao 在 1998 年(Statistics of cone responses to natural images: implications for visual coding,J. Opt. Soc. Am. A 15(8), 2036–2045)拿高光譜自然場景影像轉成人眼錐細胞量子捕獲量,做正交去相關,穩健地得到三個主軸:一個對應純輻射亮度變化,另外兩個「reminiscent of the blue–yellow and red–green chromatic-opponent mechanisms」。那篇的核心結論是自然場景的錐細胞響應在對數空間裡可以被這三個軸去相關,也就是說色度和亮度在自然影像裡是接近獨立的兩件事。(常被引用的「三軸標準差比約 1 : 0.2 : 0.02」這個數字,我在二手資料裡看到,但沒有在原文裡核對到,已標存疑,所以下面不拿它當論據。)

收益那一欄要求場景是中性的細紋。 磚牆、屋瓦、西裝布料、紗窗、遠處的欄杆、頭髮、草地——這些東西的亮度對比通常遠大於色度對比。上一篇說「先驗失效的地方正好就是你會抱怨的地方」;今天要補上另一半:先驗成立的地方也正好就是你會抱怨的地方,而且更常見。

再加上第六節那個可見度的不對稱:

  • 成本(色度細節衰減)發生在輸入頻率上。0.20 cyc/px = 8.73 cyc/deg,已經進入色度 CSF 的下降段;0.25 cyc/px 以上完全不可見。
  • 收益(假色)發生在鏡射頻率 上。高頻亮度細節的假色落在極低的色度頻率,那是色度 CSF 的平坦高敏感區。

所以正確的說法是:先驗用一段看不見的色度頻寬,換掉一段最看得見的假色。 上一篇說「代價是負的」,那是把兩種不等價的 dB 直接相減。代價是正的,而且用可見度加權之後,正得更多。

這也順便回答了一個上一篇沒問的問題:為什麼從 2004 年的 Malvar 到今天的學習式方法,大家都在往「更強的先驗」走,而不是往「更中立的演算法」走? 因為先驗買的東西不是 Kodak 上的那 1 個 8 位元階,是這 11.45 dB 的假色抑制。而 Kodak 的平均 PSNR 把這件事稀釋掉了——上一篇說「Kodak 是掃描底片、色度細節稀薄」,那對成本欄是缺陷,對收益欄卻剛好是優點:掃描底片上假色抑制的貢獻會被完整計入。這是同一個資料集在兩欄上扮演相反角色的一個例子。

八、雜訊也是同一條路:色度雜訊是去馬賽克器造的

第五節那句話——「去馬賽克器在中性場景上唯一做的事是把亮度變成色度」——對雜訊同樣成立,而且可以精確算出來,不需要模擬。

假設 CFA 上有獨立同分布的雜訊,每個像素變異數 。任何線性去馬賽克器在像素 的輸出都是

其中 是 CFA 相位。這是一個**週期性位移可變(LPSV)**的線性濾波器,週期 2×2。輸出雜訊變異數就是 。

把 Malvar-He-Cutler 的四組 5×5 核心(係數 、、,全部除以 8)與雙線性的核心逐一算出 :

演算法紅綠藍平均
直通1.00001.00001.00001 = 12/12
雙線性0.56250.62500.56257/12 = 0.58333
Malvar-He-Cutler0.9843750.781250.98437511/12 = 0.91667

三個精確的十二分數。逐相位看更有意思:

相位MHC 紅MHC 綠MHC 藍雙線性 紅雙線性 綠雙線性 藍
R 位置1.00000.56250.95311.00000.25000.2500
G(紅列)0.99221.00000.99220.50001.00000.5000
G(藍列)0.99221.00000.99220.50001.00000.5000
B 位置0.95310.56251.00000.25000.25001.0000

MHC 幾乎不做雜訊平滑。 它的平均雜訊增益是 11/12 = 0.9167,而雙線性是 7/12 = 0.5833。原因就是那些負係數:梯度修正項是高通的,它補回的訊號和雜訊一起補。上一篇說 MHC 的 MTF 超過 1、它是一個銳化器——雜訊增益 11/12 是同一件事的另一個面向。

但真正的重點在雜訊被放到哪裡。把輸出雜訊投影到亮度與色度軸上(組合核心 等等),再用模擬驗證(256×256、平坦中性場 0.5、高斯雜訊):

演算法色度/亮度
直通0.9993 σ0.0000 σ0.0000 σ0.000
雙線性0.4752 σ0.4783 σ0.2640 σ1.150
Malvar-He-Cutler0.8162 σ0.3401 σ0.2228 σ0.498

解析解(變異數)是 直通 0、雙線性 0.22656 、MHC 0.11426 ;開根號得 0、0.4760、0.3380,和模擬的 0.4783、0.3401 吻合到第三位。

直通的色度雜訊精確為零。 理由和第五節一樣:它把同一個數字複製到三個通道。

雙線性把感測器雜訊的一半以上轉成色度雜訊。 色度/亮度比 1.150——色度雜訊比亮度雜訊還大。

再把白平衡放進來,讓模型更真實。上一篇算過,一塊場景中性的灰在 raw 裡是歪的,要靠白平衡倍率拉回來(示範值 R ×2,13、G ×1,00、B ×1,50)。散粒雜訊在白平衡之前產生、白平衡之後被放大,所以白平衡後每個通道的雜訊變異數正比於它的白平衡倍率:。也就是說白平衡之後,CFA 上的雜訊不再是同分布的:紅位置的雜訊標準差是綠位置的 倍。

用 跑:

演算法色度/亮度
直通0.023730.000000.000000.000
雙線性0.010690.010610.007131.196
Malvar-He-Cutler0.019180.008010.005870.518

即使 CFA 上的雜訊在三個通道之間大小不同,直通的色度雜訊仍然精確是零。 這是結構性的,和雜訊分布無關。

所以可以下一個相當強的結論:

在一塊中性的平坦區域上,感測器產生的是純亮度雜訊;你在照片上看到的色度雜訊,是去馬賽克器造的。

這句話有邊界,要講清楚。第一,它假設場景在白平衡後是中性的;有顏色的區域,雜訊本來就會在色度軸上有分量。第二,它假設去馬賽克是這條管線上唯一的空間處理;真實 ISP 在去馬賽克之前可能已經做了 raw-domain 降噪。第三,它假設雜訊在 CFA 各像素之間獨立,不考慮讀取電路的橫向串擾與列雜訊。但在這三個假設下,結論是精確的,不是近似的。

而這正好解釋了一件每個人都知道但很少人問理由的事:為什麼每一條 ISP 管線裡都有一個獨立的色度降噪模組,而且它的強度通常遠大於亮度降噪。 因為色度雜訊不是從感測器來的,它是去馬賽克器在上一步剛剛製造出來的,而且製造得比亮度雜訊還多(雙線性 1.196 倍)。色度降噪在做的事,是把前一個模組剛犯的錯擦掉。

這也讓 ISO/TS 19567-2 的 Annex C 那句歸因變得更有意思。標準說量測結果與主觀評估的不一致是「due to different condition of noise」。雜訊條件確實是原因之一,但雜訊在去馬賽克這一段會被轉換成色度,而色度那一半沒有被量。 標準抓到了原因,抓到的是一半。

九、直通的真面目:一台單色相機

上一篇把「直通」當成一個有趣的反例:最笨的演算法在標準測試圖上是唯一完美的。這個說法可以講得更狠,而且更精確。

把一塊均勻的彩色色塊餵進去(白平衡後的線性 RGB),看每個演算法輸出什麼:

色塊輸入 (R, G, B)直通輸出均值直通空間標準差雙線性MHC
中性(0.50, 0.50, 0.50)(0.500, 0.500, 0.500)0.00000.00000.0000
中紅(0.70, 0.40, 0.40)(0.475, 0.475, 0.475)0.12990.00000.0000
飽和紅(0.90, 0.20, 0.20)(0.375, 0.375, 0.375)0.30310.00000.0000
葉綠(0.30, 0.55, 0.22)(0.405, 0.405, 0.405)0.14770.00000.0000
天藍(0.35, 0.50, 0.85)(0.550, 0.550, 0.550)0.18370.00000.0000

看「直通輸出均值」那一欄:三個通道永遠相等,而且那個值正好是 。

飽和紅 (0.90, 0.20, 0.20) → (0.375, 0.375, 0.375),因為 。天藍 → 0.550,葉綠 → 0.405。逐格驗證都對。

直通演算法不是一個去馬賽克器。它是一台單色相機,而且是一台用 0.25 / 0.50 / 0.25 這組權重當光譜靈敏度的單色相機——上一篇第一篇推出來的那個 。

於是上一篇那個「最笨的演算法在標準測試圖上是唯一完美的」可以升級成一句更尖銳的話:

ISO 12233 的解析度圖案,會給一個把彩色相機變成單色相機的演算法打滿分。

不是「量不到去馬賽克的失敗」,是「對色彩資訊的完全摧毀,在這個量測協定下是零誤差」。

而且從空間標準差那一欄還能看到另一件事:直通在飽和紅色塊上的空間標準差是 0.3031——同一塊均勻的紅,輸出是一個棋盤格。 的像素是 0.90(紅位置), 是 0.20(綠位置), 是 0.20(藍位置),均值 0.375,變異數 ,標準差 0.3031。

這正好給了我們第二個零參考量測。 第十一節會用到它。

十、噪聲讓「直通完美」失效的門檻

第八節說了 MHC 幾乎不平滑雜訊(增益 11/12),雙線性平滑得多(7/12)。那麼在有雜訊的情況下,「直通在中性圖上誤差為零」這個結論還成立嗎?

算一下交叉點。直通的訊號誤差為零、雜訊增益為 1,所以它的均方誤差就是 。另一個演算法的均方誤差是 ,其中 是無雜訊時的訊號誤差、 是雜訊增益。兩者相等時:

對 MHC,,所以 。 對雙線性,,所以 。

代進實測的 (中性光柵、振幅 0.4):

頻率 (cyc/px)演算法換成 8 位元階在 V = 0.5 上的 SNR
0.05雙線性0.008487/120.013133.331.6 dB
0.05MHC0.0046211/120.015994.129.9 dB
0.10雙線性0.033087/120.0512513.119.8 dB
0.10MHC0.0149111/120.0516313.219.7 dB
0.20雙線性0.119687/120.1854147.38.6 dB
0.20MHC0.0222711/120.0771519.716.2 dB
0.30雙線性0.226737/120.3512589.63.1 dB
0.30MHC0.0940211/120.3257183.13.7 dB
0.40雙線性0.2350211/120.81412207.6−4.2 dB

讀法:在這個雜訊水準以上,該演算法在均方誤差上贏過直通。

在 0.05 cyc/px 的平滑內容上,門檻只有 0.0131(3.3 個 8 位元階)——這是任何真實照片都會超過的雜訊水準。所以在平滑區域,直通是最差的演算法,因為它完全不做空間平均。在 0.20 cyc/px 的細節上,MHC 的門檻是 0.0772(19.7 階,SNR 16.2 dB),那要很暗的高 ISO 陰影才到得了。

所以上一篇「最笨的演算法是唯一完美的」要加一個很窄的成立範圍:只在「高頻中性內容 + 低雜訊」這個角落成立。 而實驗室量 ISO 12233 正好就是在這個角落裡量的——1 000–2 000 lx、基準 ISO、圖卡上的高頻楔形與斜邊。不是圖卡不夠彩色而已,是連曝光條件都被選在同一個角落。

但這個交叉點本身也要打個問號,而且理由是老問題的新形式。交叉點是用均方誤差定義的,而第八節已經證明:雙線性和 MHC 之所以能把均方誤差壓下去,是因為它們把亮度雜訊平滑掉了——同時把其中一大塊轉成色度雜訊。雙線性在 0.10 cyc/px 上超過門檻之後「贏」了直通,但它贏的方式是把 從 1.00 σ 降到 0.475 σ、把 從 0 拉到 0.478 σ。

在均方誤差這把尺上這是進步;在人眼那把尺上,你把一種溫和的雜訊換成了一種刺眼的雜訊。 交叉點是量測協定的產物,不是事實。這和上一篇整篇的主題完全同構,只是這次那把有問題的尺是我自己拿的。

十一、兩個零參考量測:繞開昨天說的那個循環

上一篇第八節留下了一個看起來封死的問題:

彩色圖卡難在哪?難在參考值。中性灰階可以用光度計量、可以照 ISO 14524 的 OECF 協定校準,而且反射率平坦所以對光源光譜幾乎不敏感。彩色圖卡的反射光譜一旦不平坦,量到的結果就和光源光譜、和相機光譜響應糾纏在一起——也就是上一篇整篇在講的同色異譜。要量彩色解析度,得先解決彩色準確度;而彩色準確度的 Vora 值平均只有 0.918。這是一個循環。

這個循環可以打開,而且不需要任何色度校準。關鍵在第五節那一步:中性輸入的輸出色度,參考值是 0,而 0 不需要校準。

下面把兩個量測寫成可以直接執行的協定。

量測 A:假色轉移函數 FCT(f)

  • 目標:中性正弦光柵組,或現成的低對比正弦西門子星(ISO 12233:2017 起的 s-SFR 星、或 ISO/TS 19567-1 的低對比星)。要求只有一個:光譜上是中性的,也就是反射率隨波長平坦。這和現行標準的圖卡要求完全一致,不需要新圖卡。
  • 拍攝:照 ISO/TS 19567-2 的環境條件(5 700 K ± 1 000 K、1 000–2 000 lx、不均 < 10 %、23 °C ± 3 °C)。白平衡照標準規定「render the centre of the image as neutral as possible」。
  • 處理:輸出轉回線性(去掉色調曲線與 gamma)。這一步是必要的,而且是這個協定唯一的線性化需求。
  • 計算:逐像素算 、。對每一個空間頻率 ,取色度的調變振幅 ,除以輸入的亮度調變振幅。
  • 參考值:0。
  • 報告:一條 FCT(f) 曲線。單一數字可以用 ,或者用色度 CSF 加權的積分——但因為誤差會鏡射到 ,加權要加在輸出頻率上,不是輸入頻率上。
  • 底線校正:白平衡不可能精確,所以要先在一塊均勻灰上量殘留色度當底線,從 FCT 裡扣掉。這一步取代了「色度校準」,而且它只需要一塊均勻灰,不需要色度計。

為什麼這繞開了循環:同色異譜改變的是「這塊灰在相機色空間裡的座標」,而 FCT 不管座標。 只要白平衡把那塊灰拉到中性(標準本來就要求),任何空間上變化的色度輸出都是演算法造的。參考值是零,而零在任何色空間裡都是同一個點。

量測 B:均勻彩色塊的空間變異

  • 目標:任何一塊夠大、夠均勻的彩色色塊。ColorChecker 的任一格就可以,而且不需要知道它的色度值。
  • 拍攝:同上。
  • 計算:在色塊內部,逐通道算空間標準差;扣掉由平坦灰場估出的雜訊水準。
  • 參考值:0(輸出應該在空間上是常數)。
  • 它抓什麼:退化解。一個把色度頻寬設成零的演算法(直通就是極端例子)在量測 A 上得滿分,但在量測 B 上會爆炸:飽和紅色塊上空間標準差 0.3031,是一個清清楚楚的棋盤格。雙線性和 MHC 在這一項上是精確的 0.0000。
  • 為什麼它不需要色度校準:同樣只要求「空間上是常數」,不要求那個常數等於多少。

兩個量測合起來,再加上現有的亮度 SFR,就把上一篇第一篇推的那個色差半寬 從兩端夾住了:

想知道的事量什麼目標參考值需要色度校準嗎
亮度頻寬有多寬亮度 SFR中性斜邊 / 斜星系統 MTF否(現行 ISO 12233)
亮度漏進色度多少FCT(f)中性光柵 / 中性星0否
色度頻寬有沒有被砍到零色塊空間變異任一均勻彩色塊0否
色度細節保留多少色度 MTF等亮度彩色目標需參考譜是

前三列都可以用現成圖卡、現成光源、零色度參考做出來。只有第四列需要解決上一篇說的那個循環——而前三列已經足夠抓住去馬賽克的兩種真實失敗模式(製造假色、摧毀色度)。

誠實的邊界:FCT 不是色度 MTF。它量的是「亮度 → 色度」這個方向的洩漏,量不到「色度 → 色度」的傳遞。一個演算法可以同時做到 FCT 低和色度 MTF 低(比如把色度整個低通掉),而色塊測試抓不到它,因為色塊測試只抓「色度完全消失」這個極端。要抓「色度被低通但沒消失」,還是需要有空間結構的彩色目標。所以循環沒有被完全打開,只是被打開了三分之二,而那三分之二是零成本的。

另外一個實務上的重點:FCT 在 raw 上跑最乾淨。 如果你在 ISP 輸出上跑,色度降噪會把 FCT 壓低——但那正好也是你想知道的數字。同一台相機的 raw-FCT 與 JPEG-FCT 之差,就是「這台相機的色度降噪出了多少力」,而那個力道的副作用是色度細節也一起被壓掉。這和上一篇那個「斜邊 2.8 × 對 dead leaves 1.8 ×、比值 1.56」是同一種診斷法:兩個協定量同一台相機,差值就是加工量。

十二、修訂後的量測總表

把上一篇那張表逐列修訂,改動的地方標粗:

階段演算法有標準嗎量測有標準嗎量測用什麼場景有量到失敗模式嗎
光譜 → 三個濾鏡響應無ISO 17321(SMI / SSF)ColorChecker 18 塊,單一光源部分
CFA 空間取樣無——否
白平衡(在去馬賽克之前)DNG 定資料格式,不定時機—ISO/TS 19567 規定「render the centre as neutral as possible」否
去馬賽克完全沒有ISO 12233(e-SFR / s-SFR)中性斜邊 / 斜星 / 楔形否——而且會給「輸出單色影像」打滿分
去馬賽克 + 降噪 + 銳化無ISO/TS 19567-1(2016,低對比 multiburst + 正弦星)、ISO/TS 19567-2(2019,彩色隨機圓盤)、IEEE 1858-2023圖卡已彩色化,量出來仍是亮度 SFR部分(量到紋理損失,量不到色度)
彩色混疊 / 假色無查不到(ISO 19084 只量位移)—否
色邊位置無ISO 19084:2015、IEEE 1858-2023(lateral chromatic displacement)白底黑點,對比 ≥ 40:1對鏡頭橫向色差:是。對去馬賽克假色:否(位移 = 0.00000 px)
色度雜訊無IEEE 1858-2023(visual noise,含色度分量)均勻場部分
色度解析度(色度 MTF)無查不到——
電荷 → DN無EMVA 1288 / ISO 15739均勻灰場是
ColorMatrix / ForwardMatrixDNG Ch.6——可逆,無失敗模式

上一篇的結論是:

有量測標準的地方,量測協定被選在該階段不會失敗的工作點上。

今天補三層。

第一層,這個選擇是被寫下來的,不是被隱藏的。 ISO/TS 19567-2 的 Scope NOTE 明講結果「sometimes inconsistent with subjective evaluations」,Annex C 專章討論,Introduction 說兩條 SFR 交叉時排序不清。標準不是在裝不知道。

第二層,委員會修補的是輸入端,不是輸出端。 圖卡從高對比變低對比(ISO 12233:2014)、從中性變彩色(ISO/TS 19567-2:2019)、從週期變隨機(dead leaves)、從單一方向變徑向與切向(ISO 12233:2023)。每一次都是讓刺激更像真實場景。但量測量從頭到尾是一條亮度 SFR。輸入端的修補便宜,輸出端的修補要重新定義一個物理量。

第三層,缺的那個量測其實不貴。 第十一節那兩個協定不需要新圖卡、不需要色度計、不需要解決同色異譜。它們之所以沒被定義,我的推論(這是推論,不是查到的理由)是:沒有人把「假色」看成一個連續的量。 它一直被當成一個二元的缺陷——有摩爾紋 / 沒摩爾紋——所以量法是目視判讀楔形。而一旦你把它寫成 ,它就是一條曲線,可以積分、可以加權、可以排序、可以寫進規格書。

上一篇最後說「標準連量哪一種場景都是選出來的」。今天的版本是:

標準選的不只是場景,還有座標系。ISO 12233 這一族從 2000 年到 2023 年,量的始終是同一個純量——亮度的調變度。而去馬賽克這個模組的輸入是一個純量(CFA),輸出是三個純量,它唯一可能犯的錯就是在那多出來的兩個維度上犯錯。用一個純量去量一個三維輸出,量不到的那兩維,正好就是這個模組存在的理由。

🧠 記

ISO/TS 19567-2:2019 的 Scope NOTE 自己寫著結果「sometimes inconsistent with subjective evaluations (See Annex C)」,Annex C 就叫〈本文件量測方法的結果與主觀評估之間的不一致〉,Introduction 把歸因寫成「due to different condition of noise」。標準不是在裝不知道。 上一篇說「實驗室分數與體感對不上是結構問題」,委員會 2019 年就寫進正文第一頁了。

更正一:那張 dead leaves 圖卡不是中性的。 ISO/TS 19567-2:2019 Introduction:「randomly arranged circles of various sizes and colour with a limited contrast」,背景是灰。所以 Artmann & Wueller 2012(SPIE 8293, 829305, DOI 10.1117/12.907303)提的彩色目標是七年後進了標準,不是「十四年沒進」。但缺口只是位置變了:圖卡彩色化了,量出來的仍然是一條亮度 SFR。 Introduction 明言「The measurement results are presented in SFR curves from which a single value … is derived」,而且承認兩條 SFR 交叉時「relative ordering … is less clear」,Part 1 更直接:主觀上誰好「is dependent on the dominant frequency of the image」——單一 acutance 數字在曲線交叉時沒有排序能力。 另外 ISO/TS 19567-1:2016(低對比 multiburst + 低對比正弦西門子星)比 Part 2 早三年,上一篇沒提。

更正二:「色度那一格查不到」是錯的。ISO 19084:2015 存在。 Scope 只定義與量法、「does not specify the allowable amount」;定義明確包含「image processing factors」,Note 2 是「the displacement of the R and the B channel in relation to the G channel」。圖卡是白底黑點(或 V 圖案),對比 ≥ 40:1 且 ≤ 10 000:1,4:3 影像上 ≥ 20×15 點、點徑 ≥ 10 px,平面度 < 寬度 1,5 %,5 700 K ± 1 000 K、1 000–2 000 lx、不均 < 10 %,和 ISO 17850 共用同一張點圖卡。IEEE 1858-2023(2023-08-04,取代 2016 版)有 chroma level 與 lateral chromatic displacement。 但——我算出去馬賽克在中性邊上造的色邊,質心位移恰為 0.00000 px,只有振幅(高斯模糊 σ = 0,5 px、5:1 階高:雙線性 max|C| = 階高的 9,41 %、MHC 3,08 %、直通 0;σ = 0,8 時 4,93 % / 1,31 %;σ = 1,2 時 2,62 % / 0,79 %)。ISO 19084 量位置,所以對去馬賽克假色在定義上是盲的。 而且它保留 ≥ 40:1,正是 ISO 12233:2014 為了裁切而放棄的對比。

更正三:上一篇那張「雙線性 MTF」是綠通道,不是亮度。 重跑:雙線性綠 0.988/0.952/0.897/0.827/0.750/0.673/0.603/0.548/0.512,幾乎逐格等於上一篇那欄;真正的亮度 φ_L MTF 是 0.982/0.928/0.845/0.741/0.625/0.509/0.405/0.322/0.268;紅通道在 0.45 cyc/px 只剩 0.024(紅子晶格水平取樣率 0.5 cyc/px,自己的 Nyquist 在 0.25)。用綠通道代表解析度會系統性高估,高估的幅度正好是紅藍被抹掉的那部分。 MHC 三通道在中性光柵上響應一致,所以那一欄沒出事;峰值我算到 1.061 @ 0.15 cyc/px(過衝 6.1 %),上一篇 1.058。

新結果一:假色轉移 FCT(f) = 輸出色度調變 / 輸入亮度調變。 中性輸入 ⇒ 輸出色度全部是誤差,參考值 0。實測(振幅 0.4、16 均勻相位):直通在所有頻率、兩個方向上精確 0.000000(結構性——同一數字複製三通道,);雙線性 0.45 cyc/px 水平 0.5974、對角 0.6303;MHC 0.20 cyc/px 0.0566 對雙線性 0.2116。

新結果二:假色的頻率是 f → 0.5 − f 的鏡射。 φ_C1 的載波是 (0.5, 0.5)、φ_C2 是 (0.5, 0) 與 (0, 0.5),所以殘留解調落在載波減訊號。輸入 0.45 cyc/px(= 19.63 cyc/deg,螢幕 100 % 檢視)的色度誤差落在 0.05 cyc/px = 2.18 cyc/deg,振幅是輸入的 44–45 %。 Mullen 1985(J. Physiol. 359, 381–400)量出色度 CSF 是低通、低頻不衰減、截止 11–12 cyc/deg(亮度是帶通、峰值約 4 cyc/deg)。換算:螢幕 100 % 檢視 α = 0,02292 度/像素,色度截止 = 0,2521–0,2750 cyc/px(Nyquist 的 50–55 %);300 ppi 印刷 α = 0,01939,截止 0,2133–0,2327 cyc/px(43–47 %)。所以去馬賽克誤差是把看不見的高頻亮度搬到最看得見的低頻色度,幾乎不損失振幅。反過來低頻亮度的色度誤差跑到 0.45 cyc/px,完全看不見。

更正四(主線):「先驗的代價是負的」算錯了帳。 成本欄:MHC 在等亮度色度上每一個頻率都輸雙線性(0.05 時 −6.03 dB、0.20 時 −4.28 dB、0.45 時 −0.16 dB)。收益欄:MHC 在中性內容上少造假色 0.10 時 +6.56 dB、0.20 時 +11.45 dB、0.25 時 +10.78 dB(對角 0.20 時 +8.06 dB)。成本 −4.28 dB、收益 +11.45 dB,而且成本發生在輸入頻率(0.20 cyc/px = 8.73 cyc/deg,已在色度 CSF 下降段;0.25 以上不可見),收益發生在鏡射頻率(色度 CSF 的平坦高敏感區)。先驗用一段看不見的色度頻寬,換掉一段最看得見的假色。帳是正的,可見度加權後更正。 Ruderman, Cronin & Chiao 1998(JOSA A 15(8) 2036–2045)確立自然場景錐響應在對數空間去相關成一亮度二色度對立軸;常被引的「1 : 0.2 : 0.02」標準差比我沒核到原文,已標存疑,沒拿來當論據。

新結果三:色度雜訊是去馬賽克器造的,不是感測器給的。 線性去馬賽克是週期 2×2 的 LPSV 濾波器,雜訊增益 = Σh²,算出三個精確分數:直通 12/12 = 1、雙線性 7/12 = 0,5833、MHC 11/12 = 0,9167(MHC 幾乎不平滑雜訊,因為梯度修正是高通——和 MTF > 1 同一件事)。雜訊投影到三軸:直通 σ_L = 0,9993σ、σ_C1 = σ_C2 = 精確 0;雙線性 σ_L = 0,4752σ、σ_C1 = 0,4783σ、σ_C2 = 0,2640σ,色度/亮度 = 1,150;MHC 0,8162 / 0,3401 / 0,2228,比 0,498。加進真實白平衡倍率後(散粒雜訊在 WB 前產生、WB 後放大,故 σ_c² ∝ 白平衡倍率,R 位置雜訊是 G 的 √2,13 = 1,46 倍),直通的色度雜訊仍然精確為零,雙線性比值升到 1,196。這就是為什麼每條 ISP 都有獨立且強力的色度降噪——它在擦掉前一個模組剛犯的錯。 邊界:假設白平衡後中性、去馬賽克是唯一空間處理、CFA 雜訊像素間獨立。

新結果四:直通不是去馬賽克器,是一台單色相機。 均勻彩色塊輸入,直通輸出三通道永遠相等且精確等於 φ_L = (R + 2G + B)/4:(0.90,0.20,0.20) → 0.375、(0.35,0.50,0.85) → 0.550、(0.30,0.55,0.22) → 0.405。所以「ISO 12233 量不到去馬賽克」要升級成:ISO 12233 的解析度圖案,會給一個把彩色相機變成單色相機的演算法打滿分。 而它在飽和紅色塊上的空間標準差是 0.3031(棋盤格),雙線性與 MHC 是精確 0.0000——這就是抓退化解的零參考量測。

新結果五:直通「完美」的成立範圍很窄。 交叉雜訊 σ* = ε/√(1−g):MHC 是 3,4641ε、雙線性 1,5492ε。0.05 cyc/px 的平滑內容上門檻只有 0,0131(3,3 個 8 位元階)——任何真實照片都超過,所以平滑區域直通最差(它完全不做空間平均);0.20 cyc/px 上 MHC 的門檻是 0,0772(19,7 階,SNR 16,2 dB)。直通只在「高頻中性 + 低雜訊」這個角落無敵,而 ISO 12233 正好在這個角落量(1 000–2 000 lx、基準 ISO、高頻楔形)。 但交叉點本身是均方誤差定義的,而低通演算法贏的方式正是把亮度雜訊換成色度雜訊——交叉點是量測協定的產物。

打開循環:兩個零參考量測。 上一篇說「要量彩色解析度得先解決彩色準確度,而 Vora 只有 0.918,這是循環」。(A) FCT:中性圖卡、線性化、算 φ_C1/φ_C2 的調變除以輸入亮度調變,參考值 0;用均勻灰上的殘留色度當底線扣除,取代色度校準。(B) 均勻彩色塊的空間標準差,參考值 0,不需要知道色塊的色度值。 同色異譜改變的是座標,而零在任何色空間裡都是同一個點。加上現行亮度 SFR,三件事都零成本;只有「色度細節保留多少」(色度 MTF)還需要彩色參考譜。循環被打開三分之二。 FCT 在 raw 上跑最乾淨;raw-FCT 與 JPEG-FCT 之差就是色度降噪的出力,和上一篇「斜邊 2.8 × 對 dead leaves 1.8 ×、比值 1.56」是同一種兩協定差值診斷法。

修訂後的規律:標準選的不只是場景,還有座標系。ISO 12233 這一族二十三年來量的始終是同一個純量——亮度調變度。而去馬賽克的輸入是一個純量、輸出是三個純量,它唯一可能犯的錯就在多出來的那兩維上。用一個純量量一個三維輸出,量不到的那兩維,正好就是這個模組存在的理由。 委員會二十多年來修補的都是輸入端(對比 40:1 → 4:1、中性 → 彩色、週期 → 隨機、水平垂直 → 徑向切向),因為輸入端便宜;輸出端要重新定義一個物理量。而我推論(非查到)假色一直沒被量,是因為沒有人把它看成連續量——它一直被當成「有摩爾紋 / 沒摩爾紋」的二元缺陷。寫成 FCT(f) = |C(f)|/|L(f)| 之後,它就是一條可以積分、加權、排序、寫進規格書的曲線。

✍️ 實踐

把 FCT 自己跑一次。 這是今天最短、最硬的一段,四十行 numpy 之內,而且不需要任何圖卡或相機:

  1. 建一張 256×256 的完全中性水平正弦光柵:R = G = B = 0.5 + 0.4·sin(2πfx + φ)。注意——不要建彩色的,今天整個實驗的重點就是輸入沒有顏色。
  2. 用 RGGB 遮罩取樣成單通道 CFA。先驗證 maskR + maskG + maskB ≡ 1,這是全部結論的基礎。
  3. 跑三個去馬賽克器:直通、雙線性、Malvar-He-Cutler(四組 5×5 核心,全部除以 8;先檢查每個核心的係數和恰為 8,DC 增益不等於 1 的核心一定有抄錯)。
  4. 算 C1 = (R − 2G + B)/4、C2 = (R − B)/4,取 RMS 乘 √2 再除以 0.4。
  5. 對 linspace(0, 2π, 16, endpoint=False) 這 16 個相位取平均。相位一定要掃,否則在 0.25 cyc/px 那一點紅藍子晶格剛好落在取樣零點上,你會得到純粹由相位造成的假結果。

先確認直通在所有頻率上是 0.000000(不是很小,是零;如果不是零,遮罩沒互斥)。再確認雙線性在 0.45 cyc/px 落在 0.597 附近、MHC 在 0.20 cyc/px 落在 0.057 附近。

然後做那個會改變你直覺的一步:把輸出的 C2 做 FFT,看峰值在哪個頻率。你會看到輸入 0.45 的誤差出現在 0.05。看到這個鏡射之後,你對「為什麼細密紋理會變成大片彩色雲紋」就不需要任何解釋了。

量你自己的雜訊增益。 不需要圖卡:拍一張均勻的東西(對著白牆嚴重失焦、或裝上鏡頭蓋拍一張長曝的暗場也行),用不同演算法解同一張 raw,然後算兩件事——每個通道的空間標準差,以及 (R − 2G + B)/4 和 (R − B)/4 的標準差。你會看到色度那兩個數字隨演算法變,而它們在感測器上並不存在。 這是第八節那張表的實機版。

用一塊飽和色塊抓退化解。 拍一張色卡(或任何一塊均勻的飽和顏色,紅色的書背、藍色的杯子都可以),用不同去馬賽克器解,算色塊內每個通道的空間標準差。正常演算法應該接近雜訊水準;如果某個設定下這個數字跳到 0.1 以上,那個設定正在丟掉色度資訊。 這一項不需要知道那塊顏色是什麼顏色。

驗證位移為零但振幅不為零。 拍一條中性的高對比邊(白紙貼黑紙,對焦準,光線均勻),解出來之後做兩件事:(a) 沿著邊的法線取剖面,分別算 R、G、B 的邊緣擴散函數微分之後的質心,看 R−G 與 B−G;(b) 算同一區域的 √(C1² + C2²) 最大值。你應該會看到質心差很小(鏡頭橫向色差的量級),但色度振幅明顯不為零。 前者是 ISO 19084 在量的,後者沒有任何標準在量,而後者才是你在 100 % 放大時看到的彩邊。

算你自己看片條件下的色度可見頻率。 , 是一個影像像素在顯示時的實體尺寸、 是觀看距離;色度可見上限 cyc/px。在那個頻率以上,色度細節的多寡你看不出來;而在 落回那條線以下的地方,假色你一定看得出來。 算完這個數字,你會知道自己該在 100 % 檢視時盯哪一段頻率。

最後一個一分鐘就能做的:把上一篇那個「用同一張 raw 切換去馬賽克器」的實驗重做一次,但這次不要看 RGB 差值,只看色度差值。把五個版本轉成 Lab,只留 a* 和 b*,把差值放大 10 倍。你會發現平坦區域的色度差不是零(那是各演算法製造的色度雜訊),而細紋區域的色度差很大(那是假色)——而亮度差幾乎看不到。 去馬賽克演算法之間的差異,絕大部分不在亮度上。

🔗 延伸學習


💬 問 AI

我在研究數位相機的色度量測這一段,具體問題是:去馬賽克在中性場景上把亮度轉成色度(假色與色度雜訊),而我找不到任何標準在量這件事。請盡量引用標準條文編號、論文出處或參考實作原始碼,並嚴格區分「來源明確這樣說」與「你自己的推論」。
 
第一組:我沒查到的標準
 
1. 2026 年有沒有任何 ISO、IEEE、CIPA、CPIQ 或 EMVA 的標準或技術規範,定義「色度空間頻率響應」、「假色量」、「chroma aliasing」或「luminance-to-chroma crosstalk」的量測?我只找到 ISO 19084:2015(色位移)、IEEE 1858-2023 的 chroma level 與 lateral chromatic displacement、以及彩色摩爾紋的目視楔形判讀。如果真的沒有,ISO/TC 42 或 IEEE CPIQ 工作組有沒有公開討論過為什麼不做?
 
2. ISO/TS 19567-2:2019 的 4.5 Test Chart 與 5.2 Measurement method 條文(公開預覽讀不到):圖卡的圓盤色度是怎麼規定的?有沒有規定色度容差或色域?6.2 的 SFR 曲線是在哪一個通道或哪一個亮度定義上算的?ISO/TC 42 提供的參考圖檔是彩色的還是灰階的?
 
3. ISO 19084 的 4.3、4.4 節(公開預覽讀不到)對 chromatic displacement 與 radial chromatic displacement 的數值定義是什麼?單位是像素還是相對畫面高度?有沒有人研究過去馬賽克演算法對這個讀數的貢獻?
 
第二組:驗證我的計算
 
4. 我算出線性去馬賽克的雜訊增益 Σh²:直通 12/12、雙線性 7/12、Malvar-He-Cutler 11/12(RGGB、5×5 核心、iid CFA 雜訊)。這三個數字對嗎?AHD、VNG、PPG、DCB、LMMSE、AMaZE 以及常見的學習式方法各是多少(對非線性方法用小訊號近似)?有沒有論文系統性報過去馬賽克的雜訊增益?
 
5. 我算出在中性場景上,直通的色度雜訊精確為零,而雙線性把色度/亮度雜訊比推到 1.15(iid)或 1.20(白平衡加權)。推論是「照片上的色度雜訊主要是去馬賽克器造的,不是感測器給的」。這個推論有沒有漏洞?raw-domain 降噪、色間相關雜訊、列雜訊、串擾會怎麼改變這個結論?有沒有人實測過去馬賽克前後的色度雜訊?
 
6. 我算出假色的頻率是 f → 0.5 − f 的鏡射(φ_C1 載波 (0.5,0.5)、φ_C2 載波 (0.5,0) 與 (0,0.5)),而且 0.45 cyc/px 的中性輸入會產生 0.05 cyc/px、振幅 44–45 % 的色度誤差。這個鏡射關係有沒有論文正式寫過?Alleysson、Susstrunk、Herault 的頻域去馬賽克框架裡應該有等價的敘述,請指出在哪裡。
 
7. 我算出 MHC 在等亮度色度光柵上每一個頻率都輸雙線性(0.05 時 −6.03 dB、0.20 時 −4.28 dB),但在中性光柵上少造 6–11 dB 的假色。有沒有論文把「假色抑制」和「色度解析度」當成兩個分開的指標來比較演算法?有沒有標準化的假色量指標?
 
第三組:可見度
 
8. Mullen 1985 的 11–12 cyc/deg 截止是在特定亮度與視野下量的。在一般看照片的條件(100–300 cd/m²、幾度視角)下,色度截止實際是多少?有沒有比 Mullen 更新、更適合當工程加權函數的色度 CSF?IEEE 1858 的 visual noise 用的是哪一條色度 CSF,出處是什麼?
 
9. 假色的可見度除了頻率之外還受什麼影響?同一個振幅的色度誤差,落在中性背景上和落在有顏色的背景上,可見度差多少?有沒有把「色度誤差可見度」建模成一個像 acutance 那樣的單一數字的嘗試?
 
第四組:我提的那兩個量測
 
10. 我提兩個零參考量測:(A) 中性圖卡上的假色轉移 FCT(f) = |C(f)| / |L(f)|,參考值 0;(B) 均勻彩色塊的空間標準差,參考值 0。這兩個有沒有已經存在的等價物(可能叫別的名字)?如果要寫成標準,最大的技術障礙是什麼——我猜是白平衡殘差與線性化,但可能有我沒想到的。
 
11. FCT 量不到「色度被低通但沒消失」。有沒有辦法在不使用色度校準參考值的前提下量到色度頻寬?我想過用兩塊已知相對關係的顏色(不需要絕對色度值)做成光柵,這條路行得通嗎?
 
第五組:反方
 
12. 請給我最強的反方論證:有沒有可能「用一條亮度 SFR 量一個三通道輸出」根本不是缺陷,而是正確的工程取捨?請用真實照片的色度誤差統計、使用者抱怨的實際分布、或評測與主觀評分的相關性資料認真論證,不要敷衍。特別是:如果假色在現代 ISP 裡已經被色度降噪壓到無所謂的程度,那量它就沒有意義,而那反而變成量「色度降噪砍掉多少真色度」才重要——這條路要怎麼走?
 
13. 另外請反駁我對「先驗的帳是正的」這個結論。我是拿 −4.28 dB 的色度損失對 +11.45 dB 的假色抑制,再用色度 CSF 的截止頻率論證前者比較不可見。這個比較有沒有量綱上或方法上的錯誤?兩個 dB 值分母不同(一個是色度訊號功率、一個是輸入亮度調變),直接相減合不合法?
 
每一點請標明你的把握程度。查不到出處的請直接說查不到,不要用推測填空。第 1、2、3 點我特別懷疑公開流傳的說法多半是輾轉引用而沒有一手條文依據。