MATLAB-直方图均衡化

简介: 直方图均衡化(Histogram Equalization) 又称直方图平坦化,实质上是对图像进行非线性拉伸,重新分配图像象元值,使一定灰度范围内象元值的数量大致相等。这样,原来直方图中间的峰顶部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较平的分段直方图:如果输出数据分段值较小的话,会产生粗略分类的视觉效果。

1. 直方图

定义(1):一个灰度级在范围[ 0 , L − 1 ] [0,L-1][0,L−1]的数字图像的直方图是一个离散函数:

h(rk)=nk

其中nk是图形中灰度级为rk的像素个数,k = 0 ,1 , 2 , … , L − 1,由于rk的增量是1,直方图可表示为:

p(k)=nk

将图像中不同灰度级像素出现的次数。

定义(2):

一个灰度级在范围[ 0 , L − 1 ] [0,L-1][0,L−1]的数字图像的直方图是一个离散函数:

p(rk)=nk/n

其中n是图像总的像素个数,nk是图形中灰度级为rk的像素个数,rk是第k个灰度级,k=0,1,2,…,L−1。

对比定义1和定义2,我们可以得到:

  • 是函数值正则化到[ 0 , 1 ] [0,1][0,1]区间,成为实数函数。
  • 函数值的范围与像素的总数无关。
  • 给出灰度级rk在图像中出现的概率密度统计。

2. 直方图均衡化

直方图均衡化(Histogram Equalization) 又称直方图平坦化,实质上是对图像进行非线性拉伸,重新分配图像象元值,使一定灰度范围内象元值的数量大致相等。这样,原来直方图中间的峰顶部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较平的分段直方图:如果输出数据分段值较小的话,会产生粗略分类的视觉效果。

微信截图_20221019183025.png

微信截图_20221019183126.png

直方图均衡化的作用是图像增强。

3. 实例

微信截图_20221019183320.png

微信截图_20221019183410.png

微信截图_20221019183503.png

微信截图_20221019183549.png

微信截图_20221019183926.png微信截图_20221019184110.png

微信截图_20221019184208.png

4. Matlab程序实现

要求:输入一幅灰度图像。

  1. 按比例降低整幅图像灰度;
  2. 对降低灰度后的图像进行直方图均衡化处理;
  3. 在同一个窗口输出显示原始图像和2种结果图像。
clc;clear all;
img = imread('G:\Python\04.Deep learning\07数字图像处理\01matlab作业\image\lena256.bmp');
subplot(131)
imshow(img),title("原图像");
%降低1/2的比例降低图像的灰度
img = img/2
subplot(132)
imshow(img),title("降低灰度后的图像");
[ROW,COL] = size(img);
% 统计每个像素值出现次数
count = zeros(1, 256);
for i = 1 : ROW
    for j = 1 : COL
        count(1, img(i, j) + 1) = count(1, img(i, j) + 1) + 1;
    end
end
%统计每个像素出现的概率
T = zeros(1,256);
T = double(T);
count = double(count);
for i = 1 : 256
    T(1,i) = count(1,i)/(ROW*COL)
end
%求累积概率
for i = 2 : 256
    T(1,i) = T(1,i-1) + T(1,i);
end
img = double(img)
for i = 1 : ROW
    for j = 1 : COL
        img(i,j) = T(1, img(i, j) + 1) * 255;
    end
end
img = uint8(img);
subplot(133)
imshow(img),title("均衡化后图像");

微信截图_20221019184344.png

相关文章
|
算法 计算机视觉 异构计算
基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证
摘要: 在FPGA上实现了图像直方图均衡化算法,通过MATLAB2022a与Vivado2019.2进行仿真和验证。核心程序涉及灰度直方图计算、累积分布及映射变换。算法旨在提升图像全局对比度,尤其适合低对比度图像。FPGA利用可编程增益器和查表技术加速硬件处理,实现像素灰度的均匀重分布,提升视觉效果。![image preview](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_a075525027db4afbb9c0529921fd0152.png)
|
计算机视觉
数字图像处理笔记(一)Matlab实现直方图均衡化
数字图像处理笔记(一)Matlab实现直方图均衡化
|
算法 计算机视觉
MATLAB--数字图像处理 图像直方图均衡化
MATLAB--数字图像处理 图像直方图均衡化
453 0
MATLAB--数字图像处理  图像直方图均衡化
直方图均衡化Matlab实现(非histeq内置函数)
直方图均衡化常用于图像增强,可以提高图像对比度,扩展图像动态范围。
279 0
直方图均衡化Matlab实现(非histeq内置函数)
|
传感器 算法 计算机视觉
数字图像处理实验(三)|图像增强{归一化直方图imhist(f)/numel(f)、直方图均衡化histeq、生成线性空间滤波fspecial、中值滤波medfilt2}(附matlab实验代码截图)
数字图像处理实验(三)|图像增强{归一化直方图imhist(f)/numel(f)、直方图均衡化histeq、生成线性空间滤波fspecial、中值滤波medfilt2}(附matlab实验代码截图)
902 0
数字图像处理实验(三)|图像增强{归一化直方图imhist(f)/numel(f)、直方图均衡化histeq、生成线性空间滤波fspecial、中值滤波medfilt2}(附matlab实验代码截图)
|
存储 数据格式
16位图像matlab直方图均衡化
如果,如果你要做的是8位图直方图均衡化,别看了。前方左转查查histeq怎么用,挺简单的。本文主要实现了一下16位的raw图像直方图均衡化。本人博客,csdn搬运过来
573 0
|
8月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
730 0
|
8月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
976 0
|
8月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
252 0
|
8月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
263 0

热门文章

最新文章