人脸检测-----图像直方图(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);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是您的第一个问题:掌握经典图像特征描述符HOG、LBP、Haar-like的基本原理和各自特点。 1. HOG(Histogram of Oriented Gradients) 特征描述符 HOG 特征描述符是一种用于在图像检测对象的特征描述符。其基本原理是通过计算图像每个像素点的梯度方向和大小,然后将其转换为每个像素所在区域的直方图。这些直方图在后续的分类器使用。HOG 特征描述符最常用于行人检测和人脸检测。 HOG 特征描述符的特点是:它对于光照、旋转和缩放的变化具有一定的不变性。 2. LBP(Local Binary Pattern) 特征描述符 LBP 特征描述符是一种用于在图像检测纹理的特征描述符。其基本原理是通过比较每个像素的灰度值与其周围像素的灰度值,将这些比较结果组成一个二进制编码的模式。这些模式在后续的分类器使用。LBP 特征描述符最常用于人脸检测和纹理分类。 LBP 特征描述符的特点是:它对于光照和噪声的变化具有一定的不变性。 3. Haar-like 特征描述符 Haar-like 特征描述符是一种用于在图像检测边缘和纹理的特征描述符。其基本原理是通过计算图像不同大小和形状的矩形区域的灰度值之和的差异,将这些差异组成一个特征向量。这些特征向量在后续的分类器使用。Haar-like 特征描述符最常用于人脸检测。 Haar-like 特征描述符的特点是:它对于光照变化具有一定的不变性。 这些特征描述符可以用于图像分类、物体检测和目标跟踪等任务。 接下来是您的第二个问题:利用这些特征描述符进行特征提取,编程实现基于Adaboost的目标检测算法。 基于Adaboost的目标检测算法是一种经典的机器学习算法,它可以使用上述特征描述符进行特征提取,并在后续的分类器使用。下面是该算法的步骤: 1. 收集样本数据,并将其标记为正样本或负样本。 2. 提取样本数据的特征描述符,包括HOG、LBP和Haar-like等。 3. 使用Adaboost算法进行特征选择和分类器训练。 4. 使用训练好的分类器对新的图像进行目标检测。 在具体实现时,可以使用Python语言和OpenCV库来实现该算法。其,OpenCV库提供了各种特征描述符的实现,以及Adaboost算法的实现。下面是一个简单的示例代码: ``` python import cv2 # 加载正样本和负样本数据 positive_samples = [] negative_samples = [] # 提取HOG特征描述符 hog = cv2.HOGDescriptor() # 提取LBP特征描述符 lbp = cv2.CascadeClassifier() # 提取Haar-like特征描述符 haar = cv2.CascadeClassifier() # 训练分类器 classifier = cv2.CascadeClassifier() # 加载待检测的图像 image = cv2.imread() # 进行目标检测 rects = classifier.detectMultiScale(image) # 输出检测结果 for rect in rects: cv2.rectangle(image, rect, (0, 255, 0), 2) cv2.imshow('Object Detection', image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 以上代码仅供参考,具体实现方式可以根据实际需求进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值