ISP Pipeline(7): Gamma Correction 伽馬校正

AI_Plays/ISP/Fast_ISP_Progress.ipynb at main · ameengee/AI_Plays · GitHub

Gamma Correction(伽馬校正)是圖像處理中的一個重要步驟,目的是調整圖像的亮度,使其更符合人眼的感知顯示設備的特性

為什么需要 Gamma Correction?

人眼對亮度的感知是非線性的

  • 低亮度更敏感,對高亮度不敏感

  • 如果我們不進行校正,線性存儲的圖像在顯示設備上會顯得過暗或不自然。

多數顯示設備(如顯示器)也不是線性顯示亮度的,而是有自身的非線性響應曲線(通常是 2.2 的冪函數)。

Gamma Correction 原理

Gamma 校正的核心公式:

?? 從線性亮度 → 非線性(編碼):

I_corrected = I_input ** (1 / gamma)

?? 從非線性(解碼) → 線性亮度(反伽馬):

I_linear = I_encoded ** gamma

其中:

  • I_input 是歸一化的像素值(0.0 ~ 1.0)

  • gamma 是伽馬值,通常為 2.2(sRGB 標準)

  • I_corrected 是校正后的值(也歸一化)

?代碼:

def GAC(cfa_img, gamma):"""Gamma correction for demosaiced RGB image.Args:cfa_img: np.ndarray, dtype=uint8 or float, range [0,255] or [0,1]gamma: float, e.g., 2.2Returns:gac_img: np.ndarray, dtype=uint8, gamma-corrected RGB image"""# 1. Convert to float and normalizecfa_img = cfa_img.astype(np.float32) / 255.0# 2. Apply gamma correctiongac_img = np.power(cfa_img, 1.0 / gamma)# 3. Scale back to 0~255gac_img = np.clip(gac_img * 255.0, 0, 255).astype(np.uint8)return gac_img

np.power()

np.power(a, b)a ** b 對于 NumPy 數組來說功能是一樣的,作用都是逐元素冪運算,但:

? np.power更明確、健壯、推薦的方式,尤其是在處理多維數組、廣播、類型轉換時更可控。

np.power 的優勢

場景為什么更好
類型控制更安全會自動廣播并轉換成合適的 dtype(比如 float64)避免整型冪出錯
更顯式語義在寫圖像處理/科學計算時,用 np.power 一看就知道是「逐元素冪運算」,可讀性強
兼容廣播比如 np.power(array, scalar)np.power(array1, array2) 都支持
鏈式操作穩定np.clipnp.sqrt 等 NumPy 函數一起用時更一致、少坑

?

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

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

相關文章

AI提取伴奏,實現卡拉OK效果 —— 「suno api/luno api/kuka api」

導讀 喜歡唱歌,卻總苦于找不到純凈的伴奏?或者你想把喜歡的歌曲翻唱一遍,卻被人聲干擾搞得頭大?現在,AI技術已經悄悄解決了這個問題。借助AI智能工具,你可以輕松提取任何一首歌的伴奏,享受宛如…

pip介紹

pip是什么? pip(Pip Installs Packages)是Python的官方管理工具,用于安裝、升級、卸載和管理Python第三方庫及其依賴關系。它是Python生態系統的核心組件,通過連接PyPI(Python Package Index)這…

機器學習20-線性網絡思考

機器學習20-線性網絡思考 針對線性網絡的基礎問題,使用基礎示例進行解釋 1-核心知識點 1-線性模型家族的線性回歸和邏輯回歸分別是什么,線性模型家族還有沒有其他的模型 線性模型家族是一系列基于線性假設的統計模型,它們假設因變量和自變量…

【科研繪圖系列】R語言繪制世界地圖分布(world map)

禁止商業或二改轉載,僅供自學使用,侵權必究,如需截取部分內容請后臺聯系作者! 文章目錄 介紹加載R包數據下載導入數據數據預處理準備畫圖畫圖總結系統信息介紹 本教程旨在通過R語言及其相關地理空間分析包,展示如何對環境數據進行空間聚類分析,并將結果可視化。教程從讀…

Armbian 25.5.1 Noble Gnome 開啟遠程桌面功能

sudo apt install gnome-remote-desktop ----長話短說 故障表現 Ubuntu 25版本點擊遠程桌面功能沒有任何反應, WIN_20250630_00_53_24_Pro 最后 armbian 官方社區充滿了傲慢,一言不合就關閉話題,問題都沒有解決就給我關閉了 最后檢索到英文網站,說到了這么一句話,檢查遠程桌…

嵌入式 Linux 入門:從裸機到系統級開發的第一步

隨著嵌入式系統應用的不斷深入,很多 MCU 項目開發者會在某個階段遇到瓶頸:系統越來越復雜、任務越來越多、通信越來越頻繁、性能要求越來越高。 這時候,從 MCU / RTOS 過渡到 嵌入式 Linux 開發 就成為一次技術升級的關鍵轉折點。 本文將帶…

詳解 Blazor 組件傳值

父子組件傳值 在 Blazor 中&#xff0c;組件之間的通信可以通過 [Parameter] 參數和 EventCallback<T> 事件回調實現。下面分別給出 父組件傳遞值給子組件 和 子組件傳遞值給父組件 的簡單示例。 1.1 父組件傳遞值給子組件 步驟&#xff1a; 在子組件中定義 public 屬…

力扣熱題100再刷

160.相交鏈表 讀一遍A&#xff0c;一個set存節點&#xff0c;遍歷B的時候判斷即可。復習下set的STL&#xff1a;set有set和unordered_set&#xff0c;同樣有insert&#xff0c;find&#xff0c;count&#xff0c;對于set而言&#xff0c;自動從小到大排序&#xff0c;還有&…

MySQL常用函數性能優化及索引影響分析

MySQL 常用函數性能優化指南&#xff08;含索引影響分析&#xff09; 以下是 MySQL 函數使用指南&#xff0c;新增性能影響評級、索引失效分析和優化方案&#xff0c;幫助您高效使用函數&#xff1a; &#x1f4dc; 一、字符串處理函數&#xff08;含性能分析&#xff09; 函…

莫隊(基礎版)優雅的暴力

莫隊算法是一種離線算法&#xff0c;常用于高效處理區間查詢問題。它通過合理排序和移動左右端點來減少時間復雜度。 基本思想 莫隊算法的核心思想是將所有查詢離線排序&#xff01;&#xff01;&#xff08;找出一個過起來最快的查詢順序&#xff09;&#xff0c;然后通過移動…

? Python 高級定制 | 美化 Word 表格邊框與樣式(收貨記錄增強版)

之前我們完成了 Excel 數據提取、Word 表格寫入與合并&#xff0c;現在繼續 為 Word 表格添加高級樣式 裝扮&#xff0c;包括單元格邊框、背景填色、居中對齊、粗體、高亮行/列等&#xff0c;進一步增強表格的可讀性與專業性。 &#x1f58c;? 樣式設置函數 1. 設置單元格邊框…

Clickhouse源碼分析-TTL執行流程

第一種情況&#xff1a;無ttl_only_drop_parts配置 總體示例以及說明 如果沒有ttl_only_drop_parts的配置&#xff0c;過期數據的刪除&#xff08;這里是刪除&#xff0c;是將過期的數據從這個part刪除&#xff0c;并將過期的數據構成一個part&#xff0c;這個過期的part標記…

elementui修改radio字體的顏色和圓圈的樣式

改完 <div class"choose"><el-radio-group v-model"radioNum"><el-radio label"1" size"large">Option 1</el-radio><el-radio label"2" size"large">Option 2</el-radio>&l…

力扣3381. 長度可被 K 整除的子數組的最大元素和

由于數據范圍是2*10^5所以必然是遍歷一次&#xff0c;子數組必定要用到前綴和&#xff0c;之前的題目中總是遇到的是子數組的和能不能被k整除&#xff0c;而這里不一樣的是子數組的長度能不能被k整除&#xff0c;如果單純的枚舉長度必定超時&#xff0c;而看看題解得出的思路&a…

基于SSM的勤工助學系統的設計與實現

第1章 摘要 基于SSM框架的勤工助學系統旨在為學生、用工部門和管理員提供高效便捷的管理平臺。系統包括學生端、用工部門端和管理員端&#xff0c;涵蓋了從崗位發布、申請審核、工時記錄、薪資管理到數據統計等完整的功能需求。 學生可以通過系統首頁瀏覽最新的崗位信息和公告&…

2025年06月30日Github流行趨勢

項目名稱&#xff1a;twenty 項目地址 URL&#xff1a;https://github.com/twentyhq/twenty項目語言&#xff1a;TypeScript歷史 star 數&#xff1a;31,774今日 star 數&#xff1a;1,002項目維護者&#xff1a;charlesBochet, lucasbordeau, FelixMalfait, Weiko, bosiraphae…

creo 2.0學習筆記

Creo軟件從入門到精通——杜書森 1.1 Creo基本建模過程介紹 新建-零件-改名稱-取消使用默認模板&#xff0c;是因為默認的是英制尺寸&#xff0c;自定義可選擇mmns_part_solid&#xff0c;模板主要是設置模型的單位拉伸-選取FRONT-點擊草繪視圖&#xff0c;可進行草繪旋轉——…

ZNS初步認識—GPT

1. ZNS SSD 的基本概念 Zoned Namespace (ZNS): ZNS 是一種新的NVMe接口規范&#xff0c;它將SSD的邏輯塊地址空間劃分為多個獨立的、固定大小的“區域”&#xff08;Zones&#xff09;。區域 (Zone): ZNS SSD 的基本管理單元。每個區域都有自己的寫入指針&#xff08;write p…

【seismic unix生成可執行文件-sh文件】

Shell腳本文件&#xff08;.sh文件&#xff09;簡介 Shell腳本文件&#xff08;通常以.sh為擴展名&#xff09;是一種包含Shell命令的文本文件&#xff0c;用于在Unix/Linux系統中自動化執行任務。它由Shell解釋器&#xff08;如Bash、Zsh等&#xff09;逐行執行&#xff0c;常…

Debezium日常分享系列之:在 Kubernetes 上部署 Debezium

Debezium日常分享系列之&#xff1a;在 Kubernetes 上部署 Debezium 先決條件步驟部署數據源 (MySQL)登錄 MySQL db將數據插入其中部署 Kafka部署 kafdrop部署 Debezium 連接器創建 Debezium 連接器 Debezium 可以無縫部署在 Kubernetes&#xff08;一個用于容器編排的開源平臺…