ISP Pipeline(3):Lens Shading Correction 鏡頭陰影校正

上一篇文章講的是:ISP Pipeline(2): Black Level Compensation:ISP Pipeline(2):Black Level Compensation 黑電平補償-CSDN博客

視頻:(4) Lens Shading Correction | Image Signal Processing Pipeline Tutorial Series

源碼:AI_Plays/ISP/Fast_ISP_Progress.ipynb at main · ameengee/AI_Plays · GitHub

Lens Shading Correction(LSC) 是 ISP(圖像信號處理)中的一個重要步驟,用來校正由于鏡頭和圖像傳感器組合所導致的圖像亮度和顏色在空間分布上的不均勻性問題。這個問題在 廣角鏡頭、低光照環境或者大光圈 情況下尤為明顯。

為什么需要 LSC?

拍攝的原始圖像中,常見問題如下:

  • 中心亮,邊緣暗(vignetting);

  • 顏色偏差(不同通道光線衰減不一樣,比如邊緣區域紅色多,綠色少);

  • 會影響白平衡、顏色還原、圖像質量。

成因

主要包括:

  • 鏡頭透鏡結構:光線穿過鏡頭時,邊緣光線容易損失。

  • 光線入射角不同:邊緣像素光線入射角更大,靈敏度降低。

  • 傳感器非線性響應:傳感器各位置像素響應不一致。

校正原理(LSC基本思路)

  1. 預先標定(Calibration)

    • 使用均勻光源(integrating sphere)拍攝參考圖,獲得理想圖像亮度/顏色分布。

    • 得到一個 增益表(Gain Table),通常按 RGB 分別生成。

  2. 應用校正(Correction)

    • 實際圖像中每個像素按其位置(通常是離中心距離)查表得到對應增益值。

    • 對每個像素進行乘法修正:

      I' =I \times G(x,y)

      其中 G(x,y)G(x,y) 為增益因子,I 是原像素值,I′ 是校正后的像素值。

?代碼實現:

  • 計算圖像中心(+1 是為了防止出現 division by zero 或讓中心處不為0,實際可調)。
  • 構造每個像素到圖像中心的徑向距離圖,這就是光照衰減的模擬基準。
  • 限制中心區域的最小半徑為 1300,意味著只有距離中心大于1300像素的區域才會被增強,中心區域保持不變(增強倍數為 k * 1300 + 1)。
  • lsc_img = (blc_img * (k * radial_dist + 1) - offset).astype(np.uint16)這個公式可以理解為:

    ?
    • k * r + 1:讓中心附近是 1,遠離中心增益越來越大;

    • offset 是全局亮度調整,防止變得太亮。

    • 轉為 uint16,保留高位數據。


def LSC(blc_img, k, offset):"""inputs:blc_img = bayer domain image after black level compensationk = correction factor to control strength of the correctionoffset = offset in case the final image is too brightoutputs:lsc_img = bayer domain image adjusted for lens shading"""rows, cols = blc_img.shapecenter_x = (cols // 2) + 1 # identify center if the imagecenter_y = (rows // 2) + 1x, y = np.meshgrid(np.arange(cols), np.arange(rows)) # create an array where each index is the radial distance from the centerradial_dist = np.sqrt((x - center_x)**2 + (y - center_y)**2)radial_dist = np.where(radial_dist <= 1300, 1300, radial_dist) # ensure correction only applies on the outer edgeslsc_img = (blc_img * (k * radial_dist + 1) - offset).astype(np.uint16) # apply correctionreturn lsc_img

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

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

相關文章

什么是WebAssembly(WASM)

WebAssembly&#xff08;WASM&#xff09; 是一種高性能的低級編程語言字節碼格式&#xff0c;可在網頁和非網頁環境中運行&#xff0c;支持多語言編譯&#xff0c;運行速度接近原生代碼。它在區塊鏈中的作用是&#xff1a;作為智能合約的執行引擎&#xff0c;被多條非以太坊鏈…

【C++】inline的作用

一、inline的作用 1.1函數內聯 作用?&#xff1a;建議編譯器將函數調用替換為函數體代碼&#xff0c;減少函數調用的開銷&#xff08;壓棧/跳轉&#xff09;。?注意?&#xff1a;這只是對編譯器的建議&#xff0c;編譯器可能忽略&#xff08;如函數體過大或遞歸&#xff0…

代碼隨想錄|圖論|04廣度優先搜索理論基礎

廣搜的使用場景 廣搜的搜索方式就適合于解決兩個點之間的最短路徑問題。 因為廣搜是從起點出發&#xff0c;以起始點為中心一圈一圈進行搜索&#xff0c;一旦遇到終點&#xff0c;記錄之前走過的節點就是一條最短路。 當然&#xff0c;也有一些問題是廣搜 和 深搜都可以解決…

Xposed框架深度解析:Android系統級Hook實戰指南

引言:Android系統定制化的革命性突破 在移動安全研究和系統優化領域,傳統的APP修改方案面臨??三重技術瓶頸??: ??逆向工程壁壘??:APK重打包方案需處理簽名校驗、代碼混淆等防護,平均耗時增加200%??兼容性挑戰??:Android碎片化導致設備適配率不足65%??功能…

大模型在通訊網絡中的系統性應用架構

一、網絡架構智能化重構?? ??1.1 空天地一體化組網優化?? 智能拓撲動態調整??&#xff1a;大模型通過分析衛星軌道數據、地面基站負載及用戶分布&#xff0c;實時優化天地一體化網絡拓撲。例如&#xff0c;在用戶密集區域&#xff08;如城市中心&#xff09;自動增強低…

軟件測試進階:Python 高級特性與數據庫優化(第二階段 Day6)

在掌握 SQL 復雜查詢和 Python 數據庫基礎操作后&#xff0c;第六天將深入探索Python 高級編程特性與數據庫性能優化。通過掌握 Python 的模塊與包管理、裝飾器等高級語法&#xff0c;結合數據庫索引優化、慢查詢分析等技術&#xff0c;提升測試工具開發與數據處理效率。 一、…

【NLP】自然語言項目設計04

目錄 04模型驗證 代碼架構核心設計說明 05運行推理 代碼架構核心設計說明 項目展望 項目簡介 訓練一個模型&#xff0c;實現歌詞仿寫生成 任務類型&#xff1a;文本生成&#xff1b; 數據集是一份歌詞語料&#xff0c;訓練一個模型仿寫歌詞。 要求 1.清洗數據。歌詞語料…

數據結構1 ——數據結構的基本概念+一點點算法

數據結構算法程序設計 什么是數據結構 數據&#xff08;data&#xff09;&#xff1a;符號集合&#xff0c;處理對象。 數據元素&#xff08;data element&#xff09;&#xff0c;由數據項&#xff08;data item&#xff09; 組成。 關鍵字&#xff08;key&#xff09;識別…

每日八股文7.1

每日八股-7.1 網絡1.能說說 TCP 報文頭部都包含哪些關鍵字段嗎&#xff1f;2.TCP 是如何確保數據傳輸的可靠性的&#xff1f;你能詳細談談嗎&#xff1f;3.你能解釋一下 TCP 滑動窗口是如何設計的&#xff1f;它主要解決了什么問題&#xff1f;4.TCP 協議的擁塞控制是如何實現的…

高性能 List 轉 Map 解決方案(10,000 元素)

文章目錄 前言一、問題背景&#xff1a;為什么List轉Map如此重要&#xff1f;二、基礎方法對比&#xff1a;Stream vs For循環三、性能優化關鍵點四、面試回答技巧 前言 遇到一個有意思的面試題&#xff0c;如標題所說&#xff0c;當10,000條數據的List需要轉Map&#xff0c;如…

今日行情明日機會——20250701

上證指數縮量收陽線&#xff0c;形成日線上漲中繼&#xff0c;個股上漲和下跌總體持平。 深證指數量能持續放大&#xff0c;即將回補缺口位&#xff0c;短線注意周三或周四的調整。 2025年7月1日漲停股主要行業方向分析 1. 芯片&#xff08;17家漲停&#xff0c;國產替代&…

P1312 [NOIP 2011 提高組] Mayan 游戲

題目描述 Mayan puzzle 是最近流行起來的一個游戲。游戲界面是一個 7 7 7 行 5 \times5 5 列的棋盤&#xff0c;上面堆放著一些方塊&#xff0c;方塊不能懸空堆放&#xff0c;即方塊必須放在最下面一行&#xff0c;或者放在其他方塊之上。游戲通關是指在規定的步數內消除所有…

Spring Boot 2 多模塊項目中配置文件的加載順序

Spring Boot 2 多模塊項目中配置文件的加載順序 在 Spring Boot 2 多模塊項目中&#xff0c;配置文件的加載遵循特定的順序規則。了解這些規則對于正確管理多模塊應用的配置至關重要。 一、默認配置文件加載順序 Spring Boot 會按照以下順序加載 application.properties 或 …

邊界的藝術:支持向量機與統計學習時代的王者

當揚勒丘恩的卷積神經網絡LeNet在90年代初于手寫數字識別領域綻放光芒&#xff0c;卻因計算與數據的桎梏未能點燃更廣泛的燎原之火時&#xff0c;人工智能&#xff0c;特別是其子領域機器學習&#xff0c;正步入一個理論深化與方法論多元化的關鍵時期。經歷了符號主義通用智能探…

js filter()

listType(queryParams.value).then(response > {filterTable.value response.rows.slice(1); // 只顯示前3條數據;filterTable.value filterTable.value.filter(item > {return wnSensorsList.value.some(sensorsgroup > {return sensorsgroup.sensorType item.cod…

Python 庫 包 nltk (Natural Language Toolkit)

文章目錄 &#x1f9f0; 一、nltk 的主要功能? 文本處理功能? 內置語料庫&#xff08;Corpora&#xff09; &#x1f4e6; 二、安裝與使用1. 安裝 nltk2. 下載語料庫&#xff08;第一次使用時需要下載&#xff09; &#x1f50d; 三、常用功能示例示例 1&#xff1a;分詞示例…

設計模式之房產中介——代理模式

手撕設計模式之房產中介——代理模式 1.業務需求 ? 大家好&#xff0c;我是菠菜啊&#xff0c;好久不見&#xff0c;今天給大家帶來的是——代理模式。老規矩&#xff0c;在介紹這期內容前&#xff0c;我們先來看看這樣的需求&#xff1a;我們有一套房產需要出售&#xff0c…

Unity進階課程【六】Android、ios、Pad 終端設備打包局域網IP調試、USB調試、性能檢測、控制臺打印日志等、C#

Unity打包 Android、ios、Pad 終端設備局域網IP調試、USB調試 今天咱們繼續進階課程&#xff0c;定期更新&#xff0c;有想學習的不懂的地方也可以告訴我。 提示&#xff1a;內容純個人編寫&#xff0c;歡迎評論點贊&#xff0c;來指正我。 文章目錄 Unity打包 Android、ios、P…

c++中的mutex同步機制與多線程同步實現

C 中的 std::mutex 與多線程同步 在多線程編程中&#xff0c;互斥鎖&#xff08;Mutex&#xff09; 是一種同步機制&#xff0c;用于保護共享資源&#xff08;如變量、數據結構&#xff09;免受數據競爭&#xff08;Data Race&#xff09;的影響。C 標準庫中的 std::mutex 提供…

網絡安全2023—新安全新發展

關于綠盟科技 綠盟科技集團股份有限公司(以下簡稱綠盟科技),成立于 2000 年 4 月,總部位于北京。公司于 2014 年 1 月 29 日在深圳證券交易所創業板上市,證券代碼:300369。綠盟科技在國內設有 50余個分支機構,為政府、金融、運營商、能源、交通、科教文衛等行業用戶與各…