python图像亮度提取_python – 如何在OpenCV中调整图像部分的亮度

我有以下图片.

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

我想使用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()

最佳答案 我有一个方法,但我不想今天为它编写任何代码,更糟糕的是,我不会说Python.但是看看你如何确定亮度不均匀,你可以自己清楚地编码.

首先,我将进入实验室模式(正如您已经做过的那样),然后拆分频道.保留a和b通道以便以后重建.

现在采用亮度(L)通道并以大半径模糊它 – 这将消除所有高频变化并仅保留您想要消除的低频变化.假设新的模糊通道在最小值110和最大值125之间变化.从所有值中减去110,现在图像中每个位置的值都在0到15之间.

现在从原始的,不模糊的亮度通道中减去0..15之间的值,以消除低频变化,然后将修改后的亮度与原始a和b通道重新组合.

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值