【openCV】直方图均衡化
2016-10-13 09:36
288 查看
简单实现了直方图均衡化操作。
#include "opencv2/opencv.hpp" #define HISTOGRAM_SIZE 256 #define MAX_INTENSITY 255 int histogram[HISTOGRAM_SIZE]; float sum_histogram[HISTOGRAM_SIZE]; int main(){ // 从文件中加载原图 IplImage *srcImage = cvLoadImage("image.jpg", CV_LOAD_IMAGE_UNCHANGED); if(srcImage == NULL) {//如果读入图像失败 fprintf(stderr, "Can not load image\n"); return 0; } // 转为灰度图 IplImage *grayImage = NULL; grayImage = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 1); cvCvtColor(srcImage, grayImage, CV_BGR2GRAY); cvShowImage("Original_Gray_Level_Image",grayImage); cvWaitKey(0); cvDestroyWindow("Original_Gray_Level_Image"); cvReleaseImage(&srcImage); //统计灰度出现次数 memset(histogram,0,HISTOGRAM_SIZE*sizeof(int)); CvSize size = cvGetSize(grayImage); for (int i = 0;i < size.height;i++){ for (int j = 0;j < size.width;j++){ CvScalar s = cvGet2D(grayImage,i,j); unsigned char gray_level = s.val[0]; ++(histogram[gray_level]); } } //将灰度出现次数转化为灰度出现频率 int pixelCount = size.height * size.width; for (int i = 0;i < HISTOGRAM_SIZE;i++){ sum_histogram[i] = (histogram[i] * 1.0) / pixelCount; } //将灰度出现频率归一化 for (int i = 1;i < HISTOGRAM_SIZE;i++){ sum_histogram[i] += sum_histogram[i-1]; } //直方图均衡化处理灰度图像 for (int i = 0;i < size.height;i++){ for (int j = 0;j < size.width;j++){ CvScalar s = cvGet2D(grayImage,i,j); unsigned char gray_level = s.val[0]; s.val[0] = sum_histogram[gray_level] * MAX_INTENSITY; cvSet2D(grayImage,i,j,s); } } cvShowImage("Histogram_Equalized_Image",grayImage); cvWaitKey(0); cvDestroyWindow("Histogram_Equalized_Image"); cvReleaseImage(&grayImage); return 0; }
相关文章推荐
- 基于opencv和c++的图像处理:直方图均衡化
- OpenCV2.4.4中利用直方图均衡化增强图像对比度(Mat结构实现)
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- 图像直方图均衡化增强opencv与C语言版
- OpenCV自学笔记25. 直方图均衡化
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
- OpenCV-Python教程(9)(10)(11): 使用霍夫变换检测直线 直方图均衡化 轮廓检测
- opencv直方图均衡化图像
- 彩色图像直方图均衡化 --- 基于OpenCV中EqualizeHist_Demo实现
- opencv 直方图均衡化
- OpenCV2 直方图均衡化
- OpenCV2 直方图均衡化
- OpenCV2马拉松第9圈——再谈对比度(对比度拉伸,直方图均衡化)
- opencv 对输入视频做直方图均衡化
- opencv学习笔记1—equalizeHist 函数(直方图均衡化)
- 用C++(OpenCV)自己实现彩色直方图均衡化
- OpenCV入门(二十)-- 彩色图像的直方图均衡化
- OpenCV-Python教程(9)(10)(11): 使用霍夫变换检测直线 直方图均衡化 轮廓检测
- opencv学习笔记9 直方图均衡化并绘制直方图
- opencv直方图均衡化