紅綠藍色彩模型 是什麼?

RGB:紅綠藍色彩模型 的完整解釋

以紅(Red)、綠(Green)、藍(Blue)三原色疊加表示顏色的加法混色模型,是數位影像與電腦視覺任務中圖像表示的基礎格式。

RGB(Red, Green, Blue,紅綠藍)色彩模型在電腦視覺與人工智慧領域扮演著最基礎的影像表示角色。從早期的卷積神經網路到現代的視覺語言模型(Vision-Language Model),RGB 格式始終是影像資料進入 AI 系統的標準通道。

RGB 的物理基礎與數位表示

RGB 是一種加法混色(Additive Color Mixing)模型,模擬人眼視網膜中三種感色錐細胞(Short/Medium/Long-wavelength cones,分別對藍、綠、紅光最敏感)的反應特性。在數位系統中,最常見的 8-bit per channel RGB 將每個通道以 0-255 的整數表示,三通道組合可表示 256³ = 16,777,216 種顏色。16-bit per channel(高動態範圍,HDR)和 32-bit float(深度學習模型常用的浮點數格式,通道值通常正規化至 0-1 或 -1 到 1)也廣泛應用。在記憶體中,一張 224×224 的 RGB 影像佔用 224 × 224 × 3 × 1 byte = 150,528 bytes(未壓縮),在深度學習的批次訓練中,一個 batch size=32 的輸入張量大小為 32 × 3 × 224 × 224(PyTorch 通道在前格式,NCHW)。

通道順序的技術細節

在電腦視覺的工具鏈中,RGB 通道的排列順序是一個容易出錯的技術細節。OpenCV 預設以 BGR(藍-綠-紅)順序載入影像,而 PIL(Pillow)、torchvision 和大多數深度學習框架使用 RGB 順序。若將 OpenCV 讀取的 BGR 影像直接輸入以 RGB 訓練的 ImageNet 預訓練模型,藍色與紅色通道對調會導致模型輸出異常,是電腦視覺工程中常見的 bug 來源。轉換方式為 cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 或直接對 numpy array 做 img[:, :, ::-1] 通道反轉。

RGB 在深度學習影像任務中的角色

在卷積神經網路(CNN)的早期設計中,RGB 三通道直接對應網路第一層卷積的輸入特徵圖。研究者發現,第一層卷積核在 ImageNet 訓練後會自動學習到邊緣偵測、顏色辨識等低階視覺特徵,類似人類視覺皮層 V1 區的細胞感受野反應。在現代視覺 Transformer(ViT)中,影像被分割成固定大小的 patch(如 16×16 像素),每個 patch 的像素向量化後透過線性投影映射為 token 嵌入,RGB 三通道的資訊在這個投影過程中被壓縮整合進 token 表示中。

影像正規化與預訓練模型的均值標準差

使用在 ImageNet 上預訓練的視覺模型時,輸入影像的 RGB 像素值必須用 ImageNet 資料集的通道均值(mean = [0.485, 0.456, 0.406],對應 R/G/B)與標準差(std = [0.229, 0.224, 0.225])進行正規化,即每個通道值 = (原始值/255 - 均值) / 標準差。這個步驟確保輸入資料的分佈與訓練時一致,是影像前處理的必要步驟,遺漏此步驟會顯著降低預訓練模型的遷移學習效果。

RGB 與其他色彩空間的轉換

在特定 AI 任務中,RGB 並非最佳選擇,需要轉換到其他色彩空間。HSV(色相/飽和度/亮度)在顏色分割任務中對光照變化更具魯棒性,因為色相(Hue)通道直接表示顏色本身,不受亮度影響;LAB 色彩空間的 L 通道(亮度)與 AB 通道(色彩)分離,在醫療影像增強中廣泛使用;YCbCr 將亮度(Y)與色差(Cb/Cr)分離,在影像壓縮(JPEG)和影像超解析度任務中常見。人臉偵測中常將 RGB 轉換為 YCbCr 後僅用色差通道做膚色分割,能更有效地分離膚色像素。

在多模態大型語言模型中的角色

在 GPT-4V、Gemini、Claude 等視覺語言模型(VLM)中,RGB 影像在進入語言模型主體之前,先通過視覺編碼器(通常是 CLIP 的 ViT)將 RGB 像素轉換為視覺 token 嵌入,再與文字 token 在 Transformer 的共同序列中處理。這個設計讓 LLM 能夠「理解」影像內容,但其底層仍然依賴 RGB 格式作為影像的數位表示基礎。理解 RGB 的結構有助於理解多模態模型的資料流與可能的失效模式(如低光環境下 RGB 資訊不足導致辨識失敗)。

常見問題