gs算法的matlab代码_【图像算法amp;MATLAB】直方图均衡(干货代码)
本文内容来自博客专栏《DIP数字图像处理》
1
前言
直方图均衡(Histogram equalization)是利用直方图分布,计算累加函数,按照累加函数做映射,能够提升图像对比度。
本文我会从每一个小的步骤编写,说明,并给出每一阶段的结果,让你完全搞懂其原理。
直方图均衡示例:
2
代码
2.1 自己写一个
还是那句话, 【要想搞明白真正原理,尤其你是做图像算法的,还是得自己动手写】代码如下:
%直方图均衡Histogram equalization 源代码
Iin = imread('tire.tif');
[numRows,numCols]=size(Iin);
numBins=2^8;
%直方图统计,概率分布函数pdf(Probability distribution function)
pdf=zeros(1,numBins);
for ii=1:numRows
for jj=1:numCols
pdf(Iin(ii,jj)+1)=pdf(Iin(ii,jj)+1)+1;
end
end
figure()
plot(pdf,'.-');
grid on;
title('直方图统计');
%累加直方图得到,累加函数cdf(Cumulative distribution function)
cdf=cumsum(pdf);
cdf=cdf./cdf(end); %归一化处理
figure()
plot(cdf,'.-');
grid on;
title('直方图累加函数计算');
% 根据累加函数映射
Iout=zeros(numRows,numCols);
for ii=1:numRows
for jj=1:numCols
Iout(ii,jj)=255*cdf(Iin(ii,jj)+1);
end
end
figure()
imshow([Iin,Iout]);
title('左:原图 右:处理图')
2.2 使用Matlab 自带函数histeq
%直方图均衡 Histogram equalization
Iin = imread('tire.tif');
Iout=histeq(Iin);
imshow([Iin,Iout]);
title('左:原图 右:处理图')
3
总结
直方图均衡方法是一种很好的图像对比度提升方法,但是并不适应所有场景,所以需要在其基础上做改进,历来学者做了不少创新。
不过,这种处理思想以及上述代码,是经典,先搞懂经典,再去优化。
【END】
本文内容来自博客专栏《DIP数字图像处理》
gs算法的matlab代码_【图像算法amp;MATLAB】直方图均衡(干货代码)相关推荐
- pandas数据处理 代码_使用Pandas方法链接提高代码可读性
pandas数据处理 代码 We have been talking about using the Pandas pipe function to improve code readability. ...
- 小波分解与小波包分解代码_分解的功能参数和代码可维护性
小波分解与小波包分解代码 Code keeps changing, there's no doubt about that. We always do our best to set some roc ...
- matlab或_如何利用MATLAB计算圆周率
圆周率是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数.π也等于圆形之面积与半径平方之比.是精确计算圆周长.圆面积.球体积等几何形状的关键值. MATLAB中的表 ...
- mysql在哪里写代码_[译] 如何写好 Go 代码
原文:https://scene-si.org/2018/07/24/writing-great-go-code/ 我写了多年的 Go 微服务,并在写完两本关于 (API Foundations in ...
- 如何编写无法维护的代码_编写可维护的前端代码
点击这里获得更好的阅读体验github.com 以下是本人在团队内部分享的整理和补充,水平有限,如有错误,请不吝赐教. 大家好,我叫王力国,目前是 RPA 前端团队负责人,过去一年我们从零构建了 R ...
- latex附录中放python代码_在Latex中插入Python代码
这里指的插入是指最终能在生成的pdf中显示高亮的Python代码. 在Latex中插入Python代码,需要一个第三发的宏包pythonhighlight: https://github.com/ol ...
- iapp启动图代码_关于计算设备运行时间SCL代码的测试与说明
有小伙伴使用西门子PLC仿真软件对我前段时间写的文章<西门子SCL编程实例-计算设备运行时间(2)>进行了测试,发现OB10中的代码并没有执行,他问是不是代码有问题?尤其是这条语句: &q ...
- 天天向上续 python代码_第46p,8行代码,用Python批量重命名文件
大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第46篇文章,第二阶段的课程:Python基础知识:小案例之用Python批量重命名文件. 学习本课程,建议先看一遍:[计算机基础知 ...
- 华为扩大内存代码_华为手机增大手机内存代码 | 手游网游页游攻略大全
发布时间:2016-01-22 我的世界手机版游戏中一个好的种子,可以省去玩家们前期建设的不少功夫,下面是小编给大家整理的我的世界手机版最新种子大全 手机版种子代码,跟种子特点介绍. 我的世界手机版最 ...
- python30行代码_仅利用30行Python代码来展示X算法
假如你对数独解法感兴趣,你可能听说过精确覆盖问题.给定全集 X 和 X 的子集的集合 Y ,存在一个 Y 的子集 Y*,使得 Y* 构成 X 的一种分割. 这儿有个Python写的例子. X = {1 ...
最新文章
- 详细说说Transformer (超详细图解,一图胜千言)
- $Django 中间件 csrf
- 主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)
- 最简单的基于FFmpeg的AVfilter的例子-修正版
- maya导入abc动画_三维文件格式知多少 | abc、glTF、fbx、obj、dae、stl、3ds...
- CG CTF WEB GBK Injection
- go interface 的坑
- mysql 类似wm concat_oracle中有没有类似于mysql中的group_concat的函数?
- java代码块是什么_Java代码块
- python两组数的差异 pca_python – scikit KernelPCA不稳定的结果
- 人生苦短之我用Python篇(socket编程)
- 【Unity3D】动态路障导航
- java调用dll实例_如何用java调用dll,详细图解
- VirtualBox的vmdk文件压缩
- win10右键删除多余菜单
- len(lst[0])
- 【OpenVINO 3】POT量化流程
- pytorch训练时前一次迭代的loss正常后一次迭代却报nan
- 用python绘制玫瑰花
- android版本 51,51星变手机版
热门文章
- ASCII中关于大小写字母间隔为32的思考
- 什么时候找到HAVE_CONFIG_H的定义啊
- ZZULIOJ 1072:青蛙爬井
- ZZULIOJ 1063:最大公约与最小公倍
- linux mint php mysql_linux mint 下mysql中文支持问题
- 二级c语言需要知道的知识点,2020年全国计算机二级C语言复习知识点:C语言基本知识(...
- 小程序采用mvvm设计模式_滴滴重磅开源跨平台统一 MVVM 框架 Chameleon
- 信息学奥赛一本通 1232:Crossing River | OpenJudge NOI 4.6 702:Crossing River
- 信息学奥赛一本通 1307:【例1.3】高精度乘法 | 1174:大整数乘法 | OpenJudge NOI 1.13 09:大整数乘法
- 组合数学 —— 康托展开