本系列文章都是通过自己的学习经验,以及啃文档所写。如需转载,请注明出处

参考文档:Image Processing Toolbox™ 6
User’s Guide

           作者:joy

          联系方式:joy543@live.com

如果图像的对比度太差,常用的方法就是灰度直方图均衡化。在matlab中,能达到这个目的的函数就是histeq.那么直方图均衡化的原理是什么呢?下面就主要讲解一下:

histeq的原理:

[MN]=size(H);

[counts,x]=imhist(H);%H是读取的图像,imhist是对图像直方图进行统计,其中count,是每个灰度值得个数,x代表灰度值。一般的,x=1:256

location=find(counts~=0);%找到所有像素个数不为0的灰度级

MinCDF=min(counts(location));%找到包含个数最少的灰度级

for  j=1:length(location)

CDF=sum(counts(location(1:j)));%计算各个灰度级像素个数累计分布

P=find(H==x(location(j)));%找到图像中等于某个灰度级所有像素点所在位置

H(P)=(CDF-MinCDF)/(M*N-MinCDF);%%利用灰度换算公式,修改所有位置上的像素值

end

简单的说,就是将每个灰度值利用一个变换公式替换掉。

简单的例子:

clc;clear;closeall;

H=imread('pout.tif');figure;subplot(121);imshow(H);%图像应该是灰度图,若图像为彩色图,需要对每个通道进行计算

H=im2double(H);%这个是需要注意的地方,一定要变换成double类型

[MN]=size(H);

[counts,x]=imhist(H);%H是读取的图像,imhist是对图像直方图进行统计,其中count,是每个灰度值得个数,x代表灰度值。一般的,x=1:256

location=find(counts~=0);%找到所有像素个数不为0的灰度级

MinCDF=min(counts(location));%找到包含个数最少的灰度级

for j=1:length(location)

CDF=sum(counts(location(1:j)));%计算各个灰度级像素个数累计分布

P=find(H==x(location(j)));%找到图像中等于某个灰度级所有像素点所在位置

H(P)=(CDF-MinCDF)/(M*N-MinCDF);%%利用灰度换算公式,修改所有位置上的像素值

end

subplot(122);imshow(H)

print(gcf,'-djpeg',['1.jpg']);   % 保存为jpg格式的图片。


如果用histeq就更简单了:

clc;clear;closeall;

H=imread('pout.tif');figure;imshow(H);

imhist(H);

B=histeq(H);figure;imshow(B)

imhist(B)

三、histeq的原理和用法相关推荐

  1. histeq的原理和用法

    参考文档:Image Processing Toolbox™ 6 User's Guide 如果图像的对比度太差,常用的方法就是灰度直方图均衡化.在matlab中,能达到这个目的的函数就是histeq ...

  2. python装饰器原理-Python装饰器原理与用法分析

    这篇文章主要介绍了Python装饰器原理与用法,结合实例形式分析了Python装饰器的概念.原理.使用方法及相关操作注意事项,需要的朋友可以参考下 本文实例讲述了Python装饰器原理与用法.分享给大 ...

  3. java 字节缓冲_Java字节缓冲流原理与用法详解

    本文实例讲述了Java字节缓冲流原理与用法.分享给大家供大家参考,具体如下: 一 介绍 BufferInputStresm和BufferOutputStream 这两个流类为IO提供了带缓冲区的操作, ...

  4. linux / pkg-config 原理及用法

    一.pkgconfig 有什么用 大家应该都知道用第三方库,就少不了要使用到第三方的头文件和库文件.我们在编译.链接的时候,必须要指定这些头文件和库文件的位置. 对于一个比较大第三方库,其头文件和库文 ...

  5. php namespace原理作用,php 命名空间(namespace)原理与用法实例小结

    本文实例讲述了php 命名空间(namespace)原理与用法.分享给大家供大家参考,具体如下: 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致 ...

  6. 使用ToolRunner运行Hadoop作业的原理及用法

    使用ToolRunner运行Hadoop作业的原理及用法 @(HADOOP)[hadoop, 大数据] 使用ToolRunner运行Hadoop作业的原理及用法 一示例程序一打印所有参数 1直接运行程 ...

  7. python装饰器作用和功能_Python装饰器原理与用法分析

    这篇文章主要介绍了Python装饰器原理与用法,结合实例形式分析了Python装饰器的概念.原理.使用方法及相关操作注意事项,需要的朋友可以参考下 本文实例讲述了Python装饰器原理与用法.分享给大 ...

  8. 依赖注入原理 php,PHP依赖注入原理与用法分析

    本文实例讲述了PHP依赖注入原理与用法.分享给大家供大家参考,具体如下: 引言 依然是来自到喜啦的一道面试题,你知道什么是依赖注入吗? 依赖注入(DI)的概念虽然听起来很深奥,但是如果你用过一些新兴的 ...

  9. mysql游标 原理解说_mysql存储过程之游标(DECLARE)原理与用法详解

    本文实例讲述了mysql存储过程之游标(DECLARE)原理与用法.分享给大家供大家参考,具体如下: 我们在处理存储过程中的结果集时,可以使用游标,因为游标允许我们迭代查询返回的一组行,并相应地处理每 ...

最新文章

  1. 16进制转string java_java的2/10/16进制转换和字符串数字转换
  2. 检查Java中的字符串是空还是空[重复]
  3. flask 注册路由和蓝图
  4. 说明使用assert和防错代码的区别
  5. oss导出数据为空时怎么处理_数据库导出时有空表导不出的解决方法
  6. thinkphp加锁抢购商品
  7. db2 两个结构相同的表_从两个工作表提取数据记录,并显示相同记录的报告
  8. [css] 元素竖向的百分比设置是相对容器的高度吗?
  9. 【codevs1262】不要把球传给我,非常无语的一道题目
  10. 小程序解码时 php 7.0以上 mcrypt拓展无法使用 旧版本的解密解决方案 新版本在另外一篇文章
  11. mysql optimize 用法_mysql中OPTIMIZE TABLE的作用
  12. 《学术小白的学习之路 02》情感分析02 之基于大连理工情感词典的情感分析和情绪计算
  13. 高阶的Parser:可变运算优先级
  14. 10、共射放大电路的设计
  15. numpy抽样函数 np.random.choice用法详解
  16. 【解决U盘无法访问】
  17. 基于网页在线图书小说电子书阅读系统 毕业设计毕设源码毕业论文开题报告参考(2)网站和用户功能
  18. 2. Mac 命令行走代理服务器
  19. Asterisk电子传真-5
  20. linux 卸载安装 mysql

热门文章

  1. 学习笔记(2):H3CS-WLAN 无线工程师认证-WLAN技术背景知识1
  2. python自动写作ai_论文自动写作之自动添加参考文献
  3. 更换计算机桌面背景的教案,《桌面背景换换样》教学设计
  4. 【坎坷求职路】:选择大于努力!一名六次反复经历失败的应届生,最后一刻跻身阿里如愿以偿
  5. yslow3.1.2_YSlow 2.0:最初的草图
  6. 成功解决pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 4, saw 2
  7. java+selenium的入门 案例 selenium包 谷歌驱动包 火狐驱动包 IE驱动包 (一)
  8. NLP中的对话机器人——问答机器人的应用场景
  9. 去一趟公园前,我要先饿足三天三夜 广州美食
  10. java python nodejs快餐店网上订餐系统