本文主要是介绍equalizeHist直方图均衡化实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原理:
直方图均衡化算法原理与实现
实现:
/*** @description: 直方图均衡化* @param src 输入图像* @param dst 输出图像*/
void equalizehist(cv::Mat &src, cv::Mat &dst)
{dst.create(src.size(), src.type());int histogram[256] = { 0 };int totalnum = src.rows*src.cols;uchar *data = src.data;for (int i = 0; i < totalnum; ++i){++histogram[data[i]];}int LUT[256], sum = 0;for (int i = 0; i < 256; ++i){sum += histogram[i];LUT[i] = 255.0*sum / totalnum;}uchar *dataOfSrc = src.data;uchar *dataOfDst = dst.data;for (int i = 0; i < totalnum; ++i)dataOfDst[i] = LUT[dataOfSrc[i]];
}
代码传送门:https://github.com/taifyang/OpenCV-algorithm
这篇关于equalizeHist直方图均衡化实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!