图像直方图
@Fu Xianjun. All Rights Reserved.
图像直方图是图像内灰度值的统计特性与图像灰度值之间的函数,直方图统计
图像内各个灰度级出现的次数。
直方图是数值数据分布的精确图形表示。 这是一个连续变量(定量变量)的概率分布的
估计,并且被卡尔·皮尔逊(Karl Pearson)首先引入。它是一种条形图。
代码如下
import cv2
import matplotlib.pyplot as plt
img1=cv2.imread("hj.jpg",0)
cv2.imshow("img1",img1)
plt.hist(img1.ravel(),256,facecolor='yellowgreen')
cv2.waitKey()
cv2.destroyAllWindows()
结果如图
一、绘制彩色的直方图
import cv2
import numpy as np
img=cv2.imread("bd.jpg")
histb = cv2.calcHist([img],[0],None,[256],[0,255])
histg = cv2.calcHist([img],[1],None,[256],[0,255])
histr = cv2.calcHist([img],[2],None,[256],[0,255])
plt.plot(histb,color='b')
plt.plot(histg,color='g')
plt.plot(histr,color='r')
结果如图
、
二、直方图均衡化
直方图均衡化的主要目的是将原始图像的灰度级均匀地映射到整个灰度级范围内,
得到一个灰度级分布均匀的图像。
import cv2
import numpy as np
img=cv2.imread("hj.jpg",0)
equ=cv2.equalizeHist(b)
hist = cv2.calcHist([equ],[0],None,[256],[0,255])
plt.plot(hist,color='b')
cv2.imshow("equ",equ)
cv2.waitKey()
cv2.destroyAllWindows()
结果如图
三、彩色图像直方图自适应均衡化
import cv2
import numpy as np
img=cv2.imread("qb.jpg")
b,g,r=cv2.split(img)
clah=cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))
equb=clah.apply(b)
equg=clah.apply(g)
equr=clah.apply(r)
img_new=cv2.merge([equb,equg,equr])
histb = cv2.calcHist([img_new],[0],None,[256],[0,255])
histg = cv2.calcHist([img_new],[1],None,[256],[0,255])
histr = cv2.calcHist([img_new],[2],None,[256],[0,255])
plt.plot(histb,color='b')
plt.plot(histg,color='g')
plt.plot(histr,color='r')
cv2.imshow("img",img)
cv2.imshow("img_new",img_new)
cv2.waitKey()
cv2.destroyAllWindows()
结果如图
四、彩色图像直方图均衡化
import cv2
import numpy as np
img=cv2.imread("qb.jpg")
b,g,r=cv2.split(img)
equb=cv2.equalizeHist(b)
equg=cv2.equalizeHist(g)
equr=cv2.equalizeHist(r)
img_new=cv2.merge([equb,equg,equr])
histb = cv2.calcHist([img_new],[0],None,[256],[0,255])
histg = cv2.calcHist([img_new],[1],None,[256],[0,255])
histr = cv2.calcHist([img_new],[2],None,[256],[0,255])
plt.plot(histb,color='b')
plt.plot(histg,color='g')
plt.plot(histr,color='r')
cv2.imshow("img",img)
cv2.imshow("img_new",img_new)
cv2.waitKey()
cv2.destroyAllWindows()
结果如图