Matlalb实现直方图均衡化

  • 直方图均衡化
  • Matlab代码实现

直方图均衡化

直方图均衡化是一种使输出图像直方图近似服从均匀分布的变换算法,其计算步骤如下:

  1. 列出原始图像的灰度级fjf_jfj​,j=0,1,…,k,…,L-1,其中L是灰度级的个数。
  2. 统计各灰度值的像素数目NjN_jNj​, j=0,1,…,k,…,L-1。
  3. 计算原始图像直方图各灰度级的频度Pj=Njn\frac{Nj}{n}nNj​,j=0,1,2,…,k,…,L-1,其中n为原始图像总的像素数目。
  4. 计算累计分布函数C(f)=∑i=0kPj(fj)\displaystyle\sum_{i=0}^{k} P_j(f_j)i=0∑k​Pj​(fj​),j=0,1,2,…,k,…,L-1。
  5. 应用以下公式计算映射后的输出图像的灰度级gig_igi​,i=0,1,…,k,…,P-1,P为输出图像灰度级的个数:
    gig_igi​=INT[ (gmaxg_{max}gmax​-gming_{min}gmin​)C(f)+gming_{min}gmin​+0.5 ]
    式中,INT为取整符号。
  6. 统计映射后各灰度级的像素数目nin_ini​,i=0,1,…,k,…,P-1。
  7. 计算输出图像直方图PgP_gPg​(gig_igi​)=nin\frac{n_i}{n}nni​​,i=0,1,…,k,…,P-1。
  8. 用fjf_jfj​和gig_igi​的映射关系修改原始灰度级,从而获得直方图近似为均匀分布的输出图像。

Matlab代码实现

Histogram_equalization.m

function [output] = Histogram_equalization(input_image)
if numel(size(input_image)) == 3   %如果图像为rgb图像%this is a RGB image%here is just one method, if you have other ways to do the%equalization, you can change the following coder=input_image(:,:,1);v=input_image(:,:,2);b=input_image(:,:,3);r1 = hist_equal(r);v1 = hist_equal(v);b1 = hist_equal(b);output = cat(3,r1,v1,b1);
else                              %图像为灰值图像[output] = hist_equal(input_image);
endfunction [output2] = hist_equal(input_channel)[m,n]=size(input_channel);output2=zeros(m,n);N=zeros(256,1);P=zeros(256,1);C=zeros(256,1);for i=1:m                    %统计各灰度级个数for j=1:nN(input_channel(i,j)+1)=N(input_channel(i,j)+1)+1;endendfor i=1:256                 %计算原始图像直方图各灰度级的频度P(i)=N(i)/(m*n);endC(1)=P(1);                  %计算累计分布函数for i=2:256C(i)=C(i-1)+P(i);endfor i=1:m                   %通过映射关系获得输出直方图for j=1:noutput2(i,j)=floor(255*C(input_channel(i,j)+1)+0.5);endendoutput2=uint8(output2);end
end

代码效果展示


展示代码 test.m

clc;
clear;
close all;
I = imread('d:\test.jpg');
[J] = Histogram_equalization(I);
subplot(221), imshow(I);
subplot(222), imhist(I);
subplot(223), imshow(J);
subplot(224), imhist(J);

[1] MATLAB数字图像处理.张德丰.扫描版

Matlab实现直方图均衡化(基于自定义函数)相关推荐

  1. matlab实现直方图均衡化

    直方图均衡化是一种利用灰度变换自动调节图像对比度质量的方法,基本思想是通过灰度级的概率密度函数求出灰度变换函数,它是一种以累计分布函数变换法为基础的直方图修正法. 直方图均衡化处理的步骤如下: 1. ...

  2. python直方图均衡化代码_基于matlab的直方图均衡化代码

    基于matlab的直方图均衡化代码 2007-04-15 20:15 clear all %一,图像的预处理,读入彩***像将其灰度化 PS=imread('1.jpg');             ...

  3. 直方图均衡化 matlab代码,基于matlab的直方图均衡化代码

    基于matlab的直方图均衡化代码 2007-04-15 20:15 clear all %一,图像的预处理,读入彩***像将其灰度化 PS=imread('1.jpg');             ...

  4. R语言构建文本分类模型:文本数据预处理、构建词袋模型(bag of words)、构建xgboost文本分类模型、基于自定义函数构建xgboost文本分类模型

    R语言构建文本分类模型:文本数据预处理.构建词袋模型(bag of words).构建xgboost文本分类模型.基于自定义函数构建xgboost文本分类模型 目录

  5. R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释一个iris数据样本的预测结果、LIME解释器进行模型预测结果解释并可视化

    R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释一个iris数据样本的预测结果.LIME解释器进行模型预测结果解释并可视化 ...

  6. R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释多个iris数据样本的预测结果、使用LIME解释器进行模型预测结果解释

    R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释多个iris数据样本的预测结果.使用LIME解释器进行模型预测结果解释并可 ...

  7. R语言使用ggplot2可视化交叉曲线(Curved lines defined with functions):基于自定义函数可视化交叉曲线、使用curve_intersect函数计算曲线交叉点

    R语言使用ggplot2可视化交叉曲线(Curved lines defined with functions):基于自定义函数可视化交叉曲线.使用curve_intersect函数计算曲线交叉点 目 ...

  8. 【MATLAB】直方图均衡化Matlab实现(非histeq内置函数)

    直方图均衡化Matlab实现(非histeq内置函数) 直方图均衡化常用于图像增强,可以提高图像对比度,扩展图像动态范围. 算法步骤: 统计直方图 累计直方图 映射 close all clear a ...

  9. Matlab 彩色图片直方图均衡化处理 line()函数实现

    好了,不说这么多了,直奔主题,本次分别做了两次实现,分别是:彩色图片转灰度图直方图均衡化处理以及彩色图片的直方图均衡化处理,大家可以按需观看. 一.程序源码 (1)彩色图片转灰度图直方图均衡化处理: ...

最新文章

  1. python在线工具-6 种 Python 数据可视化工具
  2. c# 微服务学习_关于使用“江西微就业”服务平台学习掌握就业创业帮扶政策的通知...
  3. UNIX/Linux-进程控制(实例入门篇)
  4. AI驱动的超分辨技术落地实践
  5. k8s command args
  6. django-oscar的默认地点打开后总是united kingdom
  7. [PAT乙级]1031 查验身份证
  8. [CQOI2018] 交错序列(矩阵加速优化dp)
  9. PAT1036.跟奥巴马一起编程
  10. 想知道自己的物理内存地址都是如何分配的么?
  11. 热点|国家动物健康与食品安全创新联盟成立科技创新赋能委员会 并首发动物源食品信任追溯平台...
  12. 网易云音乐encseckey算法php,求助网易云音乐_secretKey及_encSecKey获取
  13. 如何写好一个打动投资人的计划书
  14. 【精品工具】几款好用的在线RGB、HEX颜色代码生成器
  15. 优享短视频训练营:这些好用的视频剪辑APP,你知道吗?
  16. 实用算法 002: SAM 上的根号暴力
  17. 蓝牙核心技术概述: 蓝牙协议规范(射频、基带链路控制、链路管理)
  18. Stale branches 设置_手机资讯:iPhone 如何设置来电闪光灯苹果手机 LED 灯来电提醒设置教程...
  19. Linux内核变量中per-CPU的使用
  20. 2016服务器系统稳定吗,Windows Server 2016最受企业欢迎的5大特性

热门文章

  1. More than one file was found with OS independent path 'META-INF/rxjava.properties
  2. Android SDK Manager 的介绍
  3. 最全正則表達式汇总—想要的都有了
  4. 写给自己的web开发资源
  5. 深入理解jQuery插件开发【转】
  6. NHibernate从入门到精通系列(7)——多对一关联映射
  7. PowerShell 2.0 实践(十二)管理 SQL Server 2008 R2(1)
  8. 编译-链接-运行-环境配置各种error汇总
  9. 查询oracle模式对象信息,ORACLE 模式和模式对象
  10. java记事本环境变量_java环境变量配置以及用记事本写程序