基于C++的直方图均衡化
来源:互联网 发布:js压缩成min.js 编辑:程序博客网 时间:2024/06/16 06:18
直方图均衡化
目的:使原图像的灰度级更加丰富且动态范围变大,使原来对比度不好的图像的对比度得到改善
原理及算法:
r——原图像的灰度级,假设被归一化到区间[0, 1]。0代表黑色,1代表白色。
即:若灰度级k=0,1,2,...,255,则rk=k/255。
s——输出图像的灰度级,则有:
s=T(r)
直方图均衡化变换式: sk=T(rk)=
nj——每级灰度所占像素个数
n——分辨率,即总的像素个数
例:分辨率64*64,灰度级为8级。
求Ps(sk)的方法:将老的索引值对应的概率合并,作为对应的新的索引值的概率。
由表中数可得:原灰度值——新灰度值
0——1,1——3,2——5,3——6,4——6,5——7,6——7,7——7。
即:
P(sk=0)=0; P(sk=1)=P(rk=0)=0.19; ……P(sk=7)=P(rk=5,6,7)=0.11
unsigned char* lpSrc;//指向原图像的指针longlTemp;//BYTEbMap[256];//灰度映射表longlCount[256];//源图像灰度级统计个数longlLineBytes;//每行的字节数//-------------------------for(i=0;i<lHeight;i++){for(j=0;j<lWidth;j++){lpSrc=(unsigned char*)lpDIBBits+lLineBytes*i+j;lCount[*lpSrc]++;//统计每级灰度的个数}//for_j}//for_ifor(i=0;i<256;i++){lTemp=0;for(j=0;j<=i;j++){lTemp+=lCount[j];//累计概率相加}//for_jbMap[i]=(BYTE)(lTemp*255/lWidth/lHeight);//计算当前概率下映射的新灰度值}//for_ifor(i=0;i<lHeight;i++)for(j=0;j<lWidth;j++){lpSrc=(unsigned char*)lpDIBBits+lLineBytes*(lHeight-1-i)+j;*lpSrc=bMap[*lpSrc];//原灰度映射成新灰度}//for_j
0 0
- 基于C++的直方图均衡化
- 基于MATLAB的直方图均衡化
- 基于opencv2的直方图均衡化
- 基于直方图均衡化的图像处理
- 直方图的均衡化
- 直方图的均衡化
- 直方图的均衡化
- 直方图的均衡化
- 基于opencv和c++的图像处理:直方图均衡化
- 基于opencv和c++的图像处理:直方图均衡化
- 基于直方图均衡化的激光水下图像处理
- 基于直方图均衡化的激光水下图像处理
- 基于matlab实现图像的直方图均衡
- 数字图像的直方图均衡化(C/C++源代码)
- matlab 的直方图均衡化
- 直方图均衡化的理解
- 直方图均衡化的原理
- opencv3的直方图均衡化
- 【瞎搞】 HDU 4422 The Little Girl who Picks Mushrooms
- 节点与计算机利用串口通信2-BaseStation
- 第7周项目1 求两数和
- C# webbrowser全掌握(二)
- 第一章,思维导图
- 基于C++的直方图均衡化
- MFC中如何将CString转化为char类型
- 面试题14-调整数组顺序使奇数位于偶数前面
- 在蓝鸥的日子 2014.10.16 (补写)
- ANDROID--仿瀑布布局
- Git 工具的使用,windows平台安装
- 【cocos2d-x游戏开发】场景,层,精灵的区别
- 全文索引--两种中文词法分析器比较(chinese_vgram_lexer chinese_lexer)
- 《数据结构》第二章 思维导图