title: Histogram Equalization in Matlab
date: 2014-10-04 11:06:15
categories: Digital Image Processing
tags:
- Digital Image Processing
- Computer Vision
- Algorithm


算法需求

要求如下:

Histogram Equalization (test images: fig1.jpg, fig2.jpg)
a. Write a computer program for computing the histogram of an image.
b. Implement the histogram equalization technique.
c. Your program must be general to allow any gray-level image as its input.

简单说,就是实现一个直方图均衡化的程序。

直方图均衡化的好处多多,直观讲,就是可以让图像颜色变化更加均匀,使得太暗的部分显示出更多的细节。

下面介绍算法的主要思路。

主要参考了维基百科的文章。

算法步骤

  1. 获取原始图像信息,并转化为灰度图像,获得图像信息矩阵;

  2. 统计不同灰度的频数分布P(gray_value),ninin_i 为该灰度值的像素点的数量;

    Px(i)=p(x=i)=niPx(i)=p(x=i)=ni

    P_x(i) = p(x=i) = n_i

  3. 计算得到灰度的概率分布累积函数cdf,即cumulative distribution function;

    cdf_x(i)=∑_j=0ip_x(j)cdf_x(i)=∑_j=0ip_x(j)

    cdf\_x(i) = \sum\_{j=0}^{i}p\_x(j)

  4. 对累积分布函数进行均衡化:

    P_y(i)=T[cdf_x(i))]P_y(i)=T[cdf_x(i))]

    P\_y(i) = T[cdf\_x(i))]

其中 T(x)T(x)T(x) 是关于 xxx 的一个转化函数,在这里我们定义 T" role="presentation">TTT 为

P_x(i)=round[cdf(v)−cdf_minM∗N−cdf_min×(Graylevel−2)]+1P_x(i)=round[cdf(v)−cdf_minM∗N−cdf_min×(Graylevel−2)]+1

P\_x(i) = round\left[ \frac{cdf(v)-cdf\_{min}}{M * N - cdf\_{min}} \times (Graylevel - 2) \right] + 1

  1. 接下来我们可以利用新的 cdfcdfcdf 值对原始图像进行均一化:

    Image(i,j)=cdf_y(k)Image(i,j)=cdf_y(k)

    Image(i,j) = cdf\_y(k)

代码及解析

  • 读取图像,检测是否为灰度图像,否则转化为灰度图,并获得图像信息矩阵pic_ori
clear all
pic_ori = imread('./images/Fig1.jpg');
size = size(pic_ori);
if( numel(size) > 2 ) % Function ISRGB has been removed.pic_ori = rgb2gray(pic_ori);size = size(pic_ori);
end
height = size(1);
width = size(2);
gray_level = 256; % the number of grey levels used
  • 显示未处理图像
figure,imshow(pic_ori) % Image before processing
title('未处理图像') % * 获取灰度值频数分布
P = zeros(gray_level,1);
for i = 1:heightfor j = 1:widthgray_value = pic_ori(i,j)+1; % P(0); index must be a positive % integer or logical.P(gray_value) = P(gray_value) + 1;end
end
  • 获得灰度值累积分布
cdf = zeros(gray_level,1);
cdf(1) = P(1);
cdf_min = 0;
for i = 2:gray_levelcdf(i) = cdf(i-1) + P(i);if(cdf_min == 0 && cdf(i) > 0)cdf_min = cdf(i);end
end
  • 对灰度值累积分布进行转化
cdf_equal = zeros(gray_level, 1);
for i = 1:gray_levelcdf_equal(i) = round( (cdf(i)-cdf_min) / (height * width - cdf_min) * (gray_level - 1) ) + 1;
end
  • 计算图像像素点新的灰度值
pic_equal = pic_ori;
for i = 1:heightfor j = 1:widthpic_equal(i,j) = cdf_equal( pic_equal(i,j) + 1 );end
end
  • 显示均衡化后的图像
figure,imshow(pic_equal) % Image after equalization
title('均衡化后图像')  
  • 显示直方图的函数是
figure
subplot(221)
imshow(pic_ori)%显示原始图像
subplot(222)
imhist(pic_ori)%显示原始图像直方图   

结果展示

原始图像如图

可以比较明显地看到,两幅图像的灰度变化更为均匀。

Histogram Equalization in Matlab相关推荐

  1. Paper | Contrast Limited Adaptive Histogram Equalization

    目录 1. 背景 1.1. 对比度和直方图均衡HE 1.2. HE的问题 1.3. AHE 1.4. 底噪问题 2. CLAHE 2.1. 效果展示 2.2. 算法格式和细节 论文:Contrast ...

  2. OpenCV直方图均衡Histogram Equalization

    OpenCV直方图均衡Histogram Equalization 直方图均衡Histogram Equalization 目标 理论 什么是图像直方图? 什么是直方图均衡化? 它是如何工作的? 代码 ...

  3. OpenCV C++ 07 - Histogram Equalization of a Color image with OpenCV

    Code /* 作者:郑大峰 时间:2019年09月20日 环境:OpenCV 4.1.1 + VS2017 内容:Histogram Equalization of a Color image wi ...

  4. OpenCV C++ 06 - Histogram Equalization of a Grayscale image with OpenCV

    直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法.直方图均衡化处理的"中心思想"是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布. 这 ...

  5. Python+OpenCV:图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization)

    Python+OpenCV:图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization) ############ ...

  6. Python+OpenCV:直方图均衡化(Histogram Equalization)

    Python+OpenCV:直方图均衡化(Histogram Equalization) ####################################################### ...

  7. 数字图像处理:直方图均衡(Histogram Equalization)的原理及处理介绍

    一.引言 本系列文章记录老猿自学冈萨雷斯<数字图像处理>的感悟和总结,不过估计更新会比较慢,白天要工作,都是晚上抽空学习,学习完一章再回头总结,想学的朋友可以自己下载英文原版(目前到第四版 ...

  8. 数字图像处理100问—23 直方图均衡化( Histogram Equalization )

    提示:内容整理自:https://github.com/gzr2017/ImageProcessing100Wen CV小白从0开始学数字图像处理 23 直方图均衡化( Histogram Equal ...

  9. 《Contrast Limited Adaptive Histogram Equalization》自译

    译自Karel Zuiderveld 论文 CLAHE This Gem describes a contrast enhancement technique called adaptive hist ...

最新文章

  1. 我的博客今天2岁104天了,我领取了…
  2. DB2存储过程语法规则
  3. 多agv系统调度的MATLAB仿真
  4. jvm性能调优 - 03垃圾回收机制
  5. 比特币科普:区块链技术神奇在哪里?
  6. 《Serverless 架构》序言
  7. 理解 Linux 配置文件【转】
  8. 一道经典的C++题,关于分钱的问题,适合新手阅读(黑客X档案论坛题目) [c#]...
  9. UE4针对特殊的透明物体不应用后期效果
  10. Artstudio Pro for mac(绘图和编辑工具)
  11. google 搜索关键字技巧 google darking
  12. Excel 计算标准差
  13. 网络安全七大赛道:全面梳理(重磅深度)
  14. 【算法】生成n个互异随机数的初步算法
  15. html获取表格行数据,怎么获取表格一行数据
  16. PS 滤镜——扩散特效, 毛玻璃 效果
  17. 自己实现SDIO wifi Marvell8801/Marvell88w8801驱动 介绍(一) ---- 芯片介绍
  18. 宝塔面板下载网站日志,分析百度蜘蛛和谷歌蜘蛛的爬取记录
  19. java毕业生设计学术会议论文稿件管理系统计算机源码+系统+mysql+调试部署+lw
  20. ubuntu18添加中文输入法

热门文章

  1. C++ Vector常用函数
  2. 2种现代密码算法的设计与实现——C++
  3. 史上十大最昂贵笔记本电脑:最高售价100万美元
  4. 如何查看Nginx日志?
  5. 面向对象编程-贪吃蛇小游戏
  6. Flex学习笔记_06 常用属性
  7. NetworkX的基本用法
  8. 单例模式——饿汉模式和懒汉模式
  9. 手机闹钟html,闹钟主题.html · 黄杰琪/app_ Smarter Alarm - Gitee.com
  10. csdn学后感言 王安琪