直方圖平衡是很常用的圖像處置方式,常用于圖像加強,過曝處置,顏色平衡等方面。
本文采用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 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!