昨天算出兩個硬臨界頻率:偽色(亮度漏進色度)在 f = 0.40 cyc/px,網格紋(色度漏進亮度)在 f = 0.20 cyc/px,差了整整一倍,而且沒有一個去馬賽克演算法能同時把兩者都推到 0.5。今天要問一個昨天沒問的問題:如果演算法這條路走不通,有沒有別條路?物理上的光學低通濾鏡(OLPF)是不是直接攻擊同一個頻率點?如果攻擊,攻擊得動嗎?還有沒有一條完全不同的路——不去壓色度載波的能量,而是把它的位置打散,讓臨界頻率這件事本身不成立?查完之後,答案是:OLPF 真的瞄準同一個點,但一份 Canon 專利給出的公式顯示它打得不夠準;而打散載波位置這條路,2010 年就有人做過,而且數字是公開的。
📖 學
一、OLPF 瞄準的座標,可以自己推出來
昨天與 09-22 那篇把 Bayer CFA 的頻域結構釘死成一個恆等式: 在原點, 在 , 同時在 與 。這件事有一個推論,09-22 沒有講完: 這個載波為什麼精確落在 ,是因為 R(或 B)本身在空間上是一個間距為 2 像素的稀疏格點—— 只在 x、y 都是偶數時非零。一個間距 2 的取樣格點,自己的奈奎斯特頻率是 1/(2×2) = 0.25 cyc/px,不是 0.5。G 通道因為是梅花格(quincunx),自己的取樣密度是 R/B 的兩倍,奈奎斯特維持在完整的 0.5。
這個 0.25 與 0.5 這兩個數字,不是我自己編的巧合。查專利檢索摘要(整理自多篇 OLPF 專利的檢索結果,非逐字覆核單一來源,已標存疑),OLPF 設計上的通用原則是:「for color imaging devices, designers aim for an optical blur filter cutoff frequency somewhere between the lowest Nyquist frequency (associated with red or blue pixels in Bayer-type imagers) and the highest sampling frequency (green pixel frequency)」——OLPF 的截止頻率設在紅藍通道自己的奈奎斯特(0.25)與綠通道的奈奎斯特(0.5)之間。這正好是 所在的下界與 、感測器整體奈奎斯特所在的上界。OLPF 不是模糊地「防止太銳利」,它瞄準的是 Alleysson 模型算出來的那幾個具體座標。
二、Canon 的專利把這件事寫成一個可查的公式
理論說 OLPF 瞄準 0.25–0.5 這個窗,但實際的鏡片怎麼設計?Canon 在 2016 年公告的美國專利 US 9,470,903(Image capturing apparatus)把這件事寫成一個具體條件。專利描述的 OLPF 是多層雙折射晶體疊出來的高斯型點擴散——一條入射光線被拆成數百到數萬個點像,整體分佈趨近高斯分佈,標準差為 σ。專利給的設計條件是:
0.4 < 2σ/P < 0.9
P 是感測器的像素間距,σ 是點像分佈的標準差。專利原文(兩次獨立擷取都得到一致的數字,信心較高):「the optical low-pass filter satisfies the condition: 0.4<2×σ/P<0.9」,目的是「suppressing generation of false color and moire fringe in a spatial frequency band around or higher than a Nyquist frequency」。換算成 σ/P,範圍是 0.2 到 0.45。
專利裡另外有一句話,我沒能完全核對:對像素間距 5 µm 的感測器,某個具體實施例宣稱「an MTF of approximately 0% from around the Nyquist frequency up to around 200 (lp/mm)」——p=5 µm 的奈奎斯特是 100 lp/mm,這句話等於說從奈奎斯特到兩倍奈奎斯特之間 MTF 幾乎是零。這句話和下面我自己用高斯 PSF 算出來的數字對不上,已標存疑——有可能這句話描述的是另一個超出 0.4–0.9 通用範圍的實施例,也有可能是 WebFetch 摘要工具的轉述誤差,我沒有辦法用目前查到的資料排除任何一種可能。
三、我自己把這組公式換算到昨天的兩個臨界頻率上
專利給的是 σ/P 的範圍,不是某個頻率上的 MTF 數值——這一步換算專利沒有做,是我自己補的。高斯點擴散函數 的傅立葉轉換是 ,取 、(也就是昨天用的 cyc/px 正規化頻率),MTF 可以寫成:
MTF(f_n) = exp( −2π² · s² · f_n² )
代入專利範圍的兩端(s = 0.2,最弱的合規濾鏡;s = 0.45,最強的合規濾鏡),算在昨天的三個關鍵頻率上:
| f_n (cyc/px) | s = 0.2(弱) MTF | s = 0.45(強) MTF |
|---|---|---|
| 0.20(網格紋臨界,昨天示範值) | 96.9 % | 85.2 % |
| 0.40(偽色臨界,昨天示範值) | 88.1 % | 52.8 % |
| 0.50(整體奈奎斯特) | 82.1 % | 36.8 % |
這張表是我自己算的,不是專利給的數字,0.20 與 0.40 沿用昨天的示範臨界頻率,只是拿來對照,不代表任何真實相機的實測值。
三件事值得停下來看。第一,即使是專利許可範圍裡最強的濾鏡,在整體奈奎斯特上也只把振幅壓到 36.8%,離「歸零」還差得遠——這和上面那句「approximately 0%」的專利原文對不上,是我標存疑的原因。第二,也是最重要的:同一顆濾鏡,在 f = 0.40 打到 52.8%,在 f = 0.20 只打到 85.2%,差了 32.4 個百分點。 OLPF 對高頻(偽色臨界)的壓制力道,遠大於對低頻(網格紋臨界)的壓制力道——這是高斯低通的本質,頻率越高衰減越兇。
第三,把這件事和昨天的發現接起來看:昨天算出「亮度撐到 80% 奈奎斯特,色度只撐到 40% 奈奎斯特」,色度(網格紋)是比較早失守的那一邊。今天發現 OLPF 對這條比較早失守的防線,保護力道也比較弱——物理濾鏡和演算法濾波器,在同一個地方犯同一種偏科。這不是巧合,是同一件事:兩者都是某種低通,而低通的本質就是對低頻手軟、對高頻下重手,而網格紋的臨界頻率剛好比較低。沒有人在合謀,是低通濾波器這個工具本身的形狀決定了它一定更擅長守高頻那一側。
(把 OLPF 拿掉,也就是現代高像素密度機身常見的做法,前一篇 09-22 算過:45 MP 全片幅、4.35 µm 像素、f/2.8 時,鏡頭在奈奎斯特上還留有 77.6% 的調變度可以送。今天的表格說明了那 77.6% 原本要面對的是什麼——一顆合規的 Canon OLPF 在奈奎斯特最多也只能打到 36.8%。拿掉濾鏡之後,這整段能量落差,全部由像素間距推高奈奎斯特頻率、以及去馬賽克演算法自己的 fc 選擇來扛。)
四、換一條路:別壓能量,把它的位置打散
以上都是「同一個載波位置,壓不壓得住」的問題。2010 年 Laurent Condat 發表在 Image and Vision Computing 的論文(Color filter array design using random patterns with blue noise chromatic spectra,28(8):1196–1202)問了另一個問題:如果不是壓能量,而是換一種排列方式,讓色度載波根本不集中在某幾個點上呢?
論文先把 Alleysson 的模型推廣到任意 CFA,不只 Bayer:
關鍵的一句話,直接解釋了「臨界頻率」這件事從哪裡來:「For a periodic CFA, and are sums of Dirac distributions, located on the dual lattice of the spatial lattice underlying the periodicity of the CFA.」——任何週期性的 CFA,色度載波在頻域裡都是有限幾個離散的狄拉克脈衝,位置由 CFA 的空間週期倒過來決定。 Bayer 是週期 2×2 最簡單的例子,所以色度剛好落在 、、 三個點——而正是因為它是「幾個離散點」而不是「一段連續頻帶」,現實世界裡凡是空間頻率精確對上這幾個點的花紋(紗窗、格柵、細條紋),才會觸發昨天算出的那種硬臨界、一過門檻就整段洩漏的行為。臨界頻率之所以「硬」,是因為載波位置是離散的,不是因為洩漏這件事本身天生就該有陡峭邊界。
論文接著論證:如果 CFA 的排列不是週期性的,而是隨機的(但仍然只用 R、G、B 三色),色度載波就不再是離散脈衝,而可以做成一段集中在 π 附近、但連續分佈的能量頻譜——也就是「藍雜訊」(blue noise)特性。論文摘要的原句:「the chrominance channels have blue noise characteristics, a property which maximizes the robustness of the acquisition system to aliasing. With these new CFAs, the demosaicking artifacts appear as incoherent noise, which is less visually disturbing than the moiré structures characteristic of CFAs with periodic patterns.」
實測數字在論文 Table 1 裡(20 張標準測試圖,這裡引用第 1 張的一行,單位是 MSE,越低越好):
| CFA | 雙線性 | Lukac & Plataniotis 法 | Condat 的通用線性法 |
|---|---|---|---|
| Bayer | 151.66 | 15.77 | 13.74 |
| Type II 隨機 CFA | 141.04 | 22.62 | 11.37 |
三個方法裡,雙線性和「通用線性法」(不特別為任何 CFA 調校,對兩者一視同仁)是比較公平的比較基準,而在這兩項上隨機 CFA 都贏——通用線性法上贏了 17.3%(13.74 → 11.37)。只有 Lukac 那個專門為 Bayer 調校過的演算法上,Bayer 才明顯領先,論文自己也點出這個可能的偏差:「there might be a bias if this method has precisely been tuned to perform well with this CFA in particular」。
論文自己講的結論,和昨天「A/√2」那個飽和值放在一起讀特別有意思:隨機 CFA 並沒有讓總誤差消失,MSE 數字大致相當,它改變的是誤差的形狀,不是誤差的總量。 論文原句:「the artifacts present with the random CFA take the form of chrominance noise, which is more visually pleasant than the structured low-frequency color fringes characteristic to the Bayer CFA.」——同一份洩漏能量,集中在三個點上就是摩爾紋(眼睛對規律結構極敏感),打散成一段頻寬就是雜訊顆粒(眼睛對隨機紋理容忍度高得多)。視覺上的「好很多」,底層物理上其實是「差不多」。
五、X-Trans:一個仍然週期,但週期大很多的中間案例
富士的 X-Trans CFA 官方說法(X-Trans CMOS)是「an original color filter array with a highly random pattern, eliminating the need for an optical low-pass filter (OLPF)」。維基百科的 X-Trans 條目確認了 6×6 的重複單元(對照 Bayer 的 2×2),但條目引用的參考資料裡沒有任何一篇同儕審查、做頻域分析的論文——全部是 Fujifilm 的行銷資料、一份專利(US 8531563)與媒體報導。
這裡要小心一個容易誤讀的地方:X-Trans 的 6×6 排列仍然是週期性的,只是週期比 Bayer 大很多。按上一節 Condat 論文的定理,週期性 CFA 的色度載波「are sums of Dirac distributions, located on the dual lattice of the spatial lattice」——這句話對任何週期 CFA 都成立,X-Trans 沒有例外。這代表 X-Trans 嚴格來說不是 Condat 意義下的「隨機/藍雜訊」CFA,它的色度能量依然集中在離散點上,只是這些點的數量變多了、位置變得更密、而且不再只集中在單一個最高頻的角落。(這是我自己從 Condat 的定理推出來的,富士沒有這樣講過,我也沒查到任何論文明確做出這個對比。)
這個推論和一個獨立來源對得上。在 Image Sensors World 那篇部落格的討論串裡,色彩科學工程師 Tripurari Singh 的評論是:X-Trans 的效果關鍵在於顏色分佈的均勻性,而不是純粹的隨機性,並且「even X-Trans could benefit from a weak OLPF」——如果 X-Trans 真的像 Condat 的藍雜訊 CFA 一樣把色度能量完全打散成連續頻帶,理論上它應該不太需要 OLPF 的額外幫助;Singh 認為它仍然用得上,這與「它本質上還是週期性排列,只是把離散點挪到別的位置」這個推論方向一致,但不是證明。
DPReview 論壇上還流傳一個說法——富士的 X-Trans 設計參考了 Alleysson 與 Chaix de Lavarène 2008 年那篇《Frequency selection demosaicing: A review and a look ahead》——我沒能獨立核實這個歸因,已標存疑,只查到這篇論文確實存在(Electronic Imaging 2008 會議論文),但找不到把它和 X-Trans 設計直接連起來的一手資料。真正做「用隨機/大週期排列取代 Bayer」這條路數學論證的,是查得到的 Condat(2010)與他引用的 Hirakawa 與 Wolfe(Spatio-Spectral Color Filter Array Design for Optimal Image Recovery,IEEE TIP 17(10):1876–1890,2008)——這兩篇是這條研究路線裡我能確認的一手文獻,X-Trans 本身的嚴謹頻域分析,查到 2026 年為止還是空的。
🧠 記
OLPF 瞄準的座標可以自己推出來,不是模糊的「防止太銳利」。 Bayer 裡 R/B 是間距 2 像素的稀疏格點,自己的奈奎斯特是 0.25 cyc/px;G 維持完整的 0.5。專利檢索摘要(已標存疑)顯示 OLPF 設計原則正是把截止頻率設在這兩者之間——正好對上 Alleysson 模型裡 與 的座標。
Canon 專利 US 9,470,903 把 OLPF 強度寫成一個可查的公式:0.4 < 2σ/P < 0.9(P 為像素間距,σ 為高斯點擴散標準差)。兩次獨立擷取數字一致,信心較高;但專利裡「p=5µm 時 Nyquist 到 200 lp/mm 之間 MTF 約 0%」這句話,和下面自己算出的數字對不上,已標存疑。
自己算出來:專利範圍最強的濾鏡(σ/P=0.45),在整體奈奎斯特上也只把振幅壓到 36.8%。 在昨天的兩個示範臨界頻率上,0.40(偽色)壓到 52.8%,0.20(網格紋)只壓到 85.2%——OLPF 對網格紋這條較早失守的防線,保護力道天生比較弱,和昨天「色度只撐到 40% 奈奎斯特」是同一種偏科,原因是低通濾波器對低頻手軟、對高頻下重手的本質形狀。
臨界頻率之所以「硬」,是因為色度載波在頻域裡是離散的狄拉克脈衝,而不是連續頻帶。 Condat(2010)把 Alleysson 模型推廣到任意 CFA:「For a periodic CFA, … are sums of Dirac distributions, located on the dual lattice of the spatial lattice underlying the periodicity of the CFA.」任何週期 CFA(包括 X-Trans)都逃不掉這句話。
打散色度載波位置,而不是壓它的能量,是另一條路。 Condat 用隨機排列做出藍雜訊色度頻譜,實測(Table 1,image 1):通用線性法下 Bayer MSE=13.74,Type II 隨機 CFA MSE=11.37,贏 17.3%。但總誤差沒有消失,消失的是誤差的相干性——論文原句:「the artifacts present with the random CFA take the form of chrominance noise, which is more visually pleasant than the structured low-frequency color fringes」。
X-Trans 的 6×6 排列仍然是週期性的,不是 Condat 意義下的隨機 CFA。 富士官方稱其為「highly random pattern」,但維基百科條目沒有引用任何同儕審查的頻域分析論文。DPReview 論壇流傳的「X-Trans 設計參考 Alleysson & Chaix de Lavarène 2008」說法,我沒能獨立核實,已標存疑。我自己的推論(非任何一手來源明確陳述):X-Trans 只是把離散色度載波挪到更多、更密的位置,而非真正打散成連續頻帶——與 Image Sensors World 討論串裡 Tripurari Singh「even X-Trans could benefit from a weak OLPF」的判斷方向一致,但不構成證明。
這條研究路線裡查得到的一手文獻是 Condat(2010)與 Hirakawa & Wolfe(2008,IEEE TIP),X-Trans 本身的嚴謹頻域分析,2026 年查不到。
✍️ 實踐
自己把高斯 OLPF 的 MTF 換算表重算一次。 只需要一行公式:
import numpy as np
def mtf(f_n, s): # f_n: 正規化頻率 cyc/px, s = sigma/P
return np.exp(-2 * np.pi**2 * s**2 * f_n**2)
for s in [0.2, 0.45]: # Canon 專利 0.4<2s<0.9 的兩端
for f_n in [0.20, 0.40, 0.50]:
print(s, f_n, mtf(f_n, s))換掉 s 的範圍,看 MTF 曲線怎麼隨濾鏡強度移動——重點不是背數字,是親眼看到「同一顆濾鏡對高頻和低頻的壓制力道天生不對稱」這件事。
去讀 Condat 論文附的 Matlab 程式碼,親手生成一張隨機 CFA。 論文結尾寫明:「Matlab code generating the proposed random patterns has been made available online」,連結在他的個人首頁(http://www.greyc.ensicaen.fr/~lcondat/publications.html)。生成一張 16×16 或更大的隨機馬賽克,對它的色度分量做 2D FFT,和 Bayer 的四個離散尖峰對照著看——這是今天整篇最值得肉眼驗證的一步:一個是幾個孤立的點,一個是一圈連續的環。
找一張紗窗或格柵照片,同時看 Bayer 相機與 Fuji X-Trans 相機的失敗方式。 不需要精確對齊焦距,重點是失敗的「質地」:Bayer 應該在特定距離上出現彩色條紋(色度摩爾紋,結構化、有方向性);X-Trans 如果真的更接近隨機排列,失敗的地方應該看起來更像顆粒雜訊、方向性弱一些。記錄下兩者實際看起來像不像今天推論的那樣——這是一個定性但可重複的觀察,能檢驗今天推論(X-Trans 是「更密的離散點」而非「連續頻帶」)站不站得住腳。
查一次自己相機的 AntiAliasStrength,結合今天的 σ/P 範圍反推。 exiftool -AntiAliasStrength your.dng。如果廠商把這個值對應到某個具體的 σ/P(多數廠商不公開換算方式,這一步大概率查不到,但值得試),可以代回今天的公式,自己算出你的相機在 0.20/0.40 這類臨界頻率上的實際 OLPF 保護力道——這比信任任何一份行銷資料都直接。
🔗 延伸學習
- Color filter array design using random patterns with blue noise chromatic spectra(Condat, Image and Vision Computing 28(8), 2010, 開放 PDF) — 今天第四節的核心來源:把 Alleysson 模型推廣到任意 CFA、證明週期 CFA 的色度載波必為離散狄拉克脈衝、隨機藍雜訊 CFA 的設計方法與 Table 1 的實測 MSE 數字全部在裡面。
- US 9,470,903 — Image capturing apparatus(Canon,Google Patents) — 今天第二、三節的 OLPF 設計公式來源:0.4 < 2σ/P < 0.9,高斯型多層雙折射濾鏡的具體設計條件。
- Fujifilm X-Trans CFA Eliminates the Need in OLPF(Image Sensors World, 2013) — 富士官方「highly random pattern」說法的原始引用,以及色彩科學工程師 Tripurari Singh 對「隨機性 vs. 均勻性」的評論,是第六節推論的部分佐證。
- Spatio-Spectral Color Filter Array Design for Optimal Image Recovery(Hirakawa & Wolfe, IEEE TIP 17(10), 2008) — Condat 論文引用的另一篇一手文獻,同一條「重新設計 CFA 而非只改良去馬賽克演算法」研究路線上的重要論文。
💬 問 AI
我在研究去馬賽克的頻域模型,想把它從「Bayer CFA 的兩個臨界頻率」延伸到「OLPF 物理設計」與「非 Bayer CFA 排列」這兩個方向。請盡量引用一手來源(論文、專利原文),並嚴格區分「來源明確這樣說」與「你自己的推論」。
第一組:OLPF 與臨界頻率的關係
1. 我引用了 Canon 專利 US 9,470,903 的設計條件 0.4 < 2σ/P < 0.9(σ 是高斯點擴散標準差,P 是像素間距),並自己用高斯 PSF 的傅立葉轉換 MTF(f) = exp(−2π²σ²f²) 算出這個範圍在正規化頻率 0.20、0.40、0.50 cyc/px 上的衰減量(最強濾鏡在 0.40 打到 52.8%,在 0.20 只打到 85.2%,在整體奈奎斯特打到 36.8%)。這個換算對嗎?專利裡另一句「p=5µm 時 Nyquist 到 200 lp/mm 之間 MTF 約 0%」我對不起來這兩個數字,你能不能查一下這句話的完整上下文,判斷是不是描述另一個實施例,還是我的換算哪裡錯了?
2. OLPF 截止頻率設在「紅藍通道自己的奈奎斯特(0.25 cyc/px)與綠通道奈奎斯特(0.5 cyc/px)之間」這個設計原則,我只查到搜尋摘要層級的轉述,沒能找到單一權威原始出處逐字確認。這個說法是否有更明確的工程文獻(例如影像感測器教科書、SPIE 論文)可以核實?
第二組:CFA 頻域結構的推廣
3. Condat(2010,Image and Vision Computing)證明「任何週期性 CFA 的色度載波在頻域裡都是落在其空間週期倒格子上的離散狄拉克脈衝」。這個定理的推導我沒有逐步驗證,只讀了論文裡的結論句。這個定理成立的完整前提是什麼(例如是否要求 CFA 每個位置恰好對應一種顏色、是否需要色彩通道統計獨立)?有沒有後續論文指出這個定理在某些條件下不成立?
4. 我推論 X-Trans 的 6×6 排列因為仍是週期性的,所以按 Condat 的定理,色度載波仍是離散脈衝,只是分佈在更多、更密的位置,而非真正連續的藍雜訊頻譜。這個推論有沒有漏洞?有沒有任何論文真的對 X-Trans 的 6×6 排列做過倒格子/離散載波位置的具體計算(而不是像我一樣停留在定性推論)?
5. DPReview 論壇上流傳「富士 X-Trans 設計參考了 Alleysson 與 Chaix de Lavarène 2008 年的 Frequency selection demosaicing: A review and a look ahead」這個說法,我沒能獨立核實這個歸因。這篇論文是否真實存在、內容是什麼、有沒有任何一手資料(富士的專利、工程師訪談、學術引用)把它和 X-Trans 的實際設計連結起來?
第三組:對我的意義
6. 如果我要選一台相機或一套後製流程來對抗色度摩爾紋,今天推出的框架建議:物理 OLPF 在「網格紋」這個較早失守的臨界頻率上保護力道天生較弱,而 X-Trans 如果只是把離散載波打散成更多位置而非真正連續頻帶,可能仍然有自己的一組(數量更多但個別更弱的)臨界頻率。有沒有任何實測比較過 Bayer 與 X-Trans 在色度摩爾紋「發生的空間頻率」上的具體差異(不是主觀評測,是可測量的頻率數字)?
7. 請給我最強的反方論證:也許整個「離散載波 vs. 連續藍雜訊」這個框架在真實 ISP(帶內容自適應降噪、非線性去馬賽克)裡根本不重要,因為現代處理管線早就不是線性濾波器能完整描述的系統。請具體說明現代 ISP 在哪一步偏離了本文全部建立在的線性頻域框架,以及這個偏離對本文結論的殺傷力有多大。
每一點請標明你的把握程度,查不到出處的請直接說查不到。