如何在OpenCV中调整图像部分的亮度

时间:2017-02-17 19:16:37

标签: python opencv luminance

我有以下图片。 enter image description here

如果我将平均亮度绘制为x像素位置的函数,我可以看到图像沿中心明亮而不是边缘。

enter image description here

我想使用OpenCV对此进行更正,以使整个图像的亮度相同。这可能吗?

编辑:到目前为止,我的代码是

import cv2
import pylab

img = cv2.imread('3.jpeg', 1)
cv2.imshow("img",img)

lab= cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
cv2.imshow("lab",lab)

l, a, b = cv2.split(lab)

values = []
for c in xrange(l.shape[1]):
    count = 0
    for r in xrange(l.shape[0]):
        count += l[r][c]
    values.append(1.0 * count / l.shape[0])

pylab.figure()
pylab.ylabel('Average Luminance')
pylab.xlabel('X axis')
pylab.plot(values, 'k-')
pylab.show()

1 个答案:

答案 0 :(得分:1)

我有一个方法,但我现在不想为它编写任何代码,更糟糕的是,我不会说Python。但是看看你是如何确定亮度不均匀的,你可以自己清楚编码。

首先,我会进入 Lab 模式(正如您已经做过的那样),然后拆分频道。保留$ cabal install reflex Resolving dependencies... In order, the following would be installed: bifunctors-5.3 (latest: 5.4.1) (via: these-0.6.2.1 semigroupoids-5.0.1 profunctors-5.2) (new version) dependent-sum-0.3.2.2 (latest: 0.4) (via: reflex-0.4.0 dependent-map-0.2.4.0) (new package) dependent-map-0.2.4.0 (via: reflex-0.4.0) (new package) exception-transformers-0.4.0.5 (via: reflex-0.4.0) (new package) haskell-src-exts-1.17.1 (latest: 1.19.1) (via: reflex-0.4.0 haskell-src-meta-0.6.0.14) (new version) haskell-src-meta-0.6.0.14 (latest: 0.7.0.1) (via: reflex-0.4.0) (new version) profunctors-5.2 (via: these-0.6.2.1) (reinstall) (changes: bifunctors-5.4.1 -> 5.3) ref-tf-0.4.0.1 (via: reflex-0.4.0) (new package) semigroupoids-5.0.1 (latest: 5.1) (via: these-0.6.2.1) (new version) these-0.6.2.1 (latest: 0.7.3) (via: reflex-0.4.0) (new package) reflex-0.4.0 (new package) cabal: The following packages are likely to be broken by the reinstalls: lens-4.15.1 ghcjs-0.2.0 free-4.12.4 kan-extensions-5.0.1 adjunctions-4.3 Use --force-reinstalls if you want to install anyway. a个频道,以便以后重建。

现在使用bLightness)频道并将其模糊为大半径 - 这将消除所有高频变化并仅保留您想要消除的低频变化。假设新的模糊通道在最小值110和最大值125之间变化。从所有值中减去110,现在图像中每个位置的值都在0到15之间。

现在从原始的,不显眼的L频道中减去0..15之间的值以删除低频变化,然后将修改后的亮度与原始Lightnessa重新组合信道。

我希望这很清楚 - 如果没有,请问问!

这种方法优于构建抛物线以匹配光线衰减的优点在于,无论亮度随x,y,还是对角线或其他方式变化,它都会起作用。