[OpenCV基礎][Python]影像增強_伽瑪校正Gamma correction

更新於 發佈於 閱讀時間約 5 分鐘

伽瑪校正(Gamma correction)被視為影像增強的一種方法之一。

通過調整 gamma 值,可以改變圖像的亮度和對比度,從而使圖像更清晰或更具有視覺效果。

以下將利用cv2.LUTnumpy的組合實現伽瑪校正,及詳細介紹cv2.LUT 函式應用。

不同伽瑪校正結果

不同伽瑪校正結果


函式介紹

cv2.LUT 函式的介紹:

用於進行查找表 (Look-Up Table, LUT) 的映射操作。在影像處理中,查找表是一種將輸入值映射到輸出值的機制,常用於進行顏色轉換、亮度調整等操作。

dst = cv2.LUT(src, lut)
  • src: 原始影像,一般是一個 NumPy 陣列。
  • lut: 查找表,也是一個 NumPy 陣列,通常是一行 256 列的陣列,每列對應一個像素值的映射關係。

cv2.LUT 函式可以想像成一張表格,裡面記錄了對應關係。比如,原始圖像中每個像素的數值(0 到 255)在這張表格中都有對應的新數值。當我們使用 cv2.LUT 函式時,它就會根據這張表格,把原始圖像的每個像素的數值轉換成表格中對應的新數值,最後生成一張新的圖像。


只將紅色通道進行放大

結果圖



紅色通道放大的圖

紅色通道放大的圖

程式範例

import cv2
import numpy as np

# 讀取彩色圖像
image = cv2.imread('./111.jpg')

# 提取紅色通道
red_channel = image[:, :, 2]

# 定義放大紅色通道的查找表
lut = np.arange(256, dtype=np.uint8)
lut = np.clip(2 * lut, 0, 255).astype(np.uint8)

# 將查找表應用到紅色通道上
enhanced_red_channel = cv2.LUT(red_channel, lut)

# 將放大後的紅色通道放回原始圖像中
image[:, :, 2] = enhanced_red_channel

# 顯示原始圖像和放大紅色通道後的圖像
cv2.imshow('Original Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

np.clip用於將陣列中的元素限制在某個範圍內

numpy.clip(a, a_min, a_max, out=None)
  • a:要進行操作的輸入陣列。
  • a_min:設定的最小值,小於這個值的元素將被設置為 a_min
  • a_max:設定的最大值,大於這個值的元素將被設置為 a_max
  • out:可選,用於指定結果的輸出陣列。

np.clip()a 中的每個元素限制在 a_mina_max 之間

小於 a_min 的元素被設置為 a_min

大於 a_max 的元素被設置為 a_max

避免像素值溢出或超出範圍


伽瑪校正

結果圖

比較圖

比較圖

程式範例

import cv2
import numpy as np

# 讀取圖檔
img = cv2.imread('./123.png')

def gamma_correction(img: np.ndarray, gamma: float) -> np.ndarray:
look_up_table = (pow(np.arange(256) / 255, gamma) *
255).astype(np.uint8).reshape((1, 256))

res = cv2.LUT(img, look_up_table) #LUT,將look_up_table輸出進而改變亮度或曝光
return res

res = gamma_correction(img,2)

# 顯示結果圖像
cv2.imshow('reuslt', res)
cv2.waitKey(0)
cv2.destroyAllWindows()


look_up_table = (pow(np.arange(256) / 255, gamma) * 255).astype(np.uint8).reshape((1, 256))

這一行代碼創建了一個查找表 (look_up_table),實現於對每個像素值進行 gamma 校正。它的具體步驟是:

  1. np.arange(256) / 255:創建一個從 0 到 255 的數組,然後除以 255,將像素值的範圍調整為 0 到 1 之間。
  2. pow(..., gamma):對每個值進行 gamma 次方運算,即 gamma 校正公式中的 (V / Vmax)^gamma。
  3. * 255:將校正後的值乘以 255,將值範圍調整回 0 到 255 之間。
  4. .astype(np.uint8):將數組轉換為無符號 8 位整數型別,這是圖像像素值的常見表示方式。
  5. .reshape((1, 256)):將數組調整為一行 256 列的形狀,這是 OpenCV 中 LUT 函式所需的查找表形式。

有關伽瑪校正我在網路上看到不錯的介紹






avatar-img
128會員
215內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
介紹OpenCV中的cv2.matchTemplate和cv2.minMaxLoc函數的使用方法和參數,提供程式範例以及相關特徵匹配的詳細介紹,讓讀者對此有更深入的瞭解。
[OpenCV應用][Python]找出圖像中的四個方位的邊緣點求出寬高 呈上篇應用Numpy找到的座標點,那我們如何捨棄掉差異過大的座標點呢? 可能圖像物件邊緣不佳,採樣就會差異過大,造成計算出的寬高是不準確的。 遇到這種狀況,就可以使用下方的程式範例來篩選座標點。 為求方便,此範例跟圖
使用反三角函數鐘的反正切函數 math.atan2() 計算出兩個座標之間的角度。 實現方法 邊界的最大最小值,相減求得對邊,鄰邊由檢測ROI的寬或高,求得角度 定義旋轉方向性,由邊界最大最小值的座標位子得知,旋轉方向性 程式範例 利用圖中白色物體的上邊界兩個座標點位,算出物體旋轉角度。
觀看本文將可以學習到如何利用Numpy求得物件的邊緣點,及算出物件的寬跟高。 有詳細的程式邏輯說明,及各函式用法說明。 綠點及紅點則是採樣到的邊界點,比較粗的點是偵測到的最大值 完整程式碼 import cv2 import numpy as np import matplotl
瞭解二值化影像的應用和程式語法,包括物體檢測和分割、邊緣檢測、圖像分析和測量、文檔辨識,以及使用cv2.threshold的參數和程式範例。
在影像處理中,我們總是想要讓特徵更加明顯一點,可以使用銳利化的方式將特徵的邊緣增強,提升影像的細節,圖像銳利後就會有提升解析度的感覺。 拉普拉斯運算子是一種常用於影像增強的方法之一,特別是用於提高影像的邊緣和細節。 在OpenCV中,你可以使用cv2.Laplacian函數來應用拉普拉斯運算子。
介紹OpenCV中的cv2.matchTemplate和cv2.minMaxLoc函數的使用方法和參數,提供程式範例以及相關特徵匹配的詳細介紹,讓讀者對此有更深入的瞭解。
[OpenCV應用][Python]找出圖像中的四個方位的邊緣點求出寬高 呈上篇應用Numpy找到的座標點,那我們如何捨棄掉差異過大的座標點呢? 可能圖像物件邊緣不佳,採樣就會差異過大,造成計算出的寬高是不準確的。 遇到這種狀況,就可以使用下方的程式範例來篩選座標點。 為求方便,此範例跟圖
使用反三角函數鐘的反正切函數 math.atan2() 計算出兩個座標之間的角度。 實現方法 邊界的最大最小值,相減求得對邊,鄰邊由檢測ROI的寬或高,求得角度 定義旋轉方向性,由邊界最大最小值的座標位子得知,旋轉方向性 程式範例 利用圖中白色物體的上邊界兩個座標點位,算出物體旋轉角度。
觀看本文將可以學習到如何利用Numpy求得物件的邊緣點,及算出物件的寬跟高。 有詳細的程式邏輯說明,及各函式用法說明。 綠點及紅點則是採樣到的邊界點,比較粗的點是偵測到的最大值 完整程式碼 import cv2 import numpy as np import matplotl
瞭解二值化影像的應用和程式語法,包括物體檢測和分割、邊緣檢測、圖像分析和測量、文檔辨識,以及使用cv2.threshold的參數和程式範例。
在影像處理中,我們總是想要讓特徵更加明顯一點,可以使用銳利化的方式將特徵的邊緣增強,提升影像的細節,圖像銳利後就會有提升解析度的感覺。 拉普拉斯運算子是一種常用於影像增強的方法之一,特別是用於提高影像的邊緣和細節。 在OpenCV中,你可以使用cv2.Laplacian函數來應用拉普拉斯運算子。
你可能也想看
Google News 追蹤
Thumbnail
最近國泰世華CUBE App推出的「美股定期定額」功能,讓使用者可以方便地進行跨境理財(但讀者仍需根據自身需求審慎考量),除了享有美股定期定額的新功能,也同時享有台股定期定額的功能,可以一站滿足我們理財的需求! 透過國泰世華CUBE App線上開台股證券戶+複委託戶,流程最快僅需要5分鐘。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
Thumbnail
每種光線都有它特定的功用,巧妙運用這些光線,就像施展了魔法般,為作品賦予不同的情感和意境,也大大提升作品的視覺效果和感染力,今天跟你介紹八個光線提示詞,來讓作品賦予獨特的情感和意境。
Thumbnail
  最近遇到一些人想做音訊的合成,我回答他或許可以從圖像風格轉換中找到些靈感,我才突然想起我對於這部分的認知只止於知道他能做什麼及結果大概如何,對於內部訓練邏輯及結構並沒有認真的去了解,現在剛好趁此機會好好的學習一下。
Thumbnail
ImageColorizer 是一個專門修復老舊照片的線上服務,提供多項 AI 修復功能,包括黑白照片上色、增強畫質改善模糊、人物臉部清晰、修補刮傷破損影像等。開放免費體驗,無需註冊。
Thumbnail
Leonardo.ai 的 Universal Upscaler是一款功能強大的 AI 圖像升級工具,可以幫助我們解決圖像模糊的問題,可以將低解析度的圖像轉換為高解析度圖像,並保留圖像的清晰度和細節。
Thumbnail
讓「Gamma」幫你做簡報,還可以幫你整理簡報大綱,簡報排版美化!靈感激盪跟簡報製作就靠它了!
Thumbnail
點陣圖 點陣圖是由許多方格像素組成的圖片, 因此我們常常在將圖片放大時會呈現像是馬賽克的狀況, 假設期望圖片越清晰那所需要的像素會較多個, 因此空間耗用量也相對較大。 常見的格式有: .JPG .PNG .GIF .BMP .TIFF等格式。 繪製程式碼: 向量圖 向量
Thumbnail
下面使用一些關鍵字,來看看是否能嘗試控制鏡頭角度。不過,請注意,Stable Diffusion 派的 AI 生圖系統能否看懂提示詞?能看懂多少?是要看模型的,所以...
Thumbnail
前篇測試如何把提示詞生成的圖像細節提高,這篇要測試的工作流是把任意圖像載入後經由放大模型放大,同時測試放大後重繪看看效果如何。
Thumbnail
當您需要對圖片進行優化調整,提升圖像質量時,您可能需要用到圖像增強軟體。一般來說圖片增強軟體會對您的圖像質量進行提升,有的時候您甚至能奇蹟般地獲得一張特別出彩的照片,因為部分圖片增強軟體融入了先進的人工智慧圖形改進技術,但前提是您選擇正確的圖片增強器。快使用圖像增強軟體實現照片編輯的魔力,完成前所未
Thumbnail
最近國泰世華CUBE App推出的「美股定期定額」功能,讓使用者可以方便地進行跨境理財(但讀者仍需根據自身需求審慎考量),除了享有美股定期定額的新功能,也同時享有台股定期定額的功能,可以一站滿足我們理財的需求! 透過國泰世華CUBE App線上開台股證券戶+複委託戶,流程最快僅需要5分鐘。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
Thumbnail
每種光線都有它特定的功用,巧妙運用這些光線,就像施展了魔法般,為作品賦予不同的情感和意境,也大大提升作品的視覺效果和感染力,今天跟你介紹八個光線提示詞,來讓作品賦予獨特的情感和意境。
Thumbnail
  最近遇到一些人想做音訊的合成,我回答他或許可以從圖像風格轉換中找到些靈感,我才突然想起我對於這部分的認知只止於知道他能做什麼及結果大概如何,對於內部訓練邏輯及結構並沒有認真的去了解,現在剛好趁此機會好好的學習一下。
Thumbnail
ImageColorizer 是一個專門修復老舊照片的線上服務,提供多項 AI 修復功能,包括黑白照片上色、增強畫質改善模糊、人物臉部清晰、修補刮傷破損影像等。開放免費體驗,無需註冊。
Thumbnail
Leonardo.ai 的 Universal Upscaler是一款功能強大的 AI 圖像升級工具,可以幫助我們解決圖像模糊的問題,可以將低解析度的圖像轉換為高解析度圖像,並保留圖像的清晰度和細節。
Thumbnail
讓「Gamma」幫你做簡報,還可以幫你整理簡報大綱,簡報排版美化!靈感激盪跟簡報製作就靠它了!
Thumbnail
點陣圖 點陣圖是由許多方格像素組成的圖片, 因此我們常常在將圖片放大時會呈現像是馬賽克的狀況, 假設期望圖片越清晰那所需要的像素會較多個, 因此空間耗用量也相對較大。 常見的格式有: .JPG .PNG .GIF .BMP .TIFF等格式。 繪製程式碼: 向量圖 向量
Thumbnail
下面使用一些關鍵字,來看看是否能嘗試控制鏡頭角度。不過,請注意,Stable Diffusion 派的 AI 生圖系統能否看懂提示詞?能看懂多少?是要看模型的,所以...
Thumbnail
前篇測試如何把提示詞生成的圖像細節提高,這篇要測試的工作流是把任意圖像載入後經由放大模型放大,同時測試放大後重繪看看效果如何。
Thumbnail
當您需要對圖片進行優化調整,提升圖像質量時,您可能需要用到圖像增強軟體。一般來說圖片增強軟體會對您的圖像質量進行提升,有的時候您甚至能奇蹟般地獲得一張特別出彩的照片,因為部分圖片增強軟體融入了先進的人工智慧圖形改進技術,但前提是您選擇正確的圖片增強器。快使用圖像增強軟體實現照片編輯的魔力,完成前所未