海思ISP簡介

原文鏈接:https://blog.51cto.com/shugenyin/1851232

參考:https://blog.51cto.com/shugenyin/1851232

https://blog.csdn.net/qq_32896111/article/details/99643494

https://ask.csdn.net/questions/364796

https://blog.csdn.net/dddxxxx/article/details/77451196

由於前一段時間一直在搞海思的芯片,所以最近就想對自己在這一塊做一個總結一座備份,主要的參考還是海思的文檔。

就海思芯片來說,文檔確實很多,對於初學者有很大的幫助。所以對於初學者來說,海思文檔肯定是第一手的參考資料。

ISP的概述:

海思文檔是這樣描述的:ISP 通過一系列數字圖像處理算法完成對數字圖像的效果處理。主要包括 3A、壞點校正、去噪、強光抑制、背光補償、色彩增強、鏡頭陰影校正等處理。ISP 包括邏輯部分以及運行在其上的 firmware

其實對於純做嵌入式開發 的來說,這個概念確實不好懂,畢竟涉及到太多的光學方面的專業知識和經驗,這個還真不是在網上泡個幾天就能夠搞得定,畢竟光這些概念就把人搞蒙逼了,如果有光電學科背景的話,應該會好很多吧。

ISP的控制結構:

關於這方面呢,海思也給了一個描述,筆者覺得,還是這張圖比較管用。

從上圖可知,sensor將lens投射到的光信號光電轉換後,將Bayer格式的原始圖像(RAW)送給isp,ISP經過算法處理,輸出RGB空間域的圖像給後端的視頻採集單元。在這個過程中,ISP 通過運行在其上的 firmware ISP邏輯,lens sensor 進行相應控制,進而完成自動光圈、自動曝光、自動白平衡等功能。其中,firmware 的運轉靠視頻採集單元的中斷驅動。PQ Tools 工具通過網口或者串口完成對 ISP 的在線圖像質量調節。

從上面的圖圖片和描述,可以知道整個ISP分爲firmwareisp 處理邏輯,ISP邏輯現將sensor發送過來的Bayer格式的RAW圖完成算法處理後,並將統計處當前的圖像的實時信息。firmware通過獲取ISP邏輯的圖像統計信息,從新計算,通過i2cspi或者pwm反饋給lenssensorisp邏輯,已達到自動調節圖像質量的目的。

架構方面:

下面着重說一下ISP中的firmware這一部分內容。

文件的組織:

firmwaredrv目錄下的代碼(pwmsnesor_i2csensor_spi)生成的驅動程序(相對應的ko文件)向用戶態上報ISP的中段,並以該中斷驅動 Firmware ISP 控制單元運轉。ISP 控制單元驅動程中獲取統計信息,並調度基礎算法單元和 3A 算法庫,後通過驅動程置寄存器

從官方文檔的描述來看,雖然firmware的運轉靠的是視頻採集單元的中段驅動,以及Firmware 通過獲取 ISP 邏輯的圖像統計信息,重新計算,反饋控制 lenssensor ISP 邏輯,以達到自動調節圖像質量的目的。但是總他的架構上看的話,其實還包含了很多的軟件庫,ISP Firmware 包含三部分,一部分是 ISP 控制單元和基礎算法庫,一部分是AE/AWB 算法庫,一部分是 sensor 庫。Firmware 設計的基本思想是單獨提供 3A 算法庫,由 ISP 控制單元調度基礎算法庫和 3A 算法庫,同時 sensor 庫分別向 ISP 基礎算法庫和 3A 算法庫註冊函數回調,以實現差異化的 sensor 適配。

不同的 sensor 都以回調函數的形式,向 ISP 算法庫註冊控制函數。ISP 控制單元調度基礎算法庫和 3A 算法庫時,將通過這些回調函數獲取初始化參數,並控制 sensor,如調節曝光時間、模擬增益、數字增益,控制 lens 步進聚焦或旋轉光圈等。

下面是ISP firmware的架構圖:

從上面的描述來看,可能主要的工作還是sensor的回調函數中的參數問題,需要關心的是回調函數的註冊,以及回調函數的參數的確定。這些參數應該就是使用PQtool調試出來的參數了。

軟件的開發:

用戶使用海思的 3A 算法庫。這時用戶需要根據 ISP 基礎算法庫和 3A 算法庫給出的
sensor 適配接口去適配不同的 sensor。這一部分主要的工作還是在sensor_cmos.c文件中的回調函數註冊的參數上面。

作爲軟件工程師,很多時候關注具體的操作。海思文檔也有說明。主要的而工作量在snesor_cmos.c和sensor_ctrl.c。這兩個文件的作用分別爲:

sensor_cmos.c

該文件中主要實現 ISP 需要的回調函數,這些回調函數中包含了 sensor 的適配算法,不同的 sensor 可能有所不同。

sensor_ctrl.c

sensor 的底層控制驅動,主要實現 sensor 的讀寫和初始化動作。用戶可以根據sensor datasheet 進行這兩個文件的開發,必要的時候可以向 sensor 廠家尋求支持。

 

firmware的內部流程:

firmware的內部流程分爲兩部分:

1.初始化任務,主要完成 ISP 控制單元的初始化、ISP 基礎算法庫的初始化、3A 算法庫的初始化,包括調用 sensor 的回調獲取 sensor 差異化的初始化參數;

2. 另一部分是動態調節過程,在這個過程中,firmware 中的 ISP 控制單元調度 ISP 基礎算法庫和 3A 算法庫,實時計算並進行相應控制。

如下圖所示:

ISP firmware 軟件結構:

海思ISP的軟件流程:

ISP 作爲前端採集部分,需要和視頻採集單元(VIU)協同工作。ISP 初始化和基本配完成後,需要 VIU 進行接口時序匹配。一是爲了配不同 sensor 的輸是爲 ISP 的輸完成後,ISP 可以 Run 進行動態圖像質量調節。時輸出的圖像 VIU 採集,進而送去示或編碼

PQ Tools 工具主要完成在 PC 端進行動態圖像質量調節,可以調節多個影圖像質量的因子,如去噪強度、色彩轉換矩陣和度等。

如果用戶調試好圖像效果後,可以使用 PQ Tools 工具提供的配文件保存功能進行配參數保存。在下次啓動時系統可以使用 PQ Tools 工具提供的配文件加載功能加載已經調節的圖像參數。

firmware軟件流程圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章