灰度直方图之直方图均衡化
来源:互联网 发布:淘宝怎么利用微淘推广 编辑:程序博客网 时间:2024/06/05 03:30
直方图均衡化
在我们对图片进行处理时,有些图像的灰度主要集中分布在一个较小的灰度范围内从而导致图像的对比度很弱,如果我们采用灰度拉伸或者非线性变换,也能达到一定的增强效果。但还是没能达到预期的效果。而直方图均衡则将原始图像的灰度均匀的分布在允许的灰度范围内,扩大灰度的显示范围,从而能较好的提高图像对比度,增强图像。
假如输入图像像素数为N,它具有灰度直方图Ih,具有灰度级(I1-I2);输出图像具有灰度直方图Oh,具有灰度级(o1-o2);设变换函数为F,即Oh=F(Ih);因此,我们要解决的就是得到F的表达式,知道原有直方图与均衡后直方图的映射关系。
对于In中的某一灰度级Im,经过函数F变为Ou中的Om,即会有如下的关系式,因为灰度在变换的前后,像素数是不变的。
均衡化后的直方图应该满足各个灰度级的像素数相等,即
因而,有
所以
即为原直方图的灰度累计概率分布函数,一般的O2取255,O1取0,
即得到如下公式:
这也是我们在图像处理中,用的最多的公式。
实现步骤如下:
1、统计原图像中各灰度的像素数目。
2、计算出原图像的灰度分布概率函数。
3、计算原图像的灰度累计分布函数。
4、通过最后一个公式即得到Oh。
5、根据上面的结果得到均衡后的灰度分布。
需要注意的是,本算法只针对单波段灰度图像。如果要对彩色图像进行均衡化,
参见:点击打开链接
Matlab代码如下:
function f = Histogram_Equalization(In)
[height,width] = size(In);
figure ;
subplot(121) ;
imshow(In)%显示原始图像
subplot(122) ;
imhist(In);%显示原始图像直方图
%进行像素灰度统计;
Ih = zeros(1,256);
for i = 1:height
for j = 1: width
Ih(In(i,j) + 1) = Ih(In(i,j) + 1) + 1;
end
end
%计算灰度分布密度
p = zeros(1,256);
for i = 1:256
p(i) = Ih(i) / (height * width * 1.0);
end
%计算累计直方图分布
c = zeros(1,256);
c(1) = p(1);
for i = 2:256
c(i) = c(i - 1) + p(i);
end
%累计分布取整
c = uint8(255 .* c );
%对图像进行均衡化
for i = 1:height
for j = 1: width
In(i,j) = c(In(i,j)+1);
end
end
figure;
subplot(121) ;
imshow(In);%显示均衡化后的图像
subplot(122) ;
imhist(In);%显显示均衡化后的图像的直方图
end
阅读全文
0 0
- 灰度直方图之直方图均衡化
- 灰度直方图均衡化
- 数字图像处理之--灰度直方图均衡化
- 灰度直方图及直方图均衡化
- 直方图均衡化-灰度图
- 图像处理opencv2-灰度直方图以及灰度直方图均衡化
- 灰度直方图均衡
- 数字图像处理之灰度图的直方图均衡化
- 利用opencv绘制 灰度直方图 RGB直方图 HSV直方图 直方图均衡化
- 图像的灰度化,直方图均衡化
- 灰度直方图均衡化(上)
- 灰度直方图均衡化(下)
- opencv程序八:灰度直方图均衡化
- 灰度图像直方图均衡处理
- [图像]图像灰度均衡化和灰度直方图(Matlab实现)
- OpenCV之直方图均衡化
- 灰度图像直方图的创建与灰度图像直方图的均衡化[代码与运行结果]
- 灰度直方图规定化
- java微信获取access_token(java微信开发学习笔记4)
- Android字节、十进制、十六进制、字符串之间的相互转换
- python3 sort sorted 函数应用
- Linux目录结构和常用命令
- 手记:Android Studio svn与服务器关联(关联)
- 灰度直方图之直方图均衡化
- 160个crackme之009
- mac vim 下安装自动补全插件YouCompleteMe
- 安装Java环境
- 昆石VOS2009和VOS3000无漏洞去后门电脑管理客户端大全
- 寻找旋转排序数组中的最小值 II -LintCode
- 优化过度造成的影响原因是哪些?
- Android自定义EditText:你需要一款简单实用的SuperEditText(一键删除&自定义样式)
- 文章标题