人脸检测-----图像直方图(image Histogram)及其均衡化(9)

图像直方图(image Histogram)

直方图详解

  • 首先执行:pip install matplotlib;

术语简介:

  • dims:需要统计的特征数目;例如dims == 1,代表仅仅统计灰度值。
  • bins:每个特征空间自区段的数目;
  • range:每个特征空间的取值范围;

直方图的意义:

  • 图像中像素强度分布的图形表达方式
  • 统计了每一个强度值所具有的像素个数

图像直方图的绘制:

1. 通过plot进行绘制(matplotlib库):

def plot_demo(image):
    plt.hist(image.ravel(), 256, [0, 256]);
    plt.show("直方图");

bins = 256;特征空间区段数
range = [0 , 256];特征空间的取值范围;

2. 通过calcHist()绘制(opencv库):

def image_hist(image):
    color = ('blue', 'green', 'red') #元组数据结构
    for i, color in enumerate(color):
        hist = cv.calcHist([image], [i], None, [256], [0, 256]);
        plt.plot(hist, color = color);
        plt.xlim([0, 256]);
    plt.show("彩色直方图");

opencv函数解释
histSize:存放每个维度的直方图尺寸的数组,记录一个维度中,有多少个bins数组(有多少个分栏范围)

ranges:表示每一个维度数组(第六个参数 dims)的每一维的边界阵列,可以理解为每一维数值的取值范围;一般情况下,histSize与ranges是恰好对应的。

直方图的应用:

  1. 直方图均衡化:图像增强,提升对比度。

全局均衡化:

def equalHist_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY);
    dst = cv.equalizeHist(gray);
    cv.imshow("equal_image", dst);

局部自适应均衡化:

#achieve local equlization
def clahe_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY);
    clahe = cv.createCLAHE(clipLimit = 2.0, tileGridSize = (8,8));
    dst = clahe.apply(gray);
    cv.imshow("clache_image", dst);
发布了42 篇原创文章 · 获赞 6 · 访问量 1512

猜你喜欢

转载自blog.csdn.net/qq_41156733/article/details/96034903