铅笔

在你的害怕中坚持的越多,你就会越自信
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

opencv 直方图

Posted on 2019-11-06 16:34  黑色の铅笔  阅读(294)  评论(0编辑  收藏  举报

1.简介

对输入图像进行直方图均衡化处理,提升后续对象检测的准确率在OpenCV人脸检测的代码演示中已经很常见。此外对医学影像图像与卫星遥感图像也经常通过直方图均衡化来提升图像质量。

  • 图像直方图均衡化可以用于图像增强. 
  • 直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法.
  • 说得更清楚一些, 以上面的直方图为例, 你可以看到像素主要集中在中间的一些强度值上. 直方图均衡化要做的就是 拉伸 这个范围. 见下面左图: 绿圈圈出了 少有像素分布其上的 强度值. 对其应用均衡化后, 得到了中间图所示的直方图. 均衡化的图像见下面右图.

 

 



2.opencv API

直方图均衡化一般先将图像转为灰度图,然后对其进行均衡化 
OpenCV中直方图均衡化的API很简单

  • equalizeHist(src, dst)

3.示例

将彩色图像进行直方图均衡化已达到图像增强

步骤:

1.彩色图像通道进行分离(RGB)

2.每一个单通道进行直方图均衡化

3.将均衡化后的图像进行合并得到彩色图像

#include <opencv2/opencv.hpp>


int main(int argc, char* argv[])
{

    Mat src = imread("dog.jpg");
    if (src.empty()) {
        printf("could not load image...\n");
        return -1;
    }
    imshow("src", src);

    vector<Mat> bgr;
    split(src, bgr);
    Mat dst;

    equalizeHist(bgr[0], bgr[0]);
    equalizeHist(bgr[1], bgr[1]);
    equalizeHist(bgr[2], bgr[2]);

    merge(bgr, dst);
    imshow("eq", dst);

    waitKey(0);
    return 0;
}

 

 

 

 

参考:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/histogram_equalization/histogram_equalization.html