直方图均衡化与规定化原理解释以及matlab实现

news/2024/6/16 22:34:25 标签: matlab, 机器学习, 开发语言

直方图均衡化(HE)

Histogram Equalization (HE)
设灰度水平在 r k , k ∈ [ 0 , L − 1 ] r_k,k\in[0,L-1] rk,k[0L1]
一幅图像 f f f 的非归一化直方图定义为
h ( r k ) = n k h(r_k)=n_k h(rk)=nk
在这里插入图片描述
s = T ( r ) s=T(r) s=T(r)为转换后的灰度,要求函数T满足:
(1)区间内单调递增
(2)有 0 ≤ T ( r ) ≤ L − 1 f o r 0 ≤ r ≤ L − 1 0\le T(r) \le L-1\quad for\quad 0\le r\le L-1 0T(r)L1for0rL1
HE的数学表达
i f s = T ( r ) = ( L − 1 ) ∫ 0 r p r ( w ) d w if\quad s=T(r)=(L-1)\int_{0}^{r}p_r(w)dw ifs=T(r)=(L1)0rpr(w)dw t h e n p s ( s ) = 1 L − 1 then\quad p_s(s)=\frac{1}{L-1} thenps(s)=L11
采用累积分布函数(CDF)作为HE变换函数
在这里插入图片描述
离散化表达形式:
s k = T ( r k ) = ( L − 1 ) ∑ j = 0 k p r ( r j ) = ( L − 1 ) ∑ j = 0 k n j n s_k=T(r_k)=(L-1)\sum\limits_{j=0}^{k}p_r(r_j)=(L-1)\sum\limits_{j=0}^{k}\frac{n_j}{n} sk=T(rk)=(L1)j=0kpr(rj)=(L1)j=0knnj

例子

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
均衡化前后直方图比较
在这里插入图片描述
小结:
(1)因为直方图是概率密度函数的近似,而且均衡化过程中不产生新的灰度级,所以直方图均衡化很少得到完全平坦的结果;
(2) 变换后灰度级减少,即出现灰度“简并”现象,造成一些灰度层次的损失。

matlab_25">matlab实现

matlab">H= imread('lena_gray.jpg');
%获取图片的尺寸 便于计算总像素数 即 m*n
[m,n]=size(H);
%生成一个一行 256 列的矩阵
p=zeros(1,256);
% 统计各灰度的像素个数
%find(H==i) 是在图像矩阵里面寻找灰度为 i 的点坐标
% 因为矩阵是从 1 开始的 所以为 p(i+1)
for i=0:255
	p(i+1)=length(find(H==i))/(m*n);
end
subplot(2,2,1);
imshow(H);
title('原图');
subplot(2,2,2);
% 显示原图的直方图
bar(0:255,p);
title('原图直方图');
% 利用循环 累加概率值
s=zeros(1,256);
for i=1:256
	for j=1:i
		s(i)=p(j)+s(i);
	end
end
%对 s 中的数先乘以 255,再取整
a=round(s*255);
b=H;
%更新原图像的灰度
for i=0:255
	b(find(H==i))=a(i+1);
end
subplot(2,2,3);
imshow(b)
title('均衡化后图像');
%统计更新后的概率
for i=0:255
	GPeq(i+1)=sum(p(find(a==i)));
end
subplot(2,2,4);
bar(0:255,GPeq); title('均衡化后的直方图');

在这里插入图片描述

直方图匹配(规定化)HS

Histogram specification (matching)
在这里插入图片描述
考察使输入图像的直方图均衡化的变换函数: T ( r ) : r → s T(r):r\rightarrow s T(r):rs
s = T ( r ) = ( L − 1 ) ∫ 0 r p r ( w ) d w s=T(r)=(L-1)\int_{0}^{r}p_r(w)dw s=T(r)=(L1)0rpr(w)dw
考察使输出图像的直方图均衡化的变换函数: G ( z ) : z → s G(z):z\rightarrow s G(z):zs
G ( z ) = ( L − 1 ) ∫ 0 z p z ( t ) d t = s G(z)=(L-1)\int_{0}^{z}p_z(t)dt=s G(z)=(L1)0zpz(t)dt=s
z = G − 1 ( s ) = G − 1 [ T ( r ) ] z=G^{-1}(s)=G^{-1}[T(r)] z=G1(s)=G1[T(r)]
离散形式:
s k = T ( r k ) = ( L − 1 ) ∑ j = 0 k p r ( r j ) s_k=T(r_k)=(L-1)\sum\limits_{j=0}^{k}p_r(r_j) sk=T(rk)=(L1)j=0kpr(rj)
z k = G − 1 ( s k ) = G − 1 ( T ( r k ) ) z_k=G^{-1}(s_k)=G^{-1}(T(r_k)) zk=G1(sk)=G1(T(rk))
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
##备注:直方图规定化的代码后面有空再补充


http://www.niftyadmin.cn/n/301309.html

相关文章

C++学习day--10 条件判断、分支

1、if语句 if 语句的三种形态 形态1&#xff1a;如果。。。那么。。。 #include <iostream> using namespace std; int main( void ) { int salary; cout << " 你月薪多少 ?" ; cin >> salary; if (salary < 20000) { cout <&…

微服务学习笔记--(Nacos)

Nacos注册中心 认识和安装NacosNacos快速入门Nacos服务分级存储模型Nacos环境隔离 Nacos-认识和安装Nacos Na一个组件阿里巴巴的产品&#xff0c;现在是SpringCloud中的一个组件。相比Eureka功能更加丰富&#xff0c;在国内受欢迎程度较高。 Windows安装 1.1.下载安装包 在…

【是C++,不是C艹】 引用的概念 | 引用的使用 | 引用与指针的区别

&#x1f49e;&#x1f49e;欢迎来到 Claffic 的博客&#x1f49e;&#x1f49e; &#x1f449; 专栏&#xff1a;《是C&#xff0c;不是C艹》&#x1f448; 前言&#xff1a; 前面带大家学习了函数重载等C基础&#xff0c;这期继续C基础的学习&#xff1a;引用。 注&#xff1…

如何用ChatGP协助你,从品牌角度对产品提出升级建议?

该场景对应的关键词库&#xff08;19个&#xff09;&#xff1a; 品牌洋葱图思维模型、产品信息、人群、品类、属性、体验、差异化特征、功效、品牌价值主张、目标用户、需求、痛点、爽点、消费者、外观、功能、结构、产品优化建议、产品开发可行性。 提问模板(3个&#xff09…

数据脱敏的几种方案

文章目录 什么是数据脱敏&#xff1f;数据脱敏在生活中的应用静态脱敏与动态脱敏数据脱敏的几种方案sql数据脱敏java代码实现脱敏mybatis-mate实现脱敏springCloud网关拦截响应体实现脱敏openGauss 动态数据脱敏解决方案 什么是数据脱敏&#xff1f; 数据脱敏也叫数据的去隐私…

4.共享模型之管程

4.共享模型之管程 4.1 共享带来的问题 Java的体现 import lombok.extern.slf4j.Slf4j;/*** author xc* date 2023/5/6 13:00*/ Slf4j public class Test14 {static int i 0;public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(()…

Oracle算周末

select rownum,nt_date,case when dd7 then 星期六 else 星期日 end holiddate from( select to_date(2021-01-01,yyyy-mm-dd)rownum nt_date,to_char(to_date(2021-01-01,yyyy-mm-dd)rownum,D) dd from dual connect by to_char(to_date(2021-01-01,yyyy-mm-dd)rownum,YYYY)20…

【深入浅出 Yarn 架构与实现】6-3 NodeManager 分布式缓存

不要跳过这部分知识&#xff0c;对了解 NodeManager 本地目录结构&#xff0c;和熟悉 Container 启动流程有帮助。 一、分布式缓存介绍 主要作用就是将用户应用程序执行时&#xff0c;所需的外部文件资源下载缓存到各个节点。 YARN 分布式缓存工作流程如下: 客户端将应用程序…