直方图均衡化的计算以及MATLAB实现

直方图均衡,这里不写公式,只看怎么算

一.手算直方图均衡

例如一个矩阵
\[源矩阵=
\left[
\begin{matrix}
4&4&4&4&4&4&4&0\4&5&5&5&5&5&4&0\4&5&6&6&6&5&4&0\4&5&6&7&6&5&4&0\4&5&6&6&6&5&4&0\4&5&5&5&5&5&4&0\4&4&4&4&4&4&4&0\4&4&4&4&4&4&4&0\ \end{matrix}
\right]
\]
由题意或矩阵分析,该矩阵的灰度值范围是[0,7]
现在,统计计算各灰度值数量、概率、累计概率

映射后的灰度值计算=最大灰度值差*当前累计概率
由于灰度值为正数,所以最后要取整

灰度值 数量 概率 累计概率 映射后的灰度值 取整
P(h=0) 8 0.125 0.125 7*0.125=0.875 1
P(h=1) 0 0 0.125 7*0.125=0.875 1
P(h=2) 0 0 0.125 7*0.125=0.875 1
P(h=3) 0 0 0.125 7*0.125=0.875 1
P(h=4) 31 0.484375 0.609375 7*0.609375=0.4.265625 4
P(h=5) 16 0.25 0.859375 7*0.859375=6.015625 6
P(h=6) 8 0.125 0.984375 7*0.125=6.890625 7
P(h=7) 1 0.015625 1 7*1=7 7

\[直方图均衡化后=
\left[
\begin{matrix}
4&4&4&4&4&4&4&1\4&6&6&6&6&6&4&1\4&6&7&7&7&6&4&1\4&6&7&7&7&6&4&1\4&6&7&7&7&6&4&1\4&6&6&6&6&6&4&1\4&4&4&4&4&4&4&1\4&4&4&4&4&4&4&1\ \end{matrix}
\right]
\]

二.matlab直方图均衡

方法一

  • histeq(mat):对矩阵进行直方图均衡化
  • hist(mat):对矩阵进行直方图显示
  • imhist(mat):对矩阵进行直方图显示

    对于hist和imhist区别目前不知道,只是当自定义小矩阵用imhist显示直方图不成功,用hist能够显示成功

方法二

  • imadjust(img,[low_in,high_in],[low_out,high_out],gamma)
  • -[low_in,high_in]:需要扩展的范围,归一化值,即[0,1]
  • -[low_out,high_out]:扩展到这个范围,同上
  • -gamma:映射方式(系数)

    <1变亮;
    1:变暗;
    =1:(默认值);

原文地址:https://www.cnblogs.com/thgpddl/p/12523173.html

时间: 2024-08-06 11:05:24

直方图均衡化的计算以及MATLAB实现的相关文章

matlab 直方图均衡化

原理: 直方图均衡化首先是一种灰度级变换的方法: 原来的灰度范围[r0,rk]变换到[s0,sk]变换函数为:s=T(r); 为便于实现,可以用查找表(look-up table)的方式存储,即:原始的灰度作为查找表的索引,表中的内容是新的灰度值. 其次,直方图均衡化是图像增强的一种基本方法,可提高图像的对比度,即:将较窄的图像灰度范围以一定规则拉伸至较大(整个灰度级范围内)的范围. 目的是在得到在整个灰度级范围内具有均匀分布的图像. 所以,当输入:直方图H(r)[此处指每个灰度级占有的像素数]

MATLAB 直方图,线性变换,直方图均衡化

1.给定图像输出直方图 img = imread('E:\matlab\work\1.jpg'); p=rgb2gray(img); %转为灰度图像 imhist(p); 效果: 2.给定一个线性变换函数,实现图像的灰度拉伸 I = imread('E:\matlab\work\lenna.bmp') I2=I.*2-50 %做线性变换 imshow(I2); %显示经过线性变换后的图像 3.实现对图像的均衡化 I = imread('E:\matlab\work\lenna.bmp'); [h

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

2007-04-15 20:15 clear all %一,图像的预处理,读入彩***像将其灰度化 PS=imread('1.jpg');                 %读入JPG彩***像文件 imshow(PS)                                  %显示出来 title('输入的彩色JPG图像') imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %将彩***片灰度化并保存 PS=rgb2gray(PS);      

直方图均衡化(matlab)

对图像(灰度图)进行直方图均衡化主要有一下几个步骤: 1.计算各个灰度值(0-255)出现的次数 2.计算各个灰度值的累积分布率 2.根据累积分布率计算出原来各灰度值的均衡化之后的新的值 %直方图均衡化 clear; I = imread('1.bmp'); [height,width] = size(I); figure subplot(221) imshow(I)%显示原始图像 subplot(222) imhist(I)%显示原始图像直方图 %进行像素灰度统计; s = zeros(1,2

数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)

我们来看一个灰度图像,让表示灰度出现的次数,这样图像中灰度为 的像素的出现概率是  是图像中全部的灰度数, 是图像中全部的像素数,  实际上是图像的直方图,归一化到 . 把  作为相应于  的累计概率函数, 定义为:  是图像的累计归一化直方图. 我们创建一个形式为  的变化,对于原始图像中的每一个值它就产生一个 ,这样  的累计概率函数就能够在全部值范围内进行线性化,转换公式定义为: 注意 T 将不同的等级映射到  域.为了将这些值映射回它们最初的域,须要在结果上应用以下的简单变换: 上面描写

直方图均衡化会造成灰度级的合并【伪轮廓】

均衡化处理后的图象只能是近似均匀分布.均衡化图象的动态范围扩大了,但其本质是扩大了量化间隔,而量化级别反而减少了, 因此,原来灰度不同的象素经处理后可能变的相同,形成了一片的相同灰度的区域,各区域之间有明显的边界,从而出现了伪轮廓. 如果原始图像对比度本来就很高,如果再均衡化则灰度调和,对比度降低.在泛白缓和的图像中,均衡化会合并一些象素灰度,从而增大对比度.均衡化后的图片如果再对其均衡化,则图像不会有任何变化. 灰度直方图均衡化的算法,简单地说,就是把直方图的每个灰度级进行归一化处理,求每种灰

图像处理------直方图均衡化

一.直方图均衡化数学推导 直方图均衡化的总体思想:首先考虑连续函数并且让变量r代表待增强图像的灰度级,假设被归一化到区间[0,1],且r=0表示黑色及r=1表示白色.然后再考虑一个离散公式并允许像素值在区间[0,L-1]内. 对于连续函数而言,假设其变换函数为 s=T(r),  0=<r<=1 在原始图像中,对于每一个像素值r产生一个灰度值s.其中,变换函数要满足以下条件: (1)T(r)在区间中为单值且单调递增.这是为了保证其逆函数的存在,并且输出图像从黑到白顺序增加: (2)当0=<

图像直方图均衡化

1. 直方图均衡化介绍 自我感觉书上讲的很清楚,直接把截图贴上了. 在进行直方图均值化的过程如下 读入图像对每个通道分别统计像素值[0,255]出现的次数.对每个通道分别求像素值[0,255]出现的概率,得到概率直方图.对每个通道分别求像素值[0,255]概率的前缀和,得到累计直方图.对每个通道根据累计直方图分别求像素映射函数.对每个通道完成每个像素点的映射.输出直方图均衡化的图像.2.代码(MATLAB) 1 %直方图均衡化 2 I = imread('D:/picture/girl.jpg'

python实现直方图均衡化,理想高通滤波与高斯低通滤波

写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验二,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验二. 由于时间紧张,代码没有进行任何优化,实验算法仅供参考. 实验要求 实现图像直方图均衡化,要求显示均衡化前.后直方图以及均衡化后图像. 对单通道图像进行DFT变换,要求显示幅度图和相位图,并设计理想高通滤波器和高斯低通滤波器对图像进行频域滤波,并显示滤波之后的图像. 注:除DFT和IDFT外,不允许调库 实验代码 代码首先贴在这里,仅供