项目需要将图像进行光线补偿后再输入模型进行处理,那么要对图像进行光线补偿,有GrayWorld色彩均衡算法,具体步骤如下代码所示:
img = Image.open(path)
M,N = img.size
id1 = np.asarray(img)
r,g,b = img.split()
#print("type = %s"%(type(r)))
#print("r = %s"%(r))
#r.show()
#将三个通道合为一个彩色图像
# new = Image.merge("RGB",(r,g,b))
# new.show()
rd = np.asarray(r)
#将数组变为一个图像
# new = Image.fromarray(rd)
# new.show()
gd = np.asarray(g)
bd = np.asarray(b)
avgR = rd.mean()
avgG = gd.mean()
avgB = bd.mean()
#图像的平均灰度值
print(avgR)
avgGray = np.divide(np.sum([avgR,avgG,avgB]),3.0)
#将图像的平均灰度值与各通道的平均值相除
aR = np.divide(avgGray,avgR)
aG = np.divide(avgGray,avgG)
aB = np.divide(avgGray,avgB)
#调整图像中每个像素的RGB通道值
cR = np.multiply(rd,aR)
cG = np.multiply(gd,aG)