首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动选择图像亮度的Gamma值

自动选择图像亮度的Gamma值
EN

Stack Overflow用户
提问于 2021-01-19 20:09:02
回答 1查看 97关注 0票数 0

我有一个图像序列或实时视频,我想检查图像是更暗还是更亮,然后使用gamma校正来调整亮度,即image ^ gamma。gamma =1不做任何事情,并且小于1的gamma值,亮图像,大于1使图像变暗。我必须给不同类型的图像或视频的伽马值手册。

代码如下

代码语言:javascript
运行
复制
lookUpTable = np.empty((1,256), np.uint8)
for i in range(256):
    lookUpTable[0,i] = np.clip(pow(i / 255.0, gamma) * 255.0, 0, 255)
res = cv2.LUT(image, lookUpTable)

我想找伽马值自动检查图像。我试着用直方图找到亮度的伽马值,但似乎不太好。

整个代码如下所示

代码语言:javascript
运行
复制
        histr = cv2.calcHist([image],[0],None,[256],[0,256]) 
            
    totalPixels = image.shape[0]*image.shape[1]

    maxInd = np.argmax(histr) 
    maxVal = histr[maxInd]
    indP= int(0 if maxInd-5 < 0 else maxInd-5)
    indexN = int(maxVal+5)
    percentAtDark = (maxVal / totalPixels )*100
    darkSum = np.sum(histr[indP:indexN])
    percentDark = (darkSum / totalPixels )*100
    
    if (percentDark > dartThreshold) and (maxInd < 127): 
        gammaList = np.arange(0.01,0.9,0.02)
        gamma=gammaList[maxInd]
    else:
        gamma = 1
   
    lookUpTable = np.empty((1,256), np.uint8)
    for i in range(256):
        lookUpTable[0,i] = np.clip(pow(i / 255.0, gamma) * 255.0, 0, 255)
    res = cv2.LUT(image, lookUpTable)

dartThreshold可以设置为60或70。

对于gamma校正,您可以查看this page的末尾

有人能在这段代码中提出更好的方法或改进吗?任何建议都非常受欢迎。

EN

Stack Overflow用户

回答已采纳

发布于 2021-01-21 16:11:37

在没有得到回答之后,我试着找一些东西来分享。可能是我没能问清楚问题。我用下面的方法计算了伽马

代码语言:javascript
运行
复制
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
hue, sat, val = cv2.split(hsv)

mid = 0.5
mean = np.mean(val)
meanLog = math.log(mean)
midLog = math.log(mid*255)
gamma =midLog/meanLog
gamma = 1 / gamma

并将其应用于原始BGR图像

代码语言:javascript
运行
复制
lookUpTable = np.empty((1,256), np.uint8)
for i in range(256):
    lookUpTable[0,i] = np.clip(pow(i / 255.0, gamma) * 255.0, 0, 255)
res = cv2.LUT(image, lookUpTable)

如果我们将mid = 0.5更改为mid = 1,伽马值按0.1变化,即对于mid = 0.5,如果我们得到0.69,那么对于mid = 1,我们将得到gamma = 0.59

欢迎提出意见。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65791233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档