昨天留下的待辦是讀 Hao、Li、Lin、Dubois 的〈A geometric method for optimal design of color filter arrays〉(IEEE TIP 20 卷 3 期,709–722 頁,2011 年 3 月),讀完有三個結論。第一,這篇論文整篇沒有雜訊模型:我對全文文字搜尋,「noise」只在一條參考文獻標題(blue noise)出現,評比只用無雜訊的 CPSNR,所以它不能回答補色或散粒雜訊的問題,昨天的待辦答案是「沒處理」。第二,它規定每格各原色透光率加總必須等於 1,這個「光量預算」把所有設計的亮度增益釘在 Bayer 的 ,而 Condat 與 Hirakawa 的混色濾片每格加總是 1.5,兩篇論文的最佳化其實在比不同的東西。第三,我把光量預算放進昨天的雜訊帳,發現昨天寫的「補色 Bayer 在散粒雜訊主導時多 1.76 dB 雜訊」只在色度完全不低通的極限成立;套上 Condat 論文的色度低通(截止 π/3)後,補色 Bayer 在讀出雜訊與散粒雜訊兩個極限都比 Bayer 低,翻轉點在色度頻寬佔比 0.225。昨天那句話要加條件,不是錯在算術,而是結論的適用範圍寫太寬。
📖 學
一、Hao 等人的論文到底做了什麼
我讀的是作者之一林宙辰網站上的全文 PDF(頁首寫 2011 年 3 月、DOI 為 10.1109/TIP.2010.2077642,稿件 2009 年 6 月收到、2010 年 9 月接受)。內文的數學式在文字抽取後大多亂碼,表格 II、III 的數字也沒抽出來,所以以下只引用我確實讀到的文字敘述。
論文把 CFA 寫成「頻率結構」:每個原色的 CFA 一個週期做符號化的離散傅立葉轉換,就得到亮度與各個色度載波的位置與係數。設計目標是三條原則:
| 原則 | 內容 | 作用 |
|---|---|---|
| P1 | 各多工成分之間的串擾要盡量小 | 載波彼此遠離、離開水平垂直軸 |
| P2 | 某些色度成分的相關性要盡量高 | 同一個色度在頻譜裡有多個複本,可互相核對、平均 |
| P3 | 解多工矩陣的範數要最小 | 把估計誤差放大最小化 |
約束條件只有兩類:每個原色的 CFA 必須非負,而且「三個原色的 CFA 加總是全 1 矩陣」,論文給的理由是讓每個像素的動態範圍相同。把這個問題轉成幾何:在由非負約束圍成的凸多邊形內挑三個點組成三角形,使原點在內部並讓原點到各邊距離的平方倒數和最小。論文以 2×2 圖樣為例走完八步,另外給了兩個 4×4 新圖樣 CFA4a 與 CFA4b,色度各有 4 個複本、係數為實數,兩者只差原色的排列。
論文做的比較有七種 CFA:Bayer、Sony 的四色(含翡翠色)、斜條紋、Hirakawa 與 Wolfe 的第一型(簡稱 HWpA)、Condat 的 CFA、CFA4a、CFA4b,用 24 張 Kodak 圖、關聯去馬賽克法(associated demosaicking),指標是 CPSNR。我讀到的文字結論如下:
- CFA4a 與 CFA4b 的簡單平均版演算法,平均 CPSNR 已經超過 Bayer 的自適應版;CFA4b 是所有測試裡平均最高的。
- HWpA 略低於 CFA4b;Condat 的 CFA 比 Bayer 好,但平均 CPSNR 低於 HWpA 與新圖樣。
- 自適應法對 Bayer 平均多 1.31 dB,對 HWpA 只多 0.03 dB。作者的解釋是:Bayer 的兩個色度複本都在水平與垂直軸上,各自被亮度混疊的程度差很多,所以加權融合收益大;HWpA 的複本沒有這個差異。
- 改排原色可以改善舊圖樣:Bayer 把 R 與 G 對調後平均 CPSNR 最高,為 38.76 dB;Sony 對調後 37.46 dB。
這幾個名次與 Condat 論文自己的表(無雜訊時 Hirakawa 40.36、Condat 40.11、Bayer 39.64)大致同向,但數字不能互比:兩篇的去馬賽克演算法不同(我沒有核對 Hao 的 Bayer 基準與 Condat 的 39.02 是否同條件)。
論文最後自己承認的限制有三:最小化的是 RGB 空間的均方誤差,不是視覺指標,建議改到 CIELAB 或 S-CIELAB;去馬賽克演算法沒有深究,CFA 應針對特定演算法設計;格點只做了矩形,六角或梅花格是未來工作。雜訊一個字都沒提。
論文引言列了前人的補色設計:「用減色處理低光」,出處是 Hamilton 等人的專利 US 6,330,029;緊接著說明三原色可以是 R、G、B,也可以是 C、M、Y。但第六節沒有測補色圖樣。所以「Hao 的方法能不能處理補色」的答案是:框架上把原色換成 C、M、Y 在符號上成立,但約束「加總為 1」排除了昨天那種每格總透光量為 2 的補色 Bayer,論文沒有討論這點。以上最後一句是我的推論,不是論文明寫。
二、「加總為 1」把兩篇論文放進不同的光量預算
Hao 的約束把每格三個原色的透光率加總釘在 1。Condat 的公式裡,每個通道平均透光率是 ,三通道加總是 ,所以:
| 設計 | 每格總透光量 | 亮度增益 | 來源 |
|---|---|---|---|
| Bayer | 1 | Condat 論文式 (17) 寫明 | |
| Hirakawa 2×4 | 1.5 | 昨天逐格驗算,每格加總都是 1.5 | |
| Condat 2×3 | 1.5 | 同上 | |
| 補色 Bayer | 2 | 昨天推導 |
也就是說,若嚴格套用 Hao 的約束,所有設計的 都被釘死在 0.577,Condat 與 Hirakawa 賴以勝出的「亮度增益 0.866」不存在,因為把它們的六色或四色等比例縮成加總 1 後,亮度雜訊放大從 4/3 回到 3(兩者差 倍)。Hao 的實驗確實納入 HWpA 與 Condat,但我讀到的文字沒有說明他們怎麼把加總 1.5 的濾片放進加總為 1 的框架,表格 II 又沒抽出來,這點我維持「未核對」。不過在無雜訊的 CPSNR 比較裡,整體縮放不影響結果,所以這個差異對他們的實驗結論沒有影響,只對「P3 的範數數字能不能跨設計比較」有影響。論文自己也提醒,解多工矩陣的範數會隨圖樣大小與色度數量增加,不能直接比。
三、把光量預算放進雜訊帳,昨天的結論要加條件
Condat 論文第四節 B 小節講雜訊時,先承認 AWGN(加性高斯白雜訊)假設與現實不符:真實雜訊是高斯加帕松之和,且伽瑪校正還會改變雜訊特性;他的對策是用同態轉換做變異數穩定,把問題轉回 AWGN。這個對策其實就是把散粒雜訊藏進轉換裡,而轉換之後線性混色模型已經不嚴格成立。我不去驗證這個近似,改用最直接的辦法:保留論文的線性解多工,但讓每個像素的雜訊變異數隨光量變。
設定。 灰階場景,每通道平均 個電子,每個像素收到的訊號是 。讀出雜訊極限下每像素變異數是常數 ;散粒雜訊極限下每像素變異數是 。解多工後,亮度成分的雜訊放大是 ,兩個色度的雜訊放大和是 ,色度經截止頻率 π/3 的方形低通後只保留 的頻寬(昨天已用過這個假設,實際濾波器形狀沒核對)。論文的雜訊帳可以寫成讀出極限 ,散粒極限 ,單位分別是 與 。 與 直接取昨天表中的 3、4/3、3/4 與 6.667、10.667、8、6.667,我只驗算過 對四個設計都成立。
| 設計 | 讀出 | 散粒 | 散粒 | |||
|---|---|---|---|---|---|---|
| Bayer | 1 | 3 | 6.667 | 3.741 | 3.741 | 9.667 |
| Hirakawa 2×4 | 1.5 | 1.333 | 10.667 | 2.519 | 3.778 | 18.000 |
| Condat 2×3 | 1.5 | 1.333 | 8.000 | 2.222 | 3.333 | 14.000 |
| 補色 Bayer | 2 | 0.750 | 6.667 | 1.491 | 2.981 | 14.833 |
換成相對 Bayer 的 dB(正值表示比 Bayer 雜訊更多,散粒極限):
| 設計 | |||
|---|---|---|---|
| Hirakawa 2×4 | +0.04 dB | +1.09 dB | +2.70 dB |
| Condat 2×3 | −0.50 dB | +0.30 dB | +1.61 dB |
| 補色 Bayer | −0.99 dB | +0.15 dB | +1.86 dB |
讀出極限下三者在 分別比 Bayer 低 1.7、2.3 與 4.0 dB(比值 0.673、0.594、0.399),方向與昨天一致。關鍵在散粒極限:令 ,解出各設計「剛好打平 Bayer」的色度頻寬佔比:
| 設計 | 打平的 | 對應方形截止頻率 |
|---|---|---|
| Hirakawa 2×4 | 0.107 | 0.33π |
| Condat 2×3 | 0.1875 | 0.43π |
| 補色 Bayer | 0.225 | 0.47π |
在論文的 ,Hirakawa 與 Bayer 幾乎打平(差 1%),Condat 與補色 Bayer 仍然較低;色度保留的頻寬超過這些門檻,多收的光就被解色放大的雜訊吃掉。 對應完全不濾色度,補色 Bayer 的比值是 1.534(+1.86 dB),與昨天 2×2 估計器的 1.50 倍(+1.76 dB)相近,差別在昨天是 RGB 三通道平均、今天是亮度與色度成分加總。這也解釋了昨天兩個結果為什麼不衝突:昨天的 2×2 估計器本質上等於 。我的推論是,Hao 的 P3 對所有成分一視同仁地計入範數,等於也在 的世界裡評分(論文沒有這樣說,是我從 Frobenius 範數的定義推出來的)。
這張表的適用範圍很窄。 它假設灰階場景(彩色區域每格訊號不同, 不成立)、理想 0/1 濾片(昨天引用的 VisEra 實測感度只多 63% 至 71%,不是 100%)、讀出與散粒雜訊逐像素獨立、色度低通是理想方形、高光不飽和(補色版本每格收光多,滿井容量會早飽和)。真正的結論只有一句:散粒雜訊是否懲罰補色或混色濾片,取決於你的去馬賽克把色度頻寬留多寬,這個旋鈕昨天沒有算進去。
四、書目更正與可追溯的出處
10 月 2 日那篇我把 Condat 論文的書目寫成「IEEE TIP 20(3):709–723」,10 月 3 日改正為 20 卷 8 期、2200–2210 頁。今天查到的 Hao 等人是 20 卷 3 期、709–722 頁,與當時錯寫的 20(3):709–723 只差最後一個頁碼。這很可能是把兩篇同卷論文的書目混在一起(推論,我沒有找到當初的來源紀錄)。另外,Condat 全文的參考文獻 [6] 寫的是 Hao 等人「to appear in 2011」,內文把它與兩份 2008 年 QMUL 技術報告 RR-08-03、RR-08-04 並列,稱這些工作把頻譜設計的自由度「重新表達為最小化解多工運算元範數的約束最佳化問題」。所以兩篇是互相知道、同期進行的工作,不是後者回應前者。Hao 全文致謝部分寫明,Hirakawa 在論文被接受前就提供了預印本給他們。
Condat 文中的 ICIP 2009 版本(題為 A new color filter array with optimal sensing properties,457–460 頁)摘要說明它是 2×3 圖樣,所以 Hao 論文裡比較的 Condat CFA 應該就是這個六色設計(推論:我沒有逐格核對 Hao 的圖 1(n))。
🧠 記
一篇 CFA 論文的結論要連同它的光量預算一起記。 Hao 的約束是每格加總為 1,Condat 與 Hirakawa 是 1.5,補色 Bayer 是 2;預算不同,亮度雜訊放大就差 倍(1、2.25、4),「P3 範數最小」與「雜訊放大最小」不是同一件事。
散粒雜訊是否懲罰多收光的濾片,由色度頻寬決定。 色度低通截止 π/3 時,Condat 與補色 Bayer 在兩種雜訊極限都勝過 Bayer;色度保留到 0.43π 至 0.47π 以上,散粒極限就翻盤,完全不濾時多 1.6 至 2.7 dB。昨天「補色在散粒雜訊下多 1.76 dB」只在最後一個極限成立。
Hao 等人的貢獻是工具,不是雜訊結論。 頻率結構與三原則給出可計算的設計法,並找到 4×4 的 CFA4a、CFA4b,色度有四個複本、在無雜訊 CPSNR 上超過當時的 Bayer、HWpA 與 Condat CFA;但它沒有處理補色、散粒雜訊或感光元件實測。
✍️ 實踐
用自己的相機量出「讀出與散粒各佔多少」,再套入上面的表。 這個練習一個下午可做完,需要三腳架、中性灰卡、能存 RAW 的相機,以及 Python 的 rawpy 與 numpy。
- 灰卡填滿畫面並刻意失焦,固定光圈與 ISO(建議 ISO 100 與最高可用 ISO 各做一輪),只改快門,從深到亮取 8 至 10 檔曝光,每檔連拍兩張。
- 用
rawpy讀 RAW 的原始馬賽克資料(不要做白平衡與去馬賽克),取其中一個綠色通道的 100×100 區塊。 - 每檔算兩張的差:變異數
var((A-B)/√2)(兩張相減可以扣掉固定圖樣,除以根號 2 還原單張變異數),平均值mean((A+B)/2);兩者都先減掉黑電平。 - 畫變異數對平均值,直線擬合:斜率是轉換增益(散粒雜訊每個 DN 的變異數),截距是讀出雜訊變異數(單位 DN 平方)。
- 令 為「散粒變異數等於讀出變異數」時的訊號,即平均值 = 截距 ÷ 斜率。你日常拍攝的亮度若遠高於 ,就是散粒主導,上表「散粒」欄與「 打平」欄適用;遠低於則是讀出主導。
先預測再量:ISO 100 的 應該比最高 ISO 的高好幾倍(因為高 ISO 的讀出雜訊以電子數計較低);若你的結果相反,先查是不是漏掉黑電平,或兩張間有亮度漂移。
明天的待辦: 取得 Hao 等人的 Table II 與 Table III 實際數字(今天抽不出來,可從作者的技術報告 RR-08-03 或論文網站取),核對 HWpA 與 Condat 圖樣在他們框架裡的加總是不是被重新縮放到 1;順便讀 Condat 參考文獻 [4],Lu 與 Vetterli 的〈Optimal color filter array design: Quantitative conditions and an efficient search procedure〉(SPIE 2009),確認它有沒有把雜訊納入最佳化條件。這兩項今天都沒有取得全文。
🔗 延伸學習
- A Geometric Method for Optimal Design of Color Filter Arrays(Hao、Li、Lin、Dubois,IEEE TIP 20(3):709–722,全文 PDF) — 今天第一節與第二節的來源,三原則 P1 至 P3、加總為 1 的約束與七種 CFA 的比較都在這裡;數學式抽取後多亂碼,建議直接看 PDF。
- Eric Dubois 的 CFA 與去馬賽克頁面 — 列出 Hao 等人論文的完整書目,並指向作者提供的更多結果與軟體網頁。
- A New Color Filter Array With Optimal Properties for Noiseless and Noisy Color Image Acquisition(Condat 預印本) — 第四節 B 小節承認 AWGN 假設與真實雜訊(高斯加帕松)不符,並提出同態轉換做變異數穩定;引言也提到 Hao 等人的工作。
- A new color filter array with optimal sensing properties(Condat,ICIP 2009) — Hao 論文引用並比較的 Condat 圖樣,摘要寫明是 2×3 圖樣。
💬 問 AI
我在比較三篇 CFA(彩色濾光片陣列)設計論文的雜訊假設。以下是我讀到的與自己推的,請嚴格分成三類並逐條標示:「論文或文獻明確寫的」、「你查證到的(附出處)」、「你自己的推論」;查不到就直接說查不到,不要補。
我讀到的:(1)Hao、Li、Lin、Dubois 2011 年 IEEE TIP 20(3):709–722 的 CFA 設計只用 CPSNR 評比,全文沒有雜訊模型,且規定每格各原色透光率加總為全 1 矩陣。(2)Condat 2011 年 IEEE TIP 論文用加性高斯白雜訊,承認真實雜訊是高斯加帕松,建議用同態轉換做變異數穩定;色度低通截止頻率 π/3。
我自己的推論:設每格總透光量為 L(Bayer 1、Hirakawa 與 Condat 1.5、補色 Bayer 2)、亮度雜訊放大 a、色度雜訊放大和 c、色度保留頻寬佔比 w。讀出雜訊極限的總雜訊 R = a + w·c,灰階場景散粒雜訊極限的總雜訊 S = L·(a + w·c)。在 w = 1/9 時,補色 Bayer 的 S 比 Bayer 低約 1 dB;在 w = 1 時高約 1.86 dB;打平點在 w = 0.225。
請回答:
1. 我的 R 與 S 兩條式子在哪些假設下成立?「灰階場景每格訊號是 L·s」「色度低通後雜訊變異數乘 w」這兩步有沒有不嚴謹?變異數穩定轉換(Anscombe 之類)之後,這條分析還剩多少有效性?
2. 有沒有同行審查的文獻,直接比較補色或混色濾片在散粒雜訊與讀出雜訊兩個極限下的去馬賽克表現,特別是色度頻寬如何影響結論?
3. Hao 等人把 Hirakawa/Condat 的加總 1.5 圖樣放進「加總為 1」的框架時,是否有重新縮放?請找一手出處(論文表格 II、技術報告 RR-08-03)。
4. Lu 與 Vetterli 2009 年 SPIE 的 CFA 設計論文有沒有把雜訊納入最佳化條件?
每一點請說明你的把握程度。