用平均色度和色度中心距进行偏色检查(opencv)

2024-11-24 08:39:10

1、from matplotlib import pyplot as pltimport cv2 as cvimport mathimport numpy as npimage = cv.imread('c:\\beach-dawn-dusk-2108373.jpg')b, g, r = cv.split(image)rows, cols, channel = image.shape加载图片 分离三原色并获得图片大小

用平均色度和色度中心距进行偏色检查(opencv)

3、根据a,b计算平均色度DDa =0Db = 0for i in range(rows): for j in range(cols): Da= Da+ a[i][j] Db= Db+ b[i][j]Da, Db= (Da/ (rows * cols)) - 128, (Da/ (rows * cols)) - 128D = np.sqrt((np.square(Da) + np.square(Db)))

用平均色度和色度中心距进行偏色检查(opencv)

5、计算平均色度和中心距比值 作为检验标准 越小表示偏色越小经验参考值1.2-1.5k = D / Mprint('D/M: %f' %k)cv.imshow('image', image)cv.imshow('imgLab', imgLab)print(D)print(M)

6、输出LAB直方图plt.hist(Lab.ravel(), 256, [0, 256])plt.show()plt.hist(a.ravel(), 256, [0, 256])plt.show()plt.hist(b.ravel(), 256, [0, 256])plt.show()

用平均色度和色度中心距进行偏色检查(opencv)用平均色度和色度中心距进行偏色检查(opencv)

8、调整LAB色度空间a b然后输出显示。imgLab[:,:,1] = 127imgBGR = cv.cvtColor(imgLab,cv.COLOR_LAB2BGR)cv.imshow('imgBGR', imgBGR)imgLab[:,:,2] = 255imgBGR = cv.cvtColor(imgLab,cv.COLOR_LAB2BGR)cv.imshow('imgBGR', imgBGR)print(imgLab)cv.waitKey(0)cv.destroyAllWindows()

用平均色度和色度中心距进行偏色检查(opencv)
猜你喜欢