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

相关文章
|
6月前
|
算法 计算机视觉 异构计算
基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证
摘要: 在FPGA上实现了图像直方图均衡化算法,通过MATLAB2022a与Vivado2019.2进行仿真和验证。核心程序涉及灰度直方图计算、累积分布及映射变换。算法旨在提升图像全局对比度,尤其适合低对比度图像。FPGA利用可编程增益器和查表技术加速硬件处理,实现像素灰度的均匀重分布,提升视觉效果。![image preview](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_a075525027db4afbb9c0529921fd0152.png)
|
7月前
|
计算机视觉
数字图像处理笔记(一)Matlab实现直方图均衡化
数字图像处理笔记(一)Matlab实现直方图均衡化
|
算法 计算机视觉
MATLAB--数字图像处理 图像直方图均衡化
MATLAB--数字图像处理 图像直方图均衡化
130 0
MATLAB--数字图像处理  图像直方图均衡化
直方图均衡化Matlab实现(非histeq内置函数)
直方图均衡化常用于图像增强,可以提高图像对比度,扩展图像动态范围。
116 0
直方图均衡化Matlab实现(非histeq内置函数)
|
传感器 算法 计算机视觉
数字图像处理实验(三)|图像增强{归一化直方图imhist(f)/numel(f)、直方图均衡化histeq、生成线性空间滤波fspecial、中值滤波medfilt2}(附matlab实验代码截图)
数字图像处理实验(三)|图像增强{归一化直方图imhist(f)/numel(f)、直方图均衡化histeq、生成线性空间滤波fspecial、中值滤波medfilt2}(附matlab实验代码截图)
374 0
数字图像处理实验(三)|图像增强{归一化直方图imhist(f)/numel(f)、直方图均衡化histeq、生成线性空间滤波fspecial、中值滤波medfilt2}(附matlab实验代码截图)
|
存储 数据格式
16位图像matlab直方图均衡化
如果,如果你要做的是8位图直方图均衡化,别看了。前方左转查查histeq怎么用,挺简单的。本文主要实现了一下16位的raw图像直方图均衡化。本人博客,csdn搬运过来
371 0
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
215 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
4月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
139 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
4月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
105 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
7月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度