【发布时间】: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