原理见《数字图像处理》第三版3.2.4
输出灰度和输入灰度的关系如下图
现在令(r1,s1)=(rmin,0);(r2,s2)=(rmax,L-1)和(r1,s1)=(m,0);(r2,s2)=(m,L-1),m为灰度均值
代码如下(VS2013+OpenCV3.0)
/*
//***************************************************************************************
//-----------------------------------------------作者:我三食堂不服-----------------------
//***************************************************************************************
*/
#include <opencv2/opencv.hpp>
#include <math.h>
using namespace std;
using namespace cv;
/*
//图像对比度拉伸。
//(r1,s1)灰度平面上的第一个点
//(r2,s2)灰度平面上的第二个点
*/
Mat Stretch(Mat input, int r1, int s1, int r2, int s2);
//获取图片灰度值最大值与最小值
int RmimRmax(Mat input, int &rmin, int& rmax);
//获取图像平均灰度值
int Average(Mat