[数字图像处理](四)直方图均衡化[HE]算法

图像处理(四)

直方图均衡化


0____前言

​ 直方图操作是图像处理中的一个基本工具。从观察一些图像的直方图中我们可以发现,在暗图像中 ,大多数直方图灰度容集在灰度低端;类似的在亮图像的直方图中,大多数直方图灰度容集在灰度级的高端。直方图均衡化就是通过计算每一灰度级数出现的概率,并将得到的概率前缀和映射到原图像中的过程,此处介绍的是最基本的基于全图像的均衡化的HE(直方图均衡化)算法,之后会继续介绍AHE(自适应直方图均衡化)与CLAHE(限制对比度直方图均衡)。

1____算法流程

  1. 读入图像预处理
  2. 统计每个灰度级数在图像中出现的次数
  3. 计算每个灰度级数于总像素的概率,并统计数组的前缀和
  4. 将得到的前缀和映射到原图像数组中

2____MATLAB实现

clc; close all; clear all; % 读入,预处理 im = imread('p21.png'); imgray = rgb2gray(im); figure; subplot(2,2,1); imshow(imgray); % 统计每个灰度级数 hist = zeros(1,256); [n,m] = size(imgray); % 后面要+1因为图像的范围是在0~255,但是matlab的数组是从1开始映射的 for i = 1:1:n for j = 1:1:m hist( imgray(i,j)+1 ) = hist( imgray(i,j) +1) + 1; end end subplot(2,2,2); bar(hist); % 求分布概率前缀和 pro = zeros(1,256); sumim = sum(hist) pro(1) = hist(1)/sumim; for i = 2:1:256 pro(i) = pro(i-1)+hist(i)/sumim; end % 灰度映射 transim = zeros(n,m); for i = 1:1:n for j = 1:1:m transim(i,j) = pro(imgray(i,j))*255 + 0.5; end end transim = uint8(transim); subplot(2,2,3); imshow(transim); subplot(2,2,4); imhist(transim);

__EOF__

本文作者Hoppz
本文链接https://www.cnblogs.com/hoppz/p/14789860.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Hoppz  阅读(1154)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示