zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    Java8 Comparator 排序方法
    IDEA自动清理优化import包
    图灵的文章“Computing machinery and intelligence”译文
    NLP第一课(我也是才开始学)
    java面试基础篇(一)
    python基本排序算法
    python基础面试题整理---从零开始 每天十题(04)
    python基础面试题整理---从零开始 每天十题(03)
    python基础面试题整理---从零开始 每天十题(02)
    python基础面试题整理---从零开始 每天十题(01)
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6824635.html
Copyright © 2011-2022 走看看