直方图是多种空间域处理技术的基础。直方图操作能有效地用于图像增强。若一幅图像像素占有全部可能的灰度级并且分布均匀,则这样的图像有高对比度和多变的灰度色调,而显示出一幅灰度级丰富且动态范围大的图像。在此介绍的直方图均衡化方法,仅依靠输入图像的直方图信息就可以达到这一效果。

均衡化的原理

Python版本的OpenCV课程学习中,就已经介绍了直方图均衡化的远离了。OpenCV For Python入门44 直方图均衡化

直方图是多种空间域处理技术的基础。直方图操作能有效地用于图像增强。

灰度直方图是灰度值的函数,它描述了图像中各灰度值的像素个数。通常用横坐标表示像素的灰度级别,纵坐标表示对应的灰度级出现的频率(像素的个数)。

常用的直方图是规格化离散化的,即纵坐标用相对值表示。

设图像总像素为N,某一级灰度像素数为n_r,则直方图表示为:

直方图

直方图的意义

灰度直方图反映了一幅图像的灰度分布情况。

(a)大多数像素灰度值取在较暗区域,图像肯定较暗.一般在摄影过程中曝光过弱就会造成这种结果。

(b)图像的像素灰度值集中在亮区,图像将偏亮.一般在摄影中曝光太强将导致这种结果。

从两幅图像的灰度分布来看图像的质量均不理想。

两个直方图分布

直方图均衡化

若一幅图像像素占有全部可能的灰度级并且分布均匀,则这样的图像有高对比度和多变的灰度色调,而显示出一幅灰度级丰富且动态范围大的图像。在此介绍的直方图均衡化方法,仅依靠输入图像的直方图信息就可以达到这一效果。

通过把原图像的直方图通过变换函数修正为分布比较均匀的直方图,从而改变图像整体偏暗或整体偏亮,灰度层次不丰富的情况,这种技术叫直方图均衡化

直方图均衡化过程解析:

设r和s分别表示原图像灰度级和经直方图均衡化后的图像灰度级。为便于讨论,对r和s进行归一化,即使:0≤r,s≤1。

对于一幅给定的图像,归一化后灰度级分布在0≤r≤l范围内。对[0,1]区间内的任一个r值进行如下变换:s=T(r)。变换函数s=T(r)应满足下列条件:

•在0≤r≤1的区间内,T(r)单值单调增加。保证图像的灰度级从白到黑的次序不变;

•对于0≤r≤1,有0≤T(r)≤1。保证映射变换后的像素灰度值在允许的范围内。

实例

matlab代码

% This is a code that can be reproduced.
% However, this copyright notice shall be attached when copying, pasting and public use
% Author: Xinrui Tao
% Email: [email protected]
% Date: 2022-11-11 12:07:32
% I have my own BLOG(URL: https://www.52txr.cn  ). Welcome to leave a message.

% 读取原图
R = imread('king.png');
[row, col] = size(R);
% 显示原图和原图对应的直方图
subplot(2,2,1), imshow(R), title('原灰度图');
subplot(2,2,2), imhist(R), title('原灰度图的直方图');
% 计算PMF,即统计各灰度值的像素数量
PMF = zeros(1, 256); %注意MATLAB的数组索引从1开始
for i = 1:row
for j = 1:col
PMF(R(i,j) + 1) = PMF(R(i,j) + 1) + 1; % R(i,j)为像素的灰度值
end
end
PMF = PMF / (row * col);
% 计算CDF
CDF = zeros(1,256);
CDF(1) = PMF(1);
for i = 2:256
CDF(i) = CDF(i - 1) + PMF(i);
end
% 计算均衡后的像素值
Sk = zeros(1,256);
for i = 1:256
Sk(i) = CDF(i) * 255;
end
% 映射到新的像素值
Sk = round(Sk);
for i = 1:row
for j = 1:col
R(i,j) = Sk(R(i,j) + 1);
end
end
% 绘制直方图均衡后的图像
subplot(2,2,3), imshow(R), title('直方图均衡');
subplot(2,2,4), imhist(R), title('均衡后的直方图');

matlab运行效果:

直方图均衡化


版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/histeq.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!
▶ 站长邮箱 [email protected][email protected] ,如不方便留言可邮件联系。

最后修改:2022 年 11 月 11 日
如果觉得我的文章对你有用,请随意赞赏