• OpenCV入门学习(三)HistogramEquivalent


                                     直方图均衡





    #include <opencv2corecore.hpp>
    #include <opencv2highguihighgui.hpp>
    #include <opencv2imgprocimgproc.hpp>
    /*
    	有的版本号CV_BGR2GRAY宏定义没有,须要载入个legacy文件来获取,可是会与其它调用的宏定义出现冲突,所以
    	这里单独定义一个彩色图像到灰度图像的case number 
    */
    #define CV_BGR2GRAY 6
    #include <iostream>
    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<height;i++)
    		for(size_t j=0;j<width;j++){
    			int currPixel = img.at<uchar>(i,j);
    			count[currPixel]++; //统计每一个灰度级有多少个点
    			//统计该图像中最大和最小的像素值
    			if(currPixel>maxPixel)
    				maxPixel = currPixel;
    			else if(currPixel<minPixel)
    				minPixel = currPixel;
    		}
    	
    	//计算每一个灰度级出现的概率,为获取double型的数据,在后面乘个小数1.0进行隐式转换		
    	for(size_t num = 0;num<scalar;num++)
    		prob[num] = count[num]*1.0/(height*width);	
    	//计算累积数组
    	for(size_t i = 1;i<scalar;i++)
    		prob[i] += prob[i-1];
    	for(size_t i=0;i<height;i++)
           for(size_t j=0;j<width;j++)
    		   newImage.at<uchar>(i,j) = prob[img.at<uchar>(i,j)]*(maxPixel-minPixel)+minPixel;
    	return newImage;
    }

  • 相关阅读:
    不可或缺 Windows Native (15)
    不可或缺 Windows Native (14)
    不可或缺 Windows Native (13)
    不可或缺 Windows Native (12)
    不可或缺 Windows Native (11)
    不可或缺 Windows Native (10)
    不可或缺 Windows Native (9)
    不可或缺 Windows Native (8)
    不可或缺 Windows Native (7)
    不可或缺 Windows Native (6)
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6824634.html
Copyright © 2020-2023  润新知