直方图平衡是很常用的图像处置方式,常用于图像加强,过曝处置,颜色平衡等方面。
本文采用python3.6.5+ opencv3.3.1在win7情况下进行直方图平衡。
1:灰度图直方图平衡
依然采用经典的lena图片作为源图片。
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread("c:\\lena.jpg")
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow("Original Pic", gray)
dst = cv.equalizeHist(gray)
cv.imshow("Result equalizeHist Pic", dst)
plt.hist(gray.ravel(), 256, [0, 256])
plt.show()
plt.hist(dst.ravel(), 256, [0, 256])
plt.show()
cv.waitKey(0)
别离输出源图和处置后的图片,以及对应的直方图便于阐发
2:源图以及直方图
3:平衡后的灰度图以及直方图
图片亮度加强了,直方图也与上图大分歧。
4:彩色直方图处置,需要三个通道别离处置,最后再归并!
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread("c:\\lenacolor.jpg")cv.imshow("Original Pic", img)# 彩色图像对3个通道平衡化(b, g, r) = cv.split(img)bH = cv.equalizeHist(b)gH = cv.equalizeHist(g)rH = cv.equalizeHist(r)# 归并通道dst = cv.merge((bH, gH, rH))cv.imshow("Result equalizeHist Pic", dst)plt.hist(img.ravel(), 256, [0, 256]) plt.show()plt.hist(dst.ravel(), 256, [0, 256]) plt.show()cv.waitKey(0)
5:彩色源图以及直方图
较着直方图并不平衡。
6:平衡后的灰度图以及直方图
图片颜色转变了,直方图也与上图分歧。
但颜色有所掉真,可以考虑采纳其它方式处置更好。
或者分块处置也可以。后续再进一步会商。
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!