跳轉到內容

分形/計算機圖形技術/工作流程

來自華夏公益教科書
 Image processing or pipeline of 2D graphic or workflow

維基百科中的圖形管道

色彩理論:色彩梯度

影像處理階段

  • 色彩校準(對於所有參與顏色管理工作流程的裝置)[1]
  • 預處理
  • 處理(捕捉影像 = 拍攝照片,建立數字影像)
  • 後處理 = 編輯捕捉的影像 = 修改影像:圖形演算法


電影(電影)製作包括五個主要階段:[2]

  • 開發:建立電影的想法,購買現有智慧財產權的權利等,並編寫劇本。融資專案並獲得資金。
  • 前期製作:為拍攝製作安排和準備,例如僱用演員和攝製組,選擇拍攝地點和搭建佈景。
  • 製作:在電影拍攝期間記錄電影的原始素材和其他元素,包括主要拍攝
  • 後期製作:記錄的電影的影像、聲音和視覺效果被編輯和組合成一個最終產品。
  • 發行:完成的電影在電影院發行、推廣和放映,或釋出到家庭錄影以供觀看。

色彩空間

[編輯 | 編輯原始碼]

為了獲得正確的結果,不同的色彩空間對於:[3]

  • 渲染,
  • 顯示和列印
  • 影像儲存。

渲染和合成最好在場景線性色彩空間中完成,它更接近自然,並且使計算更物理準確。

2D 管道

[編輯 | 編輯原始碼]

另一個示例,對於影像的每個畫素

  • 獲取記憶體 1D 陣列的整數座標
  • 計算虛擬 2D 陣列的整數座標
  • 計算畫素的世界座標
  • 計算此畫素的表示函式的值
  • 計算畫素的顏色

資料結構

  • 記憶體 1D 陣列
  • 虛擬 2D 陣列

檔案



"use pro editing techniques by working non-destructively. This means, don’t edit on the original image layer. Instead, duplicate the layer for every type of edit you plan to do. This way, you can repeat the editing steps with a duplicate file at 16 bits." Chris Parker[4]


步驟[5][6]

  • 裁剪:將世界座標中的物件轉換為物件子集 == 將世界視窗應用於物件
  • 視窗到視口對映
  • 光柵化 = (掃描轉換)– 將高階物件描述轉換為幀緩衝區中的畫素顏色
  • 顯示/儲存

RAW 影像檔案

  • 包含以二進位制格式表示的原始畫素資料(數字)
  • 程式可以儲存原始迭代資料以供以後著色或其他分析。[7]
  • 由於檔案在讀取/開啟檔案之前不包含任何影像格式資訊,因此需要有關
    • 影像尺寸
    • 畫素資料格式
    • 畫素掃描順序
    • 位元組排列(小端或大端格式)


RAW 檔案處理階段[8][9][10]


操作:

  • 讀取:從磁碟讀取並將資料儲存到記憶體陣列中
  • 著色 = 將畫素的原始資料資訊轉換為畫素顏色。
  • 曝光值調整
  • 白平衡調整
  • 色調和色調調整
  • 高光和陰影恢復
  • 鮮豔度和飽和度調整
  • 裁剪和旋轉
  • 降噪
  • 銳化
  • 一些在轉換為 jpg 檔案後優先進行的操作是
    • 紅眼去除
    • 克隆的區域性修飾以擦除幀中不需要的物件
    • 新增框架
    • 與其他輸出檔案混合,例如更改背景。
    • 儲存


轉換和著色,對於每個畫素執行

pgm[i] = raw[i]•m

RAW 影像處理示例

京浩許的示例[11]

  • 處理前的 RAW 影像
  • 二進位制影像
  • 輪廓影像
  • 預處理後的骨架化影像
  • RAW 和輪廓影像的合成影像
  • RAW 和骨架化影像的合成影像


使用 ImageJ 對 RAW 分形的影像處理隨時間變化



小貼士

  • "在將影像緩衝區顯示到螢幕之前,將全屏濾鏡和效果應用於相機影像緩衝區的過程。它可以在很少的設定時間內顯著改善產品的視覺效果。"[12]

完整 HDR 管道

[編輯 | 編輯原始碼]
  • HDR 影像
  • HLG 或 PQ 傳輸函式
  • HDR 顯示器


EIZO 的 HDR 內容製作工作流程:[13]

  • 檢查拍攝資料
  • VFX = 視覺效果
  • 合成工作
  • 最終顏色分級。

HDR 到 SDR 管道

[編輯 | 編輯原始碼]

從 HDR 到色調對映 SDR[14]

  • HDR 影像
  • Reinhard & Drago 色調對映
  • SDR 顯示器 = 從 HDR 色調對映的 SDR 影像

完整的 SDR 管道

[edit | edit source]
  • SDR 影像
  • 伽馬傳遞函式(伽馬校正)[15]
  • SDR 顯示器 (SRGB)

色彩工作流程

[edit | edit source]

渲染意圖 : 色彩操作應考慮到用例

  • 模擬人類感知
  • 或光的物理行為(基於物理的渲染 PBR)
  • RGB 的線性版本(非 sRGB)[16]

色彩空間

  • 影像儲存在磁碟上並以 sRGB 傳輸到顯示器,sRGB 在強度上近似於感知一致。[17]
  • 著色器數學線上性 RGB 中完成,在強度上物理一致。
  • 列印是在 CMYK 中

另請參閱渲染風格

  • 無偏渲染 = 照片級渲染
  • 非照片級渲染
    • 藝術渲染
  • 超現實渲染 = 結合照片級真實感和非照片級真實感的渲染風格


示例

[edit | edit source]


Correct procedure when working with graphics is to convert all gamma encoded media to linear intensities, perform any calculation/blending/averaging, and convert back to gamma encoding.
Rendering and compositing is best done in scene linear color space, which corresponds more closely to nature, and makes computations more physically accurate. ( Blender doc)

線性工作流程

[edit | edit source]

線性工作流程使用線性色彩空間進行渲染[18]

  • "在現實世界中,我們感知的顏色都處於線性色彩空間。為了讓顯示器模擬現實世界,它也需要以線性方式顯示。由於顯示器硬體的限制和影像最佳化要求,影像以伽馬校正進行處理和儲存。"
  • 由於舊 CRT 顯示器技術的限制,影像只能透過伽馬 2.2 色彩校正顯示。即使現代顯示器可以直接顯示線性影像,伽馬 2.2 也已成為一種標準慣例。
  • 無需線性化諸如 .hdr 和 .exr(32 位)之類的浮點影像格式,這些格式已處於伽馬空間 1.0。
  • 當相機捕捉影像時,會儲存一個 8 點陣圖像,以透過 sRGB 伽馬 0.45 處理實現與顯示器的相容性和檔案最佳化。


sRGB Image Gamma 0.45 + Monitor Gamma 2.2 = Final Display Gamma 1  

Unity3D 中的工作流程

[edit | edit source]

Unity3D[19]

  • 線性色彩空間工作流程:線性色彩空間渲染提供更精確的結果
  • 伽馬色彩空間工作流程:伽馬色彩空間是歷史上標準的格式 = 不要使用它

Poimandres 的色彩緩衝區

[edit | edit source]

(開源開發者集體):[20]

  • 無符號位元組型別 sRGB 幀緩衝區(= 每個顏色通道 8 位)用於儲存中間結果。這是硬體支援、效率和質量之間的權衡。對於低精度 sRGB 緩衝區,顏色將被限制在 [0.0, 1.0],並且資訊損失將轉移到較暗的頻譜,這會導致黑暗場景中出現明顯的條帶。
  • 線性結果通常需要每個顏色通道至少 12 位才能防止顏色退化和條帶。線性、高精度 HalfFloatType 緩衝區沒有這些問題,是臺式裝置上類似 HDR 的工作流程的首選。


CUVI 中的色彩管道

[edit | edit source]

Krita [21](一個用於影像和計算機視覺應用的 GPU 加速庫。)

Let's take a typical color pipeline and measure its performance on one of the entry level GPUs. Any color pipeline almost always starts with the Raw image. Before converting to RGB, you might want to do some processing on the raw which may include applying LUTs (look up tables), FPN (fixed point noise) removal and fixing white balance. Next comes demosaic/debayer followed by several further enhancement functions and a color space conversion into the desired format. This pipeline can perform in real-time on a decent entry level GPU on an 8k images and at over 100 FPS on a 2k image:

桌面出版工作流程

[edit | edit source]
  • GIMP 提供頂級的色彩管理功能,以確保數字和印刷媒體之間的高保真色彩再現。
  • 它最適合用於涉及其他免費軟體的工作流程,例如 Scribus、Inkscape 和 SwatchBooker。


Krita 色彩工作流程

[edit | edit source]

Krita 擁有兩個專門用於色彩管理的系統[22]

  • lcms2,它處理 ICC 配置檔案,透過使用參考空間來保持跨多個裝置解釋(螢幕、印表機)的顏色一致。用於連線 Gimp 2.9+、Inkscape、digiKam 和 Scribus 等程式
  • OCIO,它處理 LUT 色彩管理,用於操作所述顏色的解釋,用於連線 Blender 和 Natron 等程式

Skia:2D 圖形庫


Skia 使用的所有色彩空間都透過如何將顏色從該色彩空間轉換為稱為 XYZ D50 的通用“連線”色彩空間來描述自身。


我們可以從相同的描述中推斷如何從 XYZ D50 空間轉換回原始色彩空間。


XYZ D50 是一個用三個維度表示的色彩空間,類似於 RGB,但 XYZ 部分與 RGB 完全不同,而是這些通道的線性混音。Y 最接近您對亮度的理解,但 X 和 Z 更加抽象。如果您熟悉 YUV,它有點像 YUV。“D50”部分指的是該空間的白點,大約為 5000 開爾文。

所有色彩管理繪圖都分為六個部分

  • 三個步驟將源顏色連線到 XYZ D50 空間
  • 然後三個對稱步驟將 XYZ D50 連接回目標色彩空間。

這些步驟中的一些可以相互抵消,變為無操作,有時甚至整個過程在源空間和目標空間相同時變為無操作。



色彩管理步驟

  • 如果源顏色是預乘的,則取消預乘 - alpha 不參與色彩管理,如果它被預乘,我們需要將它除掉使用源色彩空間的傳遞函式對源顏色進行線性化
  • 透過乘以 3x3 矩陣將這些未預乘的線性源顏色轉換為 XYZ D50 色域
  • 透過乘以 3x3 矩陣將這些 XYZ D50 顏色轉換為目標色域
  • 使用目標色彩空間傳遞函式的逆函式對該顏色進行編碼
  • 如果目標是預乘的,則乘以 alpha

色彩管理工作流程的要求

[edit | edit source]
  • 使用源或輸出特徵描述軟體獲得的準確裝置配置檔案。
  • 正確載入的顯示卡 LUT(或不需要 LUT 調整的顯示器配置檔案)。
  • 配置為使用正確顯示器配置檔案和輸入/輸出配置檔案的色彩管理應用程式,支援控制渲染意圖和黑點補償。

校準和配置需要

  • 對於輸入裝置(掃描器、相機等),需要一個色彩目標,配置檔案軟體將把該目標與製造商提供的色彩值進行比較。
  • 或者,對於輸出裝置(顯示器、印表機等),需要使用特定的裝置(分光光度計、色度計或分光色度計)讀取色彩色塊值,並將測量值與最初發送的輸出值進行比較。

顯示器校準和配置

[編輯 | 編輯原始碼]
KDE Plasma 5 上的色彩校正設定面板

在任何色彩管理工作流程中,顯示器都是關鍵要素之一,因為在某個步驟中,需要透過影像軟體處理和進行色彩調整以適應大多數影像,因此顯示器呈現準確色彩的能力至關重要。

顯示器色彩管理包括校準和配置。[23][24]

DisplayCAL 上的校準曲線

第一步是校準,透過調整顯示器控制和圖形卡的輸出(透過校準曲線)來匹配使用者定義的特徵,例如亮度、白點和伽瑪值。校準設定儲存在 .cal 檔案中。第二步是配置(特徵化),涉及測量已校準顯示器的響應並將其記錄在色彩配置檔案中。配置檔案儲存在 .icc 檔案(“ICC 檔案”)中。為了方便起見,校準設定通常與配置檔案一起儲存在 ICC 檔案中。

請注意,.icm 檔案與 .icc 檔案相同 - 唯一的區別在於名稱。

要看到正確的色彩,需要使用支援顯示器配置檔案的應用程式,以及在配置顯示器時使用的相同校準。僅校準不能產生準確的色彩。如果顯示器在配置之前進行了校準,則配置檔案僅在顯示器使用相同的校準(相同的顯示器控制調整和載入到影片卡查詢表中的相同校準曲線)時才能產生正確的色彩。macOS 內建支援載入校準曲線和安裝系統範圍的色彩配置檔案。Windows 7 及更高版本允許載入校準曲線,但此功能需要手動啟用。[25] Linux 和舊版本的 Windows 需要使用獨立的 LUT 載入器。

裝置配置檔案

[編輯 | 編輯原始碼]

ICC 配置檔案是跨平臺的,因此可以在其他作業系統上建立並在 Linux 下使用。但是,顯示器配置檔案需要一些額外的關注。由於顯示器配置檔案取決於顯示器本身和影片卡,因此顯示器配置檔案應該只與建立它的同一臺顯示器和影片卡一起使用。建立配置檔案後,不應調整顯示器設定。此外,由於大多數校準軟體在校準期間使用 LUT 調整,因此在每次啟動顯示伺服器(X11、Wayland)時(例如,每次圖形登入時)必須載入相應的 LUT。

在不太可能的情況下,如果 Linux 不支援色度計,則可以在 Windows 或 macOS 上建立的配置檔案可以在 Linux 下使用。

顯示通道查詢表

[編輯 | 編輯原始碼]

載入顯示通道 LUT 有兩種方法:

  1. 建立一個不修改影片卡 LUT 的配置檔案,因此不需要以後載入 LUT。理想情況下,這種方法將依賴於支援顯示資料通道 (DDC) 的顯示器 - 其內部顯示器設定透過校準軟體進行設定。不幸的是,能夠透過顯示資料通道 (DDC) 進行這些調整的顯示器並不常見,並且通常很昂貴。Linux 上只有一種校準軟體可以與支援顯示資料通道 (DDC) 的顯示器互動。[26] 對於主流顯示器,存在以下幾種選擇:
    • BasICColor 軟體與市面上大多數色度計配合使用,允許使用者透過顯示器介面調整顯示器輸出,然後選擇“配置檔案,不校準”選項。透過這樣做,可以建立不需要影片卡 LUT 調整的配置檔案。
    • 對於 EyeOne 裝置,EyeOne Match 允許使用者校準為“原生”伽瑪和白點目標,這會導致校準後顯示的 LUT 調整曲線為簡單的線性 1:1 對映(從角到角的直線)。
    • BasICColor 和 EyeOne Match 目前都沒有在 Linux 下執行,但它們能夠建立不需要 LUT 調整的配置檔案。
  2. 使用 LUT 載入器實際載入校準期間準備的配置檔案中包含的 LUT 調整。根據文件,這些載入器本身不會修改影片卡 LUT,而是透過修改 X 伺服器伽瑪斜坡來實現相同型別的調整。對於使用 X.org 或 XFree86 的 Linux 發行版,載入器可用 - 這是 Linux 上兩種最流行的 X 伺服器。其他 X 伺服器不能保證與當前可用的載入器一起使用。Linux 上有兩個 LUT 載入器可用:
    • Xcalib 是這樣的載入器之一,儘管它是一個命令列實用程式,但它非常易於使用。
    • dispwin 是 Argyll CMS 的一部分。
    • 如果由於任何原因無法載入 LUT,仍然建議進行校準的初始階段,在這些階段中,校準軟體會要求使用者對顯示器進行一些手動調整,因為這通常可以提高顯示器線性,並提供有關其色溫的資訊。對於 CRT 顯示器,特別建議這樣做。

色彩管理應用程式

[編輯 | 編輯原始碼]

在支援 ICC 的應用程式中,重要的是要確保為裝置分配了正確的配置檔案,主要是顯示器和印表機。一些 Linux 應用程式可以自動檢測顯示器配置檔案,而其他應用程式則要求手動指定。

雖然 Linux 上沒有指定的位置來儲存裝置配置檔案,但 /usr/share/color/icc/ 已成為事實上的標準。

在 WINE 下執行的大多數應用程式都沒有經過完整的色彩準確性測試。雖然每畫素 8 位(bpp)程式可能由於深度轉換錯誤而遇到一些色彩解析度問題,但更高深度應用程式中的色彩應該準確,只要這些程式基於用於載入 LUT 的相同顯示器配置檔案執行其色域轉換,並且保證載入了相應的 LUT 調整。

硬體加速

[編輯 | 編輯原始碼]


另請參閱

[編輯 | 編輯原始碼]

參考文獻

[編輯 | 編輯原始碼]
  1. 夏普/NEC 顯示器:色彩管理
  2. Steiff, Josef (2005). The Complete Idiot's Guide to Independent Filmmaking. Alpha Books. pp. 26–28.
  3. blender 手冊:色彩管理
  4. GIMP 位深:8 位、16 位還是 32 位?{完整指南} 作者:克里斯·帕克
  5. educativesite:2D 圖形管道方塊圖
  6. 麻省理工學院 6.837 2012 年秋季本科計算機圖形學講義
  7. 克勞德·海蘭德-艾倫的模擬距離估計顏色
  8. cnet:如何處理和編輯 RAW 檔案
  9. techradar:如何正確處理 RAW 影像
  10. 如何按正確順序後期處理照片 - CMS 由傑克遜·庫斯 2016 年 10 月 24 日撰寫
  11. 下頜骨小梁骨的碎形分析:瓦片計數法最佳瓦片大小 許京浩 等
  12. unity3d 手冊
  13. eizo:HDR 的來龍去脈 - HDR 工作流程
  14. 評估 HDR 管道相對於色調對映 SDR 管道,作者:Hamzeh Issa
  15. 維基百科中的影像中的傳遞函式
  16. 伽馬校正 作者:Mikael Hvidtfeldt Christensen
  17. computergraphics stackexchange 問題:對於著色器數學,為什麼線性 RGB 應該保持 sRGB 的色域
  18. 論壇 reallusion:1-PBR-線性工作流程
  19. unity3d 手冊:線性照明
  20. pmndrs:github 上的後期處理
  21. cuvilib wiki:效能和基準測試
  22. krita:顏色管理工作流程
  23. "校準與特徵化". 2017-11-28.
  24. "顯示器校準和配置的基本概念". 2017-11-28.
  25. "MS Windows 7 或更高版本:校準在登入時不會自動載入". 2017-11-28.
  26. NEC 顯示解決方案 SpectraViewII 支援 Linux
華夏公益教科書