ISP Pipeline 全流程概覽
ISP(Image Signal Processing,圖像信號處理)流程通常從原始 Bayer 數據出發,經過一系列模塊處理,逐步完成圖像校正和增強,最終生成用于顯示或編碼的標準圖像。常見處理模塊包括:
DPC(Defect Pixel Correction) – 壞點檢測與修復
BLC(Black Level Correction) – 黑電平校正
NR(Noise Reduction) – 降噪處理
LSC(Lens Shading Correction) – 鏡頭陰影校正
AWB(Auto White Balance) – 自動白平衡
Demosaic – 彩色插值
CCM(Color Correction Matrix) – 顏色校正矩陣
Gamma Correction – 伽馬校正
EE(Edge Enhancement) – 邊緣增強
YUV/CSC – 顏色空間轉換(RGB→YUV)
MTK67/68 平臺 ISP Pipeline 調試大綱
1. ISP Pipeline 總覽
- 定義與流程
- 解釋 ISP Pipeline 的基本概念,即如何從原始 Bayer 圖像(Raw Image)經過逐級處理(如 DPC → BLC → NR → LSC → AWB → Demosaic → CCM → Gamma → EE → YUV/CSC)最終輸出標準圖像。
- 整體目標
- 保障圖像質量、色彩還原、亮度調節與噪聲控制。
2. 各模塊詳細參數說明
針對 MTK67/68 平臺,列出常用的各模塊及其調試參數:
2.1. DPC(Defect Pixel Correction,壞點修復)
- 常見參數:
DPC_Enable
:啟用/禁用壞點修復。DPC_Threshold
:壞點檢測的閾值。DPC_Mode
:修復模式(靜態/動態)。
- 作用與場景:
- 自動檢測傳感器中的異常像素,修復后減少圖像出現亮點或暗點。
- 適用于生產及后期圖像質量提升。
- 預期效果:
- 圖像整體更干凈,無明顯壞點。
2.2. BLC(Black Level Correction,黑電平校正)
- 常見參數:
BLC_Offset_R/G/B
:各通道黑電平偏移量。
- 作用與場景:
- 校正傳感器輸出的基準電平,確保暗部正確還原。
- 應用于低照度或暗場環境下的圖像調優。
- 預期效果:
- 暗部細節更加豐富,無灰霧或色偏。
2.3. NR(Noise Reduction,降噪處理)
- 常見參數:
NR_Luma_Strength
:亮度降噪強度。NR_Chroma_Strength
:色度降噪強度。NR_Spatial_Weight
、NR_Temporal_Weight
:空間與時間降噪權重。
- 作用與場景:
- 抑制高 ISO 或低光環境下產生的噪點,保證圖像清晰。
- 涉及多場景下的降噪調優。
- 預期效果:
- 圖像噪點減少,細節保留更好。
2.4. LSC(Lens Shading Correction,鏡頭陰影校正)
- 常見參數:
LSC_Gain_Map
:增益映射表(例如 17×17 矩陣)。LSC_Center_X
、LSC_Center_Y
:鏡頭中心坐標。
- 作用與場景:
- 補償因鏡頭結構造成的邊緣暗角現象。
- 廣角鏡頭、大光圈鏡頭典型應用。
- 預期效果:
- 圖像中心與邊緣亮度銜接自然,無明顯暗角。
2.5. AWB(Auto White Balance,自動白平衡)
- 常見參數:
AWB_Gain_R/G/B
:各通道增益。AWB_Light_Source
:光源類型選項(如日光、陰天、白熾燈)。
- 作用與場景:
- 自動調節白平衡,確保在不同光照條件下色彩還原準確。
- 較為復雜的環境調整中尤為重要。
- 預期效果:
- 白色物體保持中性,整體色彩自然。
2.6. Demosaic(彩色插值)
- 常見參數:
Demosaic_Algorithm
:插值算法選擇(線性、邊緣感知等)。Demosaic_Threshold
:邊緣檢測閾值。
- 作用與場景:
- 將原始 Bayer 數據轉換為全彩圖像,減少偽色和摩爾紋。
- 特別需要在細節和邊緣處理場景中調優。
- 預期效果:
- 圖像細節恢復良好,偽色減少。
2.7. CCM(Color Correction Matrix,顏色校正矩陣)
- 常見參數:
CCM_Matrix[3][3]
:9元素顏色校正矩陣。CCM_Offset_R/G/B
:顏色偏移補償。CCM_Scenario_Mode
:根據場景(如 Daylight、Fluorescent 等)切換矩陣。
- 作用與場景:
- 把傳感器原始顏色轉換為標準 RGB,確保色彩準確。
- 依賴于不同光源場景的色溫調整。
- 預期效果:
- 色彩還原真實,減少顏色偏差。
2.8. Gamma(伽馬校正)
- 常見參數:
Gamma_LUT[256]
:查找表實現輸入到輸出映射。Gamma_Segmented_Curve
:分段伽馬曲線設置。Gamma_Scene_Mode
:場景模式切換(Night/Normal/Outdoor)。
- 作用與場景:
- 調整圖像亮度分布,使視覺感受更自然。
- 針對不同場景設計不同的 gamma 曲線。
- 預期效果:
- 圖像灰階平滑過渡,細節表現更佳。
2.9. EE(Edge Enhancement,邊緣增強)
- 常見參數:
EE_Strength
:增強強度(數值范圍如 0-15)。EE_Threshold
:邊緣觸發門限。EE_HPF_Gain
:高頻信號增益。
- 作用與場景:
- 強化圖像邊緣,使細節更加清晰。
- 應用于文字、輪廓清晰要求較高的場景,但避免過度引起偽影。
- 預期效果:
- 圖像銳度提升,但避免 halo 效果。
2.10. YUV/CSC(YUV 數據格式與顏色空間轉換)
- 常見參數:
YUV_Format
:格式選擇(NV21、NV12、422 等)。CSC_Matrix
:RGB 到 YUV 的轉換矩陣。UV_Swap_Enable
:是否交換 U/V 通道。Range_Mode
:全范圍與限范圍設定。
- 作用與場景:
- 將 RGB 數據轉換為適合顯示或編碼的 YUV 格式。
- 在實時預覽、視頻編碼中尤為關鍵。
- 預期效果:
- 色彩、亮度精準還原,格式符合輸出要求。
3. 調試腳本示例(MTK67/68 平臺案例)
3.1. MTK 平臺配置示例(配置文件格式)
- 示例文件:
[ISP_DPC] Enable = 1 Threshold = 16 Mode = Dynamic[ISP_BLC] R_Offset = 64 G_Offset = 64 B_Offset = 64[ISP_NR] Luma_Strength = 5 Chroma_Strength = 3[ISP_AWB] Enable = 1 Mode = Auto R_Gain = 1.15 B_Gain = 0.98
- 說明:
- 通過修改配置文件來導入調試工具進行參數燒寫與實時測試。
3.2. 高通平臺配置示例(XML 格式)
- 示例文件:
<module name="DPC"><enable>1</enable><threshold>18</threshold> </module> <module name="BLC"><r_offset>64</r_offset><g_offset>64</g_offset><b_offset>64</b_offset> </module> <module name="AWB"><r_gain>1.2</r_gain><b_gain>1.1</b_gain><mode>gray_world</mode> </module> <module name="LSC"><table><!-- 17x17 表格數據 --></table> </module>
- 說明:
- 高通平臺通常通過 XML 配置,結合專用調試工具(如 QXDM 或 Camera IQ Tuning Tool)進行調參。
4. 主觀測試圖模板建議
針對每個模塊,在日常調試中可使用以下測試圖模板評估效果:
-
DPC:
- 測試圖: 暗場圖(黑布或蓋鏡頭)
- 作用: 檢查壞點修復是否正常,是否仍有漏修或誤修現象。
-
BLC:
- 測試圖: 灰卡或黑場拍攝
- 作用: 檢查各通道黑電平是否準確,避免暗部偏色。
-
NR:
- 測試圖: 高 ISO 條件下的細節圖(如書架、桌面)
- 作用: 檢測降噪效果,比較細節保留與噪聲抑制的平衡。
-
LSC:
- 測試圖: 均勻白墻或灰卡圖像
- 作用: 評估中心與邊緣亮度補償效果,檢查是否存在明顯暗角。
-
AWB:
- 測試圖: 灰卡、色卡(如 X-Rite 標準色卡)
- 作用: 判斷白平衡準確性,驗證不同光源下的顏色還原。
-
Demosaic:
- 測試圖: 梳子、報紙、線條圖
- 作用: 檢測偽色和摩爾紋情況,觀察細節的完整性。
-
CCM:
- 測試圖: X-Rite 24色卡
- 作用: 評估整體色彩還原準確性,量化 DeltaE 值。
-
Gamma:
- 測試圖: 灰階圖、黑白對比圖
- 作用: 檢查圖像亮度分布,確保灰階過渡自然。
-
EE:
- 測試圖: 高對比邊緣圖(如毛發、金屬邊緣)
- 作用: 判斷細節銳化效果與副作用(如 halo 效應)。
-
YUV/CSC:
- 測試圖: YUV 格式測試圖
- 作用: 校驗輸出格式是否正確、顏色是否存在偏差或 UV 交換錯誤。
5. 總結與后續建議
-
整體調試流程:
- 先從基礎模塊(如 DPC、BLC)入手,再逐步調優細節(NR、AWB、CCM 等)。
- 結合主客觀測試(測試圖與量化指標)綜合判斷調參效果。
-
調試工具推薦:
- MTK 平臺: 使用專用配置文件、CameraTool 與調試軟件。
- 高通平臺: 使用 XML 文件配合 QXDM、Camera IQ Tuning Tool 進行逐寄存器調試。
-
進階需求:
- 根據不同傳感器及場景,進一步優化各模塊參數。
- 針對具體問題(如壞點漏檢、色偏異常),調整對應參數并使用相應測試圖進行驗證。
6. 附錄:關鍵術語釋義
- Bayer 格式: 攝像頭常用的顏色濾光片排列方式。
- DeltaE: 顏色差異的量化指標。
- LUT(查找表): 用于轉換輸入輸出值的預設數據表。
- 動態與靜態模式: 動態模式通常根據實時場景調整參數;靜態模式則使用固定配置。
下面提供一份詳細的 ISP Pipeline 每一部分算法原理解析,從整體流程、關鍵步驟講解,到偽代碼示例與詳細注釋,方便初學者從代碼層面和理論原理上全面理解各模塊的作用。
ISP Pipeline 全流程概覽
ISP(Image Signal Processing,圖像信號處理)流程通常從原始 Bayer 數據出發,經過一系列模塊處理,逐步完成圖像校正和增強,最終生成用于顯示或編碼的標準圖像。常見處理模塊包括:
- DPC(Defect Pixel Correction) – 壞點檢測與修復
- BLC(Black Level Correction) – 黑電平校正
- NR(Noise Reduction) – 降噪處理
- LSC(Lens Shading Correction) – 鏡頭陰影校正
- AWB(Auto White Balance) – 自動白平衡
- Demosaic – 彩色插值
- CCM(Color Correction Matrix) – 顏色校正矩陣
- Gamma Correction – 伽馬校正
- EE(Edge Enhancement) – 邊緣增強
- YUV/CSC – 顏色空間轉換(RGB→YUV)
各模塊既有其獨立的功能,又需要前后相互配合,下面按模塊詳細解析其算法原理并附上偽代碼示例及注釋說明。
1. DPC – Defect Pixel Correction(壞點修復)
算法原理
- 目標:檢測并修復傳感器中由于制造缺陷或老化導致的壞點,避免這些異常像素影響最終圖像質量。
- 實現思路:對于每個像素,通過比較與其鄰域像素的差異來判斷其是否為壞點;一旦判定為壞點,則用鄰域像素的中值或加權平均值替代。
偽代碼示例(C-like 風格)
// 輸入:raw_image[][] 為原始傳感器數據,threshold 為壞點檢測閾值
for (int i = 1; i < height - 1; i++) {for (int j = 1; j < width - 1; j++) {// 獲取像素 (i,j) 周圍3x3鄰域數據(不包括自身也可包括)int neighbors[8];int idx = 0;for (int m = -1; m <= 1; m++) {for (int n = -1; n <= 1; n++) {if (m == 0 && n == 0)continue; // 排除自身neighbors[idx++] = raw_image[i + m][j + n];}}// 計算鄰域中值int median = compute_median(neighbors, 8);// 如果當前像素與中值差異超過閾值,則認為是壞點if (abs(raw_image[i][j] - median) > threshold) {// 修復:用中值替換壞點raw_image[i][j] = median;}}
}
注釋說明:
- compute_median:計算數組中值的函數(可用排序或者選擇算法實現)。
- 通過比較當前像素值與鄰域中值的差距判斷是否異常,簡單有效但實際算法可能會結合更多統計特性或動態閾值。
2. BLC – Black Level Correction(黑電平校正)
算法原理
- 目標:校正每個通道(R、G、B)的基準黑電平,消除傳感器在暗部輸出的偏置。
- 實現思路:從圖像的每個像素中減去預先測量得到的黑電平偏移量,通常對不同顏色通道采用不同的偏移值。
偽代碼示例
// 假設 black_offset_R, black_offset_G, black_offset_B 為各通道的校正值
for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {// 讀取當前像素的 Bayer 格式值,根據位置判定其顏色通道if (isRedPixel(i, j)) {raw_image[i][j] = max(raw_image[i][j] - black_offset_R, 0);} else if (isGreenPixel(i, j)) {raw_image[i][j] = max(raw_image[i][j] - black_offset_G, 0);} else if (isBluePixel(i, j)) {raw_image[i][j] = max(raw_image[i][j] - black_offset_B, 0);}}
}
注釋說明:
- isRedPixel/isGreenPixel/isBluePixel:判斷像素在 Bayer 格式下的顏色位置(如RGGB、BGGR等排列規則)。
- 使用
max
保障輸出不為負數。
3. NR – Noise Reduction(降噪處理)
算法原理
- 目標:減少圖像中由于高 ISO、低光等條件下產生的隨機噪聲,同時盡量保留細節。
- 實現思路:常見方法包括空間濾波(如均值、Gaussian或中值濾波)、時間濾波(幀間降噪)以及結合兩者的混合方法。
偽代碼示例(使用 3x3 高斯濾波)
// 定義一個簡單的 3x3 Gaussian 模板
float kernel[3][3] = {{1/16.0, 2/16.0, 1/16.0},{2/16.0, 4/16.0, 2/16.0},{1/16.0, 2/16.0, 1/16.0}
};for (int i = 1; i < height - 1; i++) {for (int j = 1; j < width - 1; j++) {float sum = 0.0;// 對 3x3 鄰域做卷積for (int m = -1; m <= 1; m++) {for (int n = -1; n <= 1; n++) {sum += raw_image[i + m][j + n] * kernel[m + 1][n + 1];}}// 將濾波結果存入降噪圖像(可以直接覆蓋或存到另一個緩沖區)denoised_image[i][j] = (int)sum;}
}
注釋說明:
- 實際中會針對亮度(Luma)和色度(Chroma)分別設定不同的降噪強度。
- 空間濾波雖簡單,但可能造成細節損失,故高端方案會采用自適應或多尺度方法。
4. LSC – Lens Shading Correction(鏡頭陰影校正)
算法原理
- 目標:補償由于鏡頭光照不均(中心亮、邊緣暗)產生的暗角現象。
- 實現思路:預先標定或計算得到一個增益表(Gain Map),每個位置對應一個增益因子,處理時將該因子與原始像素值相乘。
偽代碼示例
// 假設 gain_map 是一個二維數組(例如 17x17),需通過插值映射到整幅圖像上
for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {// 根據 (i, j) 坐標計算在 Gain Map 中的對應位置,并進行雙線性插值獲取增益值float gain = interpolate_gain(gain_map, i, j, height, width);// 應用校正:乘以增益corrected_image[i][j] = raw_image[i][j] * gain;}
}
注釋說明:
- interpolate_gain:將圖像坐標映射到較小增益表,并通過雙線性插值計算增益;該函數依賴于標定數據。
- 校正后注意邊緣可能需裁剪或平滑處理。
5. AWB – Auto White Balance(自動白平衡)
算法原理
- 目標:在不同光照條件下自動調整各色通道增益,使得白色或中性區域呈現中性灰色。
- 實現思路:常用的方法有灰世界假設(所有顏色平均值應相等)、最大白補償法等;計算各通道平均值后,確定增益補償。
偽代碼示例
// 統計圖像中各通道的平均值
long sum_R = 0, sum_G = 0, sum_B = 0;
int count_R = 0, count_G = 0, count_B = 0;for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {if (isRedPixel(i, j)) {sum_R += raw_image[i][j];count_R++;} else if (isGreenPixel(i, j)) {sum_G += raw_image[i][j];count_G++;} else if (isBluePixel(i, j)) {sum_B += raw_image[i][j];count_B++;}}
}// 計算平均值
float avg_R = (float)sum_R / count_R;
float avg_G = (float)sum_G / count_G;
float avg_B = (float)sum_B / count_B;// 根據灰世界假設,理想狀態各通道平均值應相等,這里采用綠色作為參考
float gain_R = avg_G / avg_R;
float gain_B = avg_G / avg_B;// 對圖像所有相應通道應用增益補償
for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {if (isRedPixel(i, j)) {awb_image[i][j] = raw_image[i][j] * gain_R;} else if (isGreenPixel(i, j)) {awb_image[i][j] = raw_image[i][j]; // 通常保持不變} else if (isBluePixel(i, j)) {awb_image[i][j] = raw_image[i][j] * gain_B;}}
}
注釋說明:
- 此處采用簡單灰世界算法,實際系統可能結合局部統計和區域分割對不同區域分別調節。
- 調整后的結果需進一步與色卡比對驗證準確性。
6. Demosaic – 彩色插值
算法原理
- 目標:將拜耳格式的單色通道數據重建為全彩(RGB)圖像。
- 實現思路:根據 Bayer 模式(如 RGGB),使用鄰域插值方法(例如雙線性插值、方向插值等)填充各像素缺失的顏色信息。
偽代碼示例(簡單雙線性插值示例)
// 輸出三通道圖像 rgb_image[h][w][3]
for (int i = 1; i < height - 1; i++) {for (int j = 1; j < width - 1; j++) {// 根據 Bayer 排列判斷當前像素類別if (isRedPixel(i, j)) {rgb_image[i][j][0] = raw_image[i][j]; // red// 綠色取左右或上下的平均rgb_image[i][j][1] = (raw_image[i][j - 1] + raw_image[i][j + 1] +raw_image[i - 1][j] + raw_image[i + 1][j]) / 4;// 藍色取對角線平均rgb_image[i][j][2] = (raw_image[i - 1][j - 1] + raw_image[i - 1][j + 1] +raw_image[i + 1][j - 1] + raw_image[i + 1][j + 1]) / 4;} else if (isGreenPixel(i, j)) {// 類似算法,依據具體位置計算缺失通道//……} else if (isBluePixel(i, j)) {rgb_image[i][j][2] = raw_image[i][j]; // blue// 補充 red 和 green 通道同上操作//……}}
}
注釋說明:
- 此示例僅展示一種簡單的雙線性插值方法,實際應用中可采用方向敏感插值以減少馬賽克偽影。
- 分別對不同 Bayer 格式需要區分算法細節。
7. CCM – Color Correction Matrix(顏色校正矩陣)
算法原理
- 目標:使用顏色校正矩陣將傳感器采集的原始 RGB 數據轉換為標準顏色空間,以達到色彩還原的目的。
- 實現思路:對每個像素的 RGB 分量做線性變換,公式為:
偽代碼示例
// 假設 ccm_matrix 為 3x3 浮點數組,ccm_offset 為 3 元素的偏移數組
for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {float R = rgb_image[i][j][0];float G = rgb_image[i][j][1];float B = rgb_image[i][j][2];// 線性變換計算float new_R = ccm_matrix[0][0] * R + ccm_matrix[0][1] * G + ccm_matrix[0][2] * B + ccm_offset[0];float new_G = ccm_matrix[1][0] * R + ccm_matrix[1][1] * G + ccm_matrix[1][2] * B + ccm_offset[1];float new_B = ccm_matrix[2][0] * R + ccm_matrix[2][1] * G + ccm_matrix[2][2] * B + ccm_offset[2];// 限制輸出范圍在 [0,255]rgb_image[i][j][0] = clamp(new_R, 0, 255);rgb_image[i][j][1] = clamp(new_G, 0, 255);rgb_image[i][j][2] = clamp(new_B, 0, 255);}
}
注釋說明:
- clamp 函數確保校正后數值在有效顯示范圍內。
- 校正矩陣和偏移值通常在標定階段確定,并可能根據不同場景(如日光、熒光燈等)動態切換。
8. Gamma Correction(伽馬校正)
算法原理
- 目標:調整圖像的亮度分布,使圖像更符合人眼對明暗非線性感知的特點。
- 實現思路:通過預先計算的 Gamma LUT(查找表)實現非線性映射,將輸入像素映射到新的輸出值上。
偽代碼示例
// 假設 gamma_LUT 為 256 元素的查找表(預先根據所需 gamma 值生成)
for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {// 對每個顏色通道應用 Gamma LUTrgb_image[i][j][0] = gamma_LUT[rgb_image[i][j][0]];rgb_image[i][j][1] = gamma_LUT[rgb_image[i][j][1]];rgb_image[i][j][2] = gamma_LUT[rgb_image[i][j][2]];}
}
注釋說明:
- Gamma LUT 可通過公式生成,例如:
[
LUT[i] = \text{round}(255 \times (\frac{i}{255})^{\frac{1}{\gamma}})
]- 使用查找表比實時計算更高效。
9. EE – Edge Enhancement(邊緣增強)
算法原理
- 目標:提高圖像邊緣的清晰度,使物體輪廓更明顯。
- 實現思路:先提取圖像中的細節信息(例如通過高通濾波),然后將細節信息按一定比例增強后加回原始圖像,實現增強效果。
偽代碼示例
// 采用簡單的 unsharp mask 算法
// blurred 為對原始圖像進行低通濾波后的結果(如使用 Gaussian 模糊)
for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {// 細節 = 原圖 - 模糊圖int detail = original_image[i][j] - blurred_image[i][j];// 增強后的圖像 = 原圖 + 增強因子 * 細節enhanced_image[i][j] = original_image[i][j] + EE_Strength * detail;// 限制范圍,防止溢出enhanced_image[i][j] = clamp(enhanced_image[i][j], 0, 255);}
}
注釋說明:
- 關鍵參數 EE_Strength 控制增強幅度,過高會產生 halo 效果。
- 低通濾波的選擇(如 Gaussian、均值濾波)直接影響最終效果。
10. YUV/CSC – 顏色空間轉換(RGB to YUV)
算法原理
- 目標:將 RGB 圖像轉換為 YUV 格式,便于后續視頻編碼或顯示。
- 實現思路:使用線性轉換公式將 RGB 分量轉換為 Y(亮度)、U/V(色度)分量。
偽代碼示例
for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {int R = rgb_image[i][j][0];int G = rgb_image[i][j][1];int B = rgb_image[i][j][2];// 根據 BT.601 標準的常用轉換公式int Y = ( 66 * R + 129 * G + 25 * B + 128) >> 8; // 右移8相當于除以256int U = (-38 * R - 74 * G + 112 * B + 128) >> 8;int V = (112 * R - 94 * G - 18 * B + 128) >> 8;// 在輸出時加上偏移量(通常 Y: 16-235, U/V: 16-240)或直接根據 Full Range 映射處理yuv_image[i][j][0] = clamp(Y + 16, 0, 255);yuv_image[i][j][1] = clamp(U + 128, 0, 255);yuv_image[i][j][2] = clamp(V + 128, 0, 255);}
}
注釋說明:
- 上述轉換公式中權重系數依 BT.601 標準,可根據不同標準(BT.709、BT.2020)調整。
- “clamp” 用于防止數據超出 0~255 的范圍。
- 在實際運用中還要考慮 UV 通道是否需要交換順序(例如 NV12 與 NV21 的差異)。
總結
- 每個模塊在 ISP Pipeline 中均承擔著特定的任務,從基礎的壞點修復、黑電平校正,到顏色調整、圖像增強與格式轉換。
- 所有步驟可以串聯形成一條完整的圖像處理流水線,每步均可對輸出圖像質量產生顯著影響。
- 上述偽代碼均為簡化示例,實際代碼中會涉及更復雜的邊界處理、動態參數調整以及硬件寄存器的配置。
希望這份詳細的解釋和代碼示例能幫助初學者從理論和實戰兩個角度掌握 ISP Pipeline 的各個算法原理及其實現方式。如果需要更具體的平臺驅動代碼或針對特定芯片(如 MTK67/68)的寄存器配置細節