【ISP】ISP pipeline(AI)

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_WeightNR_Temporal_Weight:空間與時間降噪權重。
  • 作用與場景:
    • 抑制高 ISO 或低光環境下產生的噪點,保證圖像清晰。
    • 涉及多場景下的降噪調優。
  • 預期效果:
    • 圖像噪點減少,細節保留更好。

2.4. LSC(Lens Shading Correction,鏡頭陰影校正)

  • 常見參數:
    • LSC_Gain_Map:增益映射表(例如 17×17 矩陣)。
    • LSC_Center_XLSC_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 數據出發,經過一系列模塊處理,逐步完成圖像校正和增強,最終生成用于顯示或編碼的標準圖像。常見處理模塊包括:

  1. DPC(Defect Pixel Correction) – 壞點檢測與修復
  2. BLC(Black Level Correction) – 黑電平校正
  3. NR(Noise Reduction) – 降噪處理
  4. LSC(Lens Shading Correction) – 鏡頭陰影校正
  5. AWB(Auto White Balance) – 自動白平衡
  6. Demosaic – 彩色插值
  7. CCM(Color Correction Matrix) – 顏色校正矩陣
  8. Gamma Correction – 伽馬校正
  9. EE(Edge Enhancement) – 邊緣增強
  10. 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)的寄存器配置細節

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/76430.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/76430.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/76430.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Rust開發】Rust快速入門,開發出Rust的第一個Hello World

?? 歡迎大家來到景天科技苑?? &#x1f388;&#x1f388; 養成好習慣&#xff0c;先贊后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者簡介&#xff1a;景天科技苑 &#x1f3c6;《頭銜》&#xff1a;大廠架構師&#xff0c;華為云開發者社區專家博主&#xff0c;…

Google Chrome下載受限制的解決方案【方法指南】

在國內使用網絡時&#xff0c;部分用戶在嘗試訪問Google Chrome官網下載谷歌瀏覽器時&#xff0c;常常遇到網頁無法打開或文件下載失敗的情況。這種下載受限制的問題多由網絡訪問政策或DNS解析異常導致。為了正常獲取Google Chrome的最新版安裝程序&#xff0c;用戶需要通過一些…

使用 new EventSource 實現前端實時通信

示例&#xff1a; eventSource單向通信 1. 什么是 EventSource&#xff1f; EventSource 是瀏覽器提供的一種實現服務器推送&#xff08;Server-Sent Events&#xff0c;簡稱 SSE&#xff09;功能的 API。它是基于 HTTP 協議的單向通信機制&#xff0c;可以通過服務器將實時數…

Android Input——查找并添加目標窗口(七)

在 Android 輸入系統中,InputDispatcher 的核心職責之一是將輸入事件正確地傳遞到目標窗口。上一篇文章我們介紹到 InputDispatcher 事件分發調用到 findFocusedWindowTargetsLocked() 函數查找焦點窗口,并將焦點窗口添加到目標窗口,這里我們繼續往下看。 一、獲取焦點窗口…

Spring Boot中Spring MVC相關配置的詳細描述及表格總結

以下是Spring Boot中Spring MVC相關配置的詳細描述及表格總結&#xff1a; Spring MVC 配置項詳解 1. 異步請求配置 spring.mvc.async.request-timeout 描述&#xff1a;設置異步請求的超時時間&#xff08;單位&#xff1a;毫秒&#xff09;。默認值&#xff1a;未設置&…

HTTP GET 和 POST 請求有什么區別

HTTP 的 GET 和 POST 請求是兩種常見的 HTTP 請求方法&#xff0c;它們有不同的特點和應用場景。以下是它們的主要區別&#xff1a; 1. 用途 GET&#xff1a;用于從服務器獲取數據或資源。GET 請求會附帶查詢參數在 URL 中&#xff0c;通常用于請求數據&#xff0c;如加載網頁…

從入門到精通【MySQL】 聯合查詢

文章目錄 &#x1f4d5;摘要&#x1f4d5;1. 多表聯合查詢時MySQL內部原理??1.1 實例&#xff1a;一個完整的聯合查詢過程 &#x1f4d5;2. 內連接&#x1f4d5;3. 外連接&#x1f4d5;4. 自連接&#x1f4d5;5. 子查詢??5.1 單行子查詢??5.2 多行子查詢??5.3 多列子查…

高可用之戰:Redis Sentinal(哨兵模式)

參考&#xff1a;Redis系列24&#xff1a;Redis使用規范 - Hello-Brand - 博客園 1 背景 在我們的《Redis高可用之戰&#xff1a;主從架構》篇章中&#xff0c;介紹了Redis的主從架構模式&#xff0c;可以有效的提升Redis服務的可用性&#xff0c;減少甚至避免Redis服務發生完…

加密≠安全:文件夾密碼遺忘背后的數據丟失風險與應對

在數字化時代&#xff0c;保護個人隱私和數據安全變得尤為重要。許多人選擇對重要文件夾進行加密&#xff0c;以防止未經授權的訪問。然而&#xff0c;一個常見且令人頭疼的問題也隨之而來——文件夾加密密碼遺忘。當你突然發現自己無法訪問那些加密的文件夾時&#xff0c;那種…

WPS宏開發手冊——附錄

目錄 系列文章7、附錄 系列文章 使用、工程、模塊介紹 JSA語法 JSA語法練習題 Excel常用Api Excel實戰 常見問題 附錄 7、附錄 顏色序列&#xff1a;在excel中設置顏色&#xff0c;只能設置顏色序號&#xff0c;不能直接設置rgb顏色 1、黑色 (Black)…

C++基礎精講-02

文章目錄 1.C/C申請、釋放堆空間的方式對比1.1C語言申請、釋放堆空間1.2C申請、釋放堆空間1.2.1 new表達式申請數組空間 1.3回收空間時的注意事項1.4malloc/free 和 new/delete 的區別 2.引用2.1 引用的概念2.2 引用的本質2.3 引用與指針的聯系與區別2.4 引用的使用場景2.4.1 引…

Spring Boot MongoDB 分頁工具類封裝 (新手指南)

Spring Boot MongoDB 分頁工具類封裝 (新手指南) 目錄 引言&#xff1a;為何需要分頁工具類&#xff1f;工具類一&#xff1a;PaginationUtils - 簡化 Pageable 創建 設計目標代碼實現 (PaginationUtils.java)如何使用 PaginationUtils 工具類二&#xff1a;PageResponse<…

MyBatis的緩存、逆向工程、使用PageHelper、使用PageHelper

一、MyBatis的緩存 緩存&#xff1a;cache 緩存的作用&#xff1a;通過減少IO的方式&#xff0c;來提高程序的執行效率。 mybatis的緩存&#xff1a;將select語句的查詢結果放到緩存&#xff08;內存&#xff09;當中&#xff0c;下一次還是這條select語句的話&#xff0c;直…

java中的JNI調用c庫

1. 簡單demo 如果是在某個項目中有包名就需要自己找ai問問去改寫下cmd命令去編譯執行等 java文件&#xff08;HelloJNI.java&#xff09; public class HelloJNI {// 聲明 native 方法public native void sayHello();// 加載本地庫static {System.loadLibrary("hello&quo…

人工智能:GPT技術應用與未來展望

GPT(Generative Pre-trained Transformer)作為自然語言處理領域的代表性技術,近年來在各行業的實際應用中展現出廣泛潛力。結合其技術特性與行業需求,以下是GPT的主要應用場景、案例分析及未來挑戰的總結: 一、核心應用領域與案例 文本生成與內容創作 自動化內容生產:GPT…

前端筆記-ECMAScript語法概覽

更多詳細可以查看1.1 ES6 教程 | 菜鳥教程 這里我將大概記錄ES與JS大概不一樣的部分&#xff0c;方便聯合記憶。 歷史與關系 ECMAScript&#xff1a;是一種由 Ecma 國際組織制定的腳本語言規范&#xff0c;它是 JavaScript 的標準化版本。ECMAScript 為 JavaScript 提供了語…

操作主機的管理

1.在AD林范圍內&#xff0c;有哪幾個操作主機角色 架構主機&#xff08;Schema Master&#xff09; 功能&#xff1a;負責整個AD林中所有對象和屬性的定義&#xff0c;是唯一可以更新目錄架構的DC。架構更新會從架構主機復制到目錄林中的所有其他域控制器。 作用范圍&#xf…

【Linux】網絡編程

目錄 端口號 網絡字節序 socket編程 接口 sockaddr結構 udp網絡程序 創建套接字 綁定 接收 發送 客戶端需要綁定嗎&#xff1f; 客戶端執行方法 本地環回地址 終端文件 代碼 tcp網絡程序 SOCK_STREAM 監聽 查詢網絡信息 獲取新連接 地址轉換函數 客戶端綁…

Go 語言中的select是做什么的

Go 語言中的 select 是做什么的 在 Go 語言中&#xff0c;select 語句是用于處理多個通道&#xff08;channel&#xff09;操作的一種控制結構。它類似于 switch 語句&#xff0c;但專門用于并發編程&#xff0c;允許 Goroutine 在多個通道上等待操作&#xff08;發送或接收&a…

智慧班牌系統解決方案,SaaS智慧電子班牌云平臺

智慧班牌系統解決方案 系統概述 智慧班牌是智慧校園建設不斷發展的產物&#xff0c;是教育信息化改革的載體。通過智慧班牌可以高效便捷傳遞各種知識信息和通知信息、及時反饋課堂信息、實現班級的透明化管理。智慧班牌將學生平安考勤、異常出勤情況及時反饋至家長、老師&…