Python如何實現(xiàn)伽馬矯正
Python實現(xiàn)伽馬矯正
伽馬矯正是一種借助了指數(shù)變換映射的增強技術。
伽馬矯正的映射函數(shù)可表示為:d = T(s)= csY ,其中c和y為常數(shù)。
y的值是控制變換效果的主要因素,所以被稱之為伽馬矯正。
如右圖所示:

- 當y 之1時,輸入的低灰度范圍被壓縮,高灰度范圍被拉伸,實現(xiàn)了強化亮部,壓縮暗部的圖像增強效果;
- 當y >1時,輸入的高灰度范圍被壓縮,
- 低灰度范圍被拉伸,實現(xiàn)了強化暗部,壓縮亮部的圖像增強效果;
gama,pY
代碼實現(xiàn)
import numpy as np
import cv2
def gama_trans(img, gamma):
# 先歸一化處理,再做伽馬計算,再還原到[0,255]
gmma_list = [np.power(x / 255.0, gamma) * 255.0 for x in range(256)]
# 將列表換成nparray,換成無符號8為數(shù)
gamma_table = np.round(np.array(gmma_list)).astype(np.uint8)
return cv2.LUT(img, gamma_table)
# 定義matshow方法
def matshow(title='image', image=None, gray=False):
if isinstance(image, np.ndarray):
if len(image.shape) == 2:
pass
elif gray:
# 轉換成GRAY格式
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
else:
# 圖片默認BGR通道,將突破轉換成RGB
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# 使用這種方式顯示圖片可能會導致圖片顯示畸形
# cv2.imshow('image', image)
plt.figure()
# 載入圖像
plt.imshow(image, cmap="gray")
# 設置標題
plt.title(title)
plt.show()
if __name__ == '__main__':
im = cv2.imread('data/lena.jpg', 0)
matshow('im', im)
# 使用小于1的伽馬值
im = gama_trans(im, 0.5)
matshow('im0.5', im)
# 使用大于1的伽馬值
im = gama_trans(im, 3)
matshow('im3', im)實現(xiàn)效果

總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
TensorFlow實現(xiàn)數(shù)據(jù)增強的示例代碼
?TensorFlow數(shù)據(jù)增強?是一種通過變換和擴充訓練數(shù)據(jù)的方法,本文主要介紹了TensorFlow實現(xiàn)數(shù)據(jù)增強的示例代碼,具有一定的參考價值,感興趣的可以了解游戲2024-08-08
解決pycharm上的jupyter notebook端口被占用問題
今天小編就為大家分享一篇解決pycharm上的jupyter notebook端口被占用問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python自定義模塊使用.pth文件實現(xiàn)重用方式
這篇文章主要介紹了python自定義模塊使用.pth文件實現(xiàn)重用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
Python requests獲取網(wǎng)頁常用方法解析
這篇文章主要介紹了Python requests獲取網(wǎng)頁常用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02
Django如何使用asyncio協(xié)程和ThreadPoolExecutor多線程
這篇文章主要介紹了Django如何使用asyncio協(xié)程和ThreadPoolExecutor多線程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10
python3解析庫BeautifulSoup4的安裝配置與基本用法
簡單來說,BeautifulSoup就是Python的一個HTML或XML的解析庫,我們可以用它來方便地從網(wǎng)頁中提取數(shù)據(jù),下面這篇文章主要給大家介紹了關于python3解析庫BeautifulSoup4的安裝配置與基本用法的相關資料,需要的朋友可以參考下2018-06-06
Python利用tkinter和socket實現(xiàn)端口掃描
這篇文章主要為大家詳細介紹了Python如何利用tkinter和socket實現(xiàn)端口掃描功能,文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下2022-12-12
利用selenium 3.7和python3添加cookie模擬登陸的實現(xiàn)
這篇文章主要給大家介紹了關于利用selenium 3.7和python3添加cookie模擬登陸的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2017-11-11
詳解如何使用pandas進行時間序列數(shù)據(jù)的周期轉換
時間序列數(shù)據(jù)是數(shù)據(jù)分析中經(jīng)常遇到的類型,為了更多的挖掘出數(shù)據(jù)內部的信息,我們常常依據(jù)原始數(shù)據(jù)中的時間周期,將其轉換成不同跨度的周期,下面以模擬的K線數(shù)據(jù)為例,演示如何使用pandas來進行周期轉換,感興趣的朋友可以參考下2024-05-05
100行Python代碼實現(xiàn)自動搶火車票(附源碼)
又到年底了,相信對于在外地的朋友們來說,火車票是到年底最頭痛的一件事了,但作為程序員的你怎么能一樣呢?快發(fā)揮你的特長,下面這篇文章主要給大家介紹了如果通過100行Python代碼實現(xiàn)自動搶火車票的相關資料,需要的朋友可以參考下。2018-01-01

