4.11. 去拜耳化(Debayering)¶
原始的 Bayer 影格在每個像素上只攜帶一個色彩通道。要把它轉換成正常的三通道 RGB 影像,意味著要透過從鄰近正確色彩的像素內插,來補上每個像素缺少的那兩個通道。這種內插就是 去拜耳化(debayering,也稱為去馬賽克化)。主流的演算法家族只有少數幾種。
4.11.1. 超像素(Super-pixel)¶
最便宜的做法是把每一個 2x2 的 Bayer 方塊(一個紅色格、一個藍色格,以及兩個綠色格)合併成單一個輸出像素:
紅色通道取自紅色格的值;
藍色通道取自藍色格的值;
綠色通道取兩個綠色格的平均值。
每個 2x2 的輸入方塊變成一個輸出像素,因此完成後的影像寬度與高度都只有感測器的一半,像素數量只剩四分之一。超像素法速度快且不會產生內插假影,但解析度的代價使它成為最後的手段,很少被使用。
4.11.2. 雙線性(Bilinear)¶
雙線性 內插會對最近的正確色彩像素取平均,而非直接複製或概括。實際的平均方式取決於中心像素記錄的是哪種色彩,因為這四種情況在 3x3 鄰域中分布缺少通道的方式各不相同。
紅綠列中的綠色像素。 缺少的紅色值取左右兩個紅色鄰居的平均;缺少的藍色取上下兩個藍色鄰居的平均。
缺少的紅色來自水平方向的紅色鄰居;缺少的藍色來自垂直方向的藍色鄰居。¶
綠藍列中的綠色像素。 形狀相同,但紅色與藍色對調。缺少的紅色值取上下兩個紅色鄰居的平均;缺少的藍色取左右兩個藍色鄰居的平均。
缺少的紅色來自垂直方向的紅色鄰居;缺少的藍色來自水平方向的藍色鄰居。¶
紅色像素。 缺少的綠色值取四個正交方向綠色鄰居(上、下、左、右)的平均。缺少的藍色取四個對角線藍色鄰居的平均。
缺少的綠色來自四個正交方向的綠色鄰居;缺少的藍色來自四個對角線藍色鄰居。¶
藍色像素。 紅色情況的鏡像。缺少的綠色取四個正交方向綠色鄰居的平均,缺少的紅色取四個對角線紅色鄰居的平均。
缺少的綠色來自四個正交方向的綠色鄰居;缺少的紅色來自四個對角線紅色鄰居。¶
雙線性法保留了感測器的完整解析度,且對大多數用途來說已足夠平滑,但它在邊緣處仍會顯現假影。兩種色彩之間的銳利轉變會以特定的方向穿越像素網格,而跨越邊緣取平均會使其略微變得柔和。在色彩邊緣與亮度邊緣未精確對齊之處,輸出中便會出現淡淡的色彩條紋。
4.11.3. 超越雙線性¶
存在一系列更優秀的去拜耳演算法。有些使用比雙線性那種同色鄰居小十字更大的鄰域,並以更謹慎挑選的係數對樣本加權;有些則偵測局部邊緣的方向,並讓內插偏向沿著該方向進行,使橫越像素網格的邊緣保持銳利而不會變柔和。這兩種做法都能減少雙線性遺留下來的色彩條紋與邊緣柔化,但代價是每個像素需要更多運算,以及更多的矽晶片資源(或 MCU 端更多的運算量)。
任一台特定 OpenMV Cam 上可用的去拜耳品質是平台相依的,取決於該相機上的感測器與 MCU 所提供的能力。
4.11.4. 去拜耳化在哪裡執行¶
影像訊號處理器(ISP)位於感測器晶片本身或 MCU 端,在多數情況下會於每個影格離開影像處理流程之前進行去拜耳化。使用者程式碼接收到的是完成的三通道 RGB 影像,完全不必接觸原始的馬賽克資料。
ISP 也可以被設定為讓原始的 Bayer 影格原封不動地通過。原始 Bayer 所占用的記憶體比去拜耳化後的影像少,每個像素一個位元組而非三個,這使得它在影格儲存成為瓶頸時、為離線處理進行擷取時,或當專案想以軟體套用自訂去拜耳演算法時相當有用。