equalizeHist(直方图均衡化,提升对比度)

概念

直方图是图像中像素强度分布的图形表达方式,它统计了每一个强度值所具有的像素个数,而直方图均衡化就是拉伸像素的强度范围。
用Photoshop来演示的话如下图:
●源图像(灰度图)


equalizeHist(直方图均衡化,提升对比度)_第1张图片

●源图像直方图



●直方图均衡化后图像(灰度图)
equalizeHist(直方图均衡化,提升对比度)_第2张图片

●直方图均衡化后直方图

函数讲解

●函数原型
○c++

void equalizeHist( InputArray src, OutputArray dst )

○Android

void equalizeHist(Mat src, Mat dst)

●参数解释
○src:源图像,灰度图
○dst :输出图像,size与输入图像一致

函数使用

●c++中

#include
using namespace cv;
int main() {
    Mat src = imread("C:/Users/Administrator/Desktop/meinv2.jpg");//引入源图像
    if (src.empty()) {
        return -1;
    }
    imshow("src",src);//展示源图像
    cvtColor(src, src, CV_BGR2GRAY);//源图像灰度化
    Mat dst;
    equalizeHist(src, dst);//图像直方图均衡化
    imshow("dst",dst);//展示直方图均衡化后的图像
    waitKey(0);
    return 0;
}

●Android中

 Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.ic_relief);
Mat src = new Mat();
Mat dst = new Mat();
Utils.bitmapToMat(bitmap,src);//将Bitmap对象转换为Mat对象
Imgproc.cvtColor(src,src,Imgproc.COLOR_RGBA2GRAY);//将源图像转化为灰度图像
Imgproc.equalizeHist(src,dst);//图像直方图均衡化
Utils.matToBitmap(dst,bitmap);//将Mat对象转换为Bitmap对象

你可能感兴趣的:(equalizeHist(直方图均衡化,提升对比度))