直方图均衡
#include#include #include /* 有的版本号CV_BGR2GRAY宏定义没有,须要载入个legacy文件来获取,可是会与其它调用的宏定义出现冲突,所以 这里单独定义一个彩色图像到灰度图像的case number */#define CV_BGR2GRAY 6#include using namespace std;using namespace cv;Mat HistogramEquivalent(Mat,int);int main(){ Mat img = imread("lenna.jpg"); imshow("HistogramEqiovalent",HistogramEquivalent(img,256)); waitKey(100000000);}/** 方法:直方图均衡 作用:增强图像的对照度,使图像更加清楚,即图像增强的一种方法 參数:img表示源图像。scalar表示的是最大灰度级(为2时表示二值图像)*/Mat HistogramEquivalent(Mat img,int scalar){ //把图像变成灰度图像 if(img.channels()!=1) cvtColor(img,img,CV_BGR2GRAY); //创建个与源图像一样的空图像 Mat newImage=Mat(img.rows,img.cols,img.type()); //获取图像的行和列 int width = img.cols , height = img.rows; int count[256]={0}; double prob[256] = {0}; int maxPixel = 0,minPixel =scalar-1; for(size_t i = 0;i (i,j); count[currPixel]++; //统计每一个灰度级有多少个点 //统计该图像中最大和最小的像素值 if(currPixel>maxPixel) maxPixel = currPixel; else if(currPixel (i,j) = prob[img.at (i,j)]*(maxPixel-minPixel)+minPixel; return newImage;}