Python|加权平均法读取灰度化图像介
问题描述灰度化的原理时假定每个像素点的三通道值相同,并用统一的灰度值待代替。加权平均法读取灰度化图像时,是将三个通道的通道值进行加权,然后用来代替灰度。实际中加权平均法RGB灰度化的公式为:
式中表示三个通道的权值,且三者之和为1。解决方案首先运用opencv读取图像:import cv2 as cvsrc = cv.imread("D:\pecture\PmZT25jtyg_small.jpg") #读取图片。再读取出图像每个像素点的三个通道值,运用加权平均法的思想计算灰度值,输出灰度图像,在运用加权平均法得到灰度图像后,为确保图像的灰度化误差不大,还需要对权值进行调整,调整时可以和图像原本的灰度化进行对比:import cv2 as cvimport numpy as npdef gray_pixels(image):for i in range(len(image)):for j in range(len(image[i])):a = image[i][j] #得到每个像素点的三通道值,需要注意的是,python读取出图片的三通道值不再是R、G、B三个顺序,而是变成了G、B、R这个顺序。g = 0.59*a[0]+0.11*a[1]+a[2]*0.30 #运用加权平均法公式计算出该像素点的灰度值。image[i][j]=g #将图片的三个通道变成一个通道,并将得到的灰度值赋给该通道。cv.imshow("gary image",image)src = cv.imread("D:\pecture\PmZT25jtyg_small.jpg")cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY) #通过函数将RGB图像转化为灰度化图像cv.imshow("input image",gray)gray_pixels(src)cv.waitKey(0)cv.destroyAllWindows()例如上面的例子,可以得到两张不同的灰度化图像:
(图2.1运用加权平均法得到的灰度化图像)
(图2.2运用内置函数得到的灰度化图像)结语通过对比发现,上例中的权值得到的灰度化图像并不能很好的接近原始灰度图像,所以,还需要对权值不断地更新实验,以达到更好的灰度化效果。实习编辑:衡辉稿件来源:深度学习与文旅应用实验室(DLETA)