Mtlab中函数histeq的使用及直方图的均衡化、规定化
直方图均衡化
均衡化处理的目的是得到比原图具有更高对比度的扩展了动态范围的图像。
原理
假设灰度级为归一化至范围[0,1]内的连续量,并令pr(r)p_r(r)pr(r)表示给定图像中灰度级的概率密度函数。对输入灰度级执行如下操作,得到输出灰度级S:
S=T(r)=∫0rpr(w)dwS = T(r) = \int_0^rp_r(w)dw S=T(r)=∫0rpr(w)dw
得到的输出灰度级的概率密度函数是均匀的。
也就是通过对给定图像的灰度级概率密度函数进行一个积分处理,得到新的输出灰度级。通过这种变换得到的新图像灰度级在范围[0,1]比较均衡化。
直方图规定化
直方图规定化也称为直方图匹配。直方图均衡化以已知图像的直方图为基础,通过扩展输入图像的灰度级到较宽亮度尺度的范围来实现图像增强,但这种方法有时不能成功。而直方图匹配是生成具有指定直方图的图像的方法。
原理
记r和z分别表示输入图像与输出图像的灰度级,输入灰度级的概率密度函数为pr(r)p_r(r)pr(r),输出灰度级的概率密度函数为pz(z)p_z(z)pz(z),则有:
S=T(r)=∫0rpr(w)dwS = T(r) = \int_0^rp_r(w)dw S=T(r)=∫0rpr(w)dw
人为定义一个变量z,使得它满足:
H(z)=∫0zpz(w)dw=SH(z) = \int_0^zp_z(w)dw = S H(z)=∫0zpz(w)dw=S
这样的话,z就等于H(s)的导数,这样就可由输入图像得到变换后的灰度级z。
histeq
函数histeq可以实现直方图的均衡化和规定化。
调用格式
J = histeq(I,hgram)
对灰度图像I进行变换,使得输出灰度图像J的直方图与目标直方图hgram近似匹配。
J = histeq(I,n)
变换灰度图像I,在J中返回具有n个离散灰度级的灰度图像。大致相等的像素数被映射到J中的n个级别中的每一个,使得J的直方图近似平坦。当n远小于I中的离散层数时,J的直方图更平坦。
均衡化使用示例
I = imread('figure1.jpg');
J = histeq(I);
imshowpair(I,J,'montage')
得到原图与均衡后的图片如下所示:
可见,经过均衡化后的图片,对比度明显增强。
规定化使用示例
I = imread('figure1.jpg');
A = rgb2gray(I);
J = imread('figure2.jpg');
B = rgb2gray(J);
[hgram,x] = imhist(B);
C = histeq(A,hgram);
subplot(1,3,1)
imshow(A)
title('图A');
subplot(1,3,2)
imshow(B)
title('图B') ;
subplot(1,3,3)
imshow(C)
title('图A规定化到图B');
得到规定化显示效果如下图所示:
Mtlab中函数histeq的使用及直方图的均衡化、规定化相关推荐
- Matlab中函数histeq的使用方法及直方图均衡化
直方图均衡化 均衡化处理的目的是得到比原图具有更高对比度的扩展了动态范围的图像. 原理 假设灰度级为归一化至范围[0,1]内的连续量,并令pr(r)p_r(r)pr(r)表示给定图像中灰度级的概率密 ...
- matlab中调用histeq函数命令,根据MATLAB的histeq函数改写的运行在OpenCV下的直方图规定化源码!...
据说,图像的直方图规定化比直方图均衡化用得更多,但是很奇怪的是OpenCV居然没有图像直方图规定化的源码!所以,我就有必要在OpenCV下写一个图像直方图规定化处理的函数,以方便将来使用. 我在网上找 ...
- histeq函数实现直方图的均衡化和规定化
%histeq函数实现直方图的均衡化和规定化 clear,clc,close all; Image1 = rgb2gray(imread('baboon.jpg')); Hgram = imhist( ...
- 利用OpenCV的函数equalizeHist()对图像作直方图均衡化处理
如果一幅图像的灰度值集中在某个比较窄的区域,则图像的对比度会显得比较小,不便于对图像的分析和处理. 图像的直方图均衡化可以实现将原图像的灰度值范围扩大,这样图像的对比度就得到了提高,从而方便对图像进行 ...
- JavaScript中函数四种调用模式
目录 JS中函数的四种调用模式 函数调用模式 方法调用模式 构造器调用模式 上下文调用模式 JS中函数的四种调用模式 在函数的调用模式中感觉最大的区别就是: this指向 函数调用模式 即通过函数名直 ...
- python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递
python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...
- seaborn使用displot函数实现多面板直方图(Multi-panel)可视化:使用set_title函数自定义设置多面板直方图标题(Multi-panel histograms’ title)
seaborn使用displot函数实现多面板直方图(Multi-panel)可视化:使用set_title函数自定义设置多面板直方图标题(Multi-panel histograms' title) ...
- seaborn使用axes_dict函数获取displot函数生成的图像所有标题信息、使用set_title函数自定义设置多面板直方图标题(Multi-panel histogram‘s title)
seaborn使用axes_dict函数获取displot函数生成的图像所有标题信息.使用set_title函数自定义设置多面板直方图标题(Multi-panel histogram's title) ...
- python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法
python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录
最新文章
- python修改ppt的字体和颜色_使用python-pptx包批量修改ppt格式的实现
- 2-2 Time类的定义_JAVA
- python函数调用时的实参和形参之间传递_python 函数(实参与形参、传递参数)...
- 做了一个画f(x,y)=0函数图像的算法,果断codeplex之
- HDU.1009 FatMouse' Trade
- facebook react.js
- linux普通用户id一般是,实际用户ID和有效用户ID (一) *****
- (转) 穿越NAT总结
- winform:關於画非客户区
- 企业级飞速低代码开发平台 | 产品介绍 | APass平台 | 全场景适用
- MFC TabCtrl 控件修改标签尺寸
- java上传文件怎么设置成777权限,777权限的改法是怎样的 将文件权限修改为777图文教程...
- getopt_long的使用
- 从20s优化到500ms,我用了这三招
- C++病毒-----------混乱鼠标
- Weakly Supervised Video Salient Object Detection
- open /data/prometheus: too many open files
- ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points
- PHP日历函数相关预定义常量
- AMOLED真的比LCD屏幕更伤眼吗