直方图均衡化实现
2016-08-10 20:11
176 查看
代码如下:
//直方图均衡化 void histogram_equalization(unsigned char* img, int h, int w) { int i, j; int pixNum[256] = { 0 }; float pixP[256] = { 0 }; float pixNormalize[256] = { 0 }; int maxpix = img[0]; int minpix = img[0]; unsigned char* tempimg = (unsigned char*)malloc(h*w); memcpy(tempimg, img, h*w); for (i = 0; i < h; i++) { for (j = 0; j < w; j++) { //统计直方图每个灰度级出现的次数 pixNum[tempimg[i*w + j]]++; //找出像素的最大值和最小值 if (maxpix < tempimg[i*w + j]) maxpix = tempimg[i*w + j]; else if (minpix > tempimg[i*w + j]) minpix = tempimg[i*w + j]; } } //p[i]表示的就是灰度级为i的像素在整幅图像中出现的概率 for (i = 0; i < 256; i++) { pixP[i] = (float)(pixNum[i]) / (float)(h*w); } //累计的归一化直方图 for (i = 0; i < 256; i++) { for (j = 0; j <= i; j++) { pixNormalize[i] += pixP[j]; } } for (i = 0; i < h; i++) { for (j = 0; j < w; j++) { tempimg[i*w + j] = pixNormalize[img[i*w + j]] * (maxpix - minpix) + minpix; } } memcpy(img, tempimg, h*w); free(tempimg); }
相关文章推荐
- 直方图均衡化原理和编码实现(C/C++)
- 直方图均衡化的matlab实现
- 彩色图像直方图均衡化 --- 基于OpenCV中EqualizeHist_Demo实现
- 直方图均衡化的编程实现
- [置顶] 直方图均衡化原理与实现
- matlab实现批量图片的直方图均衡化
- 直方图均衡化详解及编程实现
- OpenCV2.4.4中利用直方图均衡化增强图像对比度(Mat结构实现)
- 直方图均衡化原理和编码实现(C/C++)
- 用MATLAB编程实现直方图均衡化
- OpenCV2.4.4中利用直方图均衡化增强图像对比度(Mat结构实现)
- 直方图均衡化详解及编程实现
- c语言实现直方图均衡化
- 限制对比度自适应直方图均衡化算法原理、实现及效果
- OpenCV中cvEqualizeHist实现灰度图象直方图均衡化
- 【数字图像处理】直方图均衡化详解及编程实现
- 限制对比度自适应直方图均衡化算法原理、实现及效果
- 彩色图像的直方图均衡化--基于OpenCV中EqualizeHist_Demo实现
- 直方图均衡化原理与实现
- 用matlab实现视频的空间滤波和直方图均衡化