直方图均衡化与直方图规定化的MATLAB实现
@
1.直方图均衡化
对图像进行非线性拉伸,重新分配图像像元值,使一定灰度范围内像元值的数量大致相等就是直方图的均衡化。原来直方图中间的峰顶部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较平的分段直方图:如果输出数据分段值较小,会产生粗略的分类的视觉效果。
在MATLAB中,histeq函数用于直方图的均衡化。
实现代码如下
clear
close all
clc
I=imread('peppers.png');
subplot(221)
I=rgb2gray(I);
imshow(I)
title('原始图像')
subplot(222)
imhist(I)
title('原始图像直方图')
I1=histeq(I);
subplot(223)
imshow(I1)
title('图像均衡化')
subplot(224)
imhist(I)
title('直方图均衡化')
从MATLAB2007a开始,提供了一个新的函数adapthisteq,该函数限定对比度适应性直方图均衡化,它先对图像的局部块进行直方图均衡化,然后利用双线性插值方法把各个小块拼接起来,以消除局部造成的边界。代码如下:
clear
close all
clc
A=imread('cell.tif');
subplot(131)
imshow(A)
title('原始图像')
B=histeq(A);
subplot(132)
imshow(B)
title('histeq函数作用效果')
C=adapthisteq(A);
subplot(133)
imshow(C);
title('adapthisteq函数作用效果');
2.直方图规定化
所谓直方图规定化,就是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。所以直方图修正的关键就是灰度映像函数。直方图规定化是用于产生处理后有特殊直方图图像的方法。令Pr(V)和Pz(Z)分别为原始图像和期望图像的灰度概率密度函数。对原始图像和期望图像均做直方图均衡化处理,应有
由于都是作直方图均衡化处理,所以处理后的原图像的灰度概率密度函数Ps(S)及理想图像的灰度概率密度函数Pv(V)是相等的。因此,可以用变换后的原始图像灰度级S代替上式中的V,即
利用此式可以从原始图像得到希望的图像灰度级。对离散图像有
综上所述,数字图像的直方图规定化算法如下:
(1)将图像进行直方图均衡化处理,求出原图像中每一个灰度级ri所对应的变换函数Si;
(2)对给定直方图做类似计算,得到理想图像中每一个灰度级Zi所对应的函数Vi;
(3)找出Vi≈Si的点对,并映射到Zi;
(4)求出Pi(Zi);
代码如下:
clear
close all
clc
I=imread('tire.tif');
subplot(221)
imshow(I);
title('原始图像')
hgram=50:2:250;%规定化函数
J=histeq(I,hgram);
subplot(222)
imshow(J)
title('图像规定化')
subplot(223)
imhist(I,64)
title('原始图像直方图')
subplot(224)
imhist(J,64)
title('规定化后直方图')
直方图均衡化与直方图规定化的MATLAB实现的更多相关文章
- 【OpenCV】图像增强---灰度变换、直方图均衡化
图像增强的目的:改善图像的视觉效果或使图像更适合于人或机器的分析处理.通过图像增强,可以减少图像噪声,提高目标与背景的对比度,也可以增强或抑制图像中的某些细节. ------------------ ...
- 图像处理之直方图均衡化及C源码实现
1 直方图均衡化(Histogram Equalization)简介 图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法.直方图拉伸和直方图均衡化是两种最常见的间接 ...
- 直方图均衡化的 C++ 实现(基于 openCV)
这是数字图像处理课的大作业,完成于 2013/06/17,需要调用 openCV 库,完整源码和报告如下: #include <cv.h> #include <highgui.h&g ...
- opencv图像直方图均衡化及其原理
直方图均衡化是什么有什么用 先说什么是直方图均衡化,通俗的说,以灰度图为例,原图的某一个像素为x,经过某个函数变为y.形成新的图.新的图的灰度值的分布是均匀的,这个过程就叫直方图均衡化. 图像直方图均 ...
- opencv::直方图均衡化
直方图均衡化 图像直方图: 是指对整个图像像在灰度范围内的像素值是指对整个图像像在灰度范围内的像素值(~)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图. 直方图反映了图像灰度的分布情况. ...
- c#数字图像处理(六)直方图均衡化
直方图均衡化又称直方图修平,是一种很重要的非线性点运算.使用该方法可以加强图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候.通过这种方法,亮度可以更好的在直方图上分布. 直方图均衡化的基 ...
- 实现直方图均衡化(java+opencv)
什么是直方图均衡化? 直方图均衡化是一种简单有效的图像增强技术,通过改变图像的直方图来改变图像中各像素的灰度,主要用于增强动态范围偏小的图像的对比度.原始图像由于其灰度分布可能集中在较窄的区间,造成图 ...
- 直方图均衡化与Matlab代码实现
昨天说了,今天要好好的来解释说明一下直方图均衡化.并且通过不调用histeq函数来实现直方图的均衡化. 一.直方图均衡化概述 直方图均衡化(Histogram Equalization) 又称直方图平 ...
- matlab 直方图均衡化
原理: 直方图均衡化首先是一种灰度级变换的方法: 原来的灰度范围[r0,rk]变换到[s0,sk]变换函数为:s=T(r); 为便于实现,可以用查找表(look-up table)的方式存储,即:原始 ...
随机推荐
- 对List<Map>里的map的某个属性重复的值进行处理的方法
package test; import java.util.*;import java.util.stream.Collectors; public class Test5 { public sta ...
- hive优化实战
2019年1月8日,付哥给了我一份公司以前的一份SQL优化方案文档.十分感谢.记录了许多在公司以前优化的案例. -------------------------------------------- ...
- c++ 用eclipse建立一个类,并实例化并运行
新建项目 file->new->c/c++ project 项目结构 cpc.cpp //================================================= ...
- redis序列化和反序列化
RedisTemplate中需要声明4种serializer,默认为“JdkSerializationRedisSerializer”: 1) keySerializer :对于普通K-V操作时,ke ...
- react须知
1. JSX是什么? 1)JSX是一种facebook发明的语法.就是将HTML和JS 可以同时书写.其实是一种js的语法糖. 但是浏览器不能识别,需要通过babel-loader来转译. @babe ...
- [Luogu] 树
https://www.luogu.org/problemnew/show/P4092 树剖 + 线段树区间修改,单点查询 #include <bits/stdc++.h> using n ...
- tensorboard 远程服务器本地浏览器无法显示
在用xshell等ssh工具远程连接服务器时,我们常常在服务器上运行tensorflow代码,而且模型tf.summary保存文件在服务器上,这是直接采用tensorboard会有一些小问题.直接用t ...
- Django-自定义web框架
自定义web框架 1.准备登录的html <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- mysql的count和sum使用条件表达式
count函数条件不为null的时候显示结果.即使为false也也会显示结果. 可以是使用if条件或者case when语句.如果条件不为null即需要的结果. 使用count()函数实现条件统计的基 ...
- requests_html使用asyncio
import asyncio import functools from concurrent.futures.thread import ThreadPoolExecutor from reques ...