7.15. 樹莓派 PiSP 後端記憶體到記憶體的 ISP (pisp-be)¶
7.15.1. PiSP 後端¶
PiSP 後端是一個記憶體到記憶體的影像訊號處理器 (ISP),它從 DRAM 記憶體讀取影像資料,並根據應用程式透過配置緩衝區中的引數所指定的方式執行影像處理,然後透過兩個獨立的輸出通道將畫素資料寫回記憶體。
ISP 暫存器和程式設計模型記錄在 樹莓派影像訊號處理器 (PiSP) 規範文件 中。
PiSP 後端 ISP 以瓦片形式處理影像。影像鑲嵌(tessellation)的處理和低階配置引數的計算由一個名為 libpisp 的自由軟體庫實現。
完整的影像處理管線,包括透過 MIPI CSI-2 相容的捕獲介面從影像感測器捕獲原始 Bayer 資料,將其儲存在 DRAM 記憶體中,並在 PiSP 後端進行處理以獲得應用程式可用的影像,此管線在 libcamera 中實現,作為樹莓派平臺支援的一部分。
7.15.2. pisp-be 驅動程式¶
樹莓派 PiSP 後端 (pisp-be) 驅動程式位於 drivers/media/platform/raspberrypi/pisp-be 目錄下。它使用 V4L2 API 註冊多個影片捕獲和輸出裝置,並使用 V4L2 subdev API 為 ISP 註冊一個子裝置,該子裝置透過 媒體控制器 (MC) API 實現的單一媒體圖連線影片裝置。
pisp-be 驅動程式註冊的媒體拓撲結構如下所示
該媒體圖註冊了以下影片裝置節點
pispbe-input: 用於提交給 ISP 處理的影像的輸出裝置。
pispbe-tdn_input: 用於時域降噪的輸出裝置。
pispbe-stitch_input: 用於影像拼接(HDR)的輸出裝置。
pispbe-output0: 用於處理後圖像的第一個捕獲裝置。
pispbe-output1: 用於處理後圖像的第二個捕獲裝置。
pispbe-tdn_output: 用於時域降噪的捕獲裝置。
pispbe-stitch_output: 用於影像拼接(HDR)的捕獲裝置。
pispbe-config: 用於 ISP 配置引數的輸出裝置。
7.15.2.1. pispbe-input¶
要由 ISP 處理的影像被排隊到 pispbe-input 輸出裝置節點。有關 ISP 支援的輸入影像格式列表,請參閱 樹莓派影像訊號處理器 (PiSP) 規範文件。
7.15.2.2. pispbe-tdn_input, pispbe-tdn_output¶
pispbe-tdn_input 輸出影片裝置接收由時域降噪模組處理的影像,這些影像從 pispbe-tdn_output 捕獲影片裝置獲取。使用者空間負責維護兩個裝置上的佇列,並確保在輸出端完成的緩衝區被排隊到輸入端。
7.15.2.3. pispbe-stitch_input, pispbe-stitch_output¶
為了實現 HDR(高動態範圍)影像處理,使用了影像拼接和色調對映模組。pispbe-stitch_output 將影像寫入記憶體,而 pispbe-stitch_input 接收先前寫入的幀以與當前輸入影像一起處理。使用者空間負責維護兩個裝置上的佇列,並確保在輸出端完成的緩衝區被排隊到輸入端。
7.15.2.4. pispbe-output0, pispbe-output1¶
這兩個捕獲裝置將 ISP 處理後的畫素資料寫入記憶體。
7.15.2.5. pispbe-config¶
pispbe-config 輸出影片裝置接收一個配置引數緩衝區,該緩衝區定義了 ISP 要執行的所需影像處理。
ISP 配置引數的格式由 pisp_be_tiles_config C 結構體定義,每個引數的含義在 樹莓派影像訊號處理器 (PiSP) 規範文件 中描述。
7.15.3. ISP 配置¶
ISP 配置僅由引數緩衝區的內容描述。使用者空間需要使用 V4L2 API 配置的唯一引數是輸出和捕獲影片裝置上的影像格式,用於驗證引數緩衝區的內容。