为了得到更加清晰的图像我们需要通过技术对图像进行处理,比如使用对比度增强的方法来处理图像,对比度增强就是对图像输出的灰度级放大到指定的程度,获得图像质量的提升。本文主要通过代码的方式,通过OpenCV的内置函数将图像处理到我们理想的结果。
灰度直方图
灰度直方图通过描述灰度级在图像矩阵中的像素个数来展示图像灰度级的信息,通过灰度直方图的统计我们可以看到每个灰度值的占有率。下面是一个灰度直方图的实现:
import cv2
import numpy as np
import sys
import matplotlib.pyplot as plt
#计算灰度直方图
def calcGrayHist(image):
rows,clos = image.shape
#创建一个矩阵用于存储灰度值
grahHist = np.zeros([256],np.uint64)
print('这是初始化矩阵')
print(grahHist )
for r in range(rows):
for c in range(clos):
#通过图像矩阵的遍历来将灰度值信息放入我们定义的矩阵中
grahHist[image[r][c]] +=1
print('这是赋值后的矩阵')
print(grahHist)
return grahHist
if __name__=="__main__":
image = cv2.imread("../img/aa.jpg",cv2.IMREAD_GRAYSCALE)
grahHist = calcGrayHist(image)
x_range = range(256)
plt.plot(x_range,grahHist,'-',linewidth= 3,c='k')
#设置坐标轴的范围
y_maxValue = np.max(grahHist)
plt.axis([0,255,0,y_maxValue])
#设置标签
plt.xlabel('gray Level')
plt.ylabel("number of pixels")
#显示灰度直方图
plt.show()
运行结果