图像处理(1)直方图均衡
来源:互联网 发布:php curl 跳转页面 编辑:程序博客网 时间:2024/04/30 18:23
为了增强图像对比度,通常需要调整图像的灰度级分布,使得亮暗更加分明。如果一幅图像中某些灰度级分布概率过小,就会导致这部分图像不清晰,因此灰度级分布的越平均图像对比度越好。表现在空间上,如果减小分布较大的灰度级的面积,而增加分布较小的灰度级面积,就会突出原来显示不清晰的部分。
调整图像对比度可以看作一个灰度级变换的过程,通过灰度级变换来改变直方图分布。假设原来图像函数为f(r),分布概率密度为p(r)。
现在变换灰度级r,如下:
s=g(r)
直方图均衡要求,每个灰度级概率密度平均,即:
其中L-1为灰度级数。
根据总概率为1可以求出变换函数g(r)。
均衡的灰度级是原有灰度级概率密度的积分,用离散量表示为累加:
接下来看直方图均衡的处理效果,MATLAB程序包含统计灰度分布的grayLevel_ statistic.m和均衡化函数histogram_equal.m。
function f=grayLevel_statistic(gray, level)[row, col]=size(gray);f=linspace(0,0,level);f=double(f);for i=1:1:row for j=1:1:col f(gray(i,j)+1)=f(gray(i,j)+1)+1; endendf=f./(row*col);
function T=histogram_equal(gray, level)[row,col]=size(gray);T=zeros(row, col);p=grayLevel_statistic(gray, level);%get the probability of gray levelp_sum=linspace(0,0,level);p_sum=double(p_sum);for k=1:1:level if k==1 p_sum(k)=p(k); else p_sum(k)=p_sum(k-1)+p(k); endendfor i=1:1:row for j=1:1:col if p_sum(gray(i,j)+1)*(level-1) >= level-1 T(i,j)=level-1; else T(i,j)=round(p_sum(gray(i,j)+1)*(level-1)); end endend
function histogram_image%filter image functionimage=imread('timg.jpeg');[d1,d2,d3]=size(image);if d3==3 R=image(:,:,1); G=image(:,:,2); B=image(:,:,3); gray=round((1/3)*(R+G+B));elseif d3==2 R=image(:,:,1); G=image(:,:,2); gray=round((1/2)*(R+G));else gray=image;endT=histogram_equal(gray,256);imshow(T, [0, 255]);
经过直方图处理后图像具有较好清晰度,增强了明暗对比。但是全局直方图均衡可能会模糊掉一些原来不突出的地方,掩盖掉细节。采用局部直方图均衡可以让细节更加清晰,通过在一个局部区域使用直方图均衡,然后移动到相邻区域继续进行直方图均衡,替换原来变换的灰度值。MATLAB中增加的局部直方图均衡代码为:
function T=histogram_local_equal(gray,level)[row,col]=size(gray);T=zeros(row,col);%move the 3X3 templatefor i=2:1:row-1 for j=2:1:col-1 template=gray(i-1:i+1,j-1:j+1); %update the gray data using the local histogram data T(i-1:i+1,j-1:j+1)=histogram_equal(template,level); endend
图1 (a)灰度图(b)全局直方图均衡处理(c)局部直方图均衡处理,采用3x3模板
参考文献:
1. 《数字图像处理》,Rafael. C. Gonzalez, Richard. E. woods.
2. 《image processing using matlab》, Rafael. C. Gonzalez.
- 图像处理(1)直方图均衡
- 图像处理(二)直方图均衡化
- 直方图均衡化处理图像(python)
- 图像处理(三):直方图均衡化
- 灰度图像直方图均衡处理
- 彩色图像直方图均衡处理
- 图像处理------直方图均衡化
- 【图像处理笔记】直方图均衡
- 【图像处理笔记】直方图均衡
- 【图像处理】直方图均衡化
- 直方图均衡化---图像处理
- 直方图处理(均衡)
- python 简单图像处理(8) 直方图均衡化
- 图像处理中的直方图应用(通过直方图均衡化增强图像对比度)
- 【OpenCV3图像处理】图像直方图均衡化、直方图匹配
- 图像预处理与特征提取(1)——白化处理和直方图均衡化
- 图像处理基本算法-直方图均衡
- 图像处理基本算法-直方图均衡
- 用tarjan求割点
- 条件编译与extern "C"
- CodeForces
- 使用Github DeskTop提交代码到github(超简便,不需要git指令)
- AR 恐龙博物馆三(萌宠小恐成长日记之摸爬滚打)
- 图像处理(1)直方图均衡
- 【扫雷】编写一个小游戏--扫雷的c语言实现
- Android_视频播放
- java线程池使用详解
- 自定义输入框清空按钮
- Vue 折腾记
- CodeIgniter框架源码学习之框架入口文件--index.php
- lnmap实战之负载均衡架构+高可用keepalived
- 实现自定义音量盘