【问题标题】:Auto selection of Gamma value for image brightness自动选择图像亮度的 Gamma 值
【发布时间】:2021-01-19 12:09:02
【问题描述】:

我有一系列图像或实时视频,我想检查图像是更暗还是更亮,然后使用伽玛校正(即图像^伽玛)调整亮度。 gamma = 1 什么都不做,小于 1 的 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)

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

完整代码如下

        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。

伽马校正可以看this page的结尾

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

【问题讨论】:

    标签: python opencv image-processing computer-vision brightness


    【解决方案1】:

    在没有得到答复后,我试着找到了一些可以分享的东西。可能是我无法清楚地提出问题。我通过以下方式计算了伽玛

    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 图像

    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

    欢迎评论。

    【讨论】:

      猜你喜欢
      • 2012-04-03
      • 2016-03-20
      • 2019-11-23
      • 1970-01-01
      • 2019-05-27
      • 2015-03-19
      • 2017-12-28
      • 2011-06-20
      • 1970-01-01
      相关资源
      最近更新 更多