AE (4)_ 直方图调整的理论

#灵感# 在短暂的高通平台调试中,很看重直方图调整的理解。后来其它平台,不怎么调整这个了。但还是记录一下。 我个人还是倾向 招式简单,但应用到极致。

绝大部分内容来自:刘斯宁,Image Enhancement - CLAHE - 知乎 (zhihu.com)

穿插个人的部分理解。

目录

英文解释:

对比度:

简单---对比度拉伸:

升级---直方图均衡化 HE:

直方图均衡的局限:

改进---自适应直方图均衡化(AHE):

高通平台的直方图调整---好像不一样:

另个平台的直方图-----只是参与亮度计算:


英文解释:

A histogram is a type of graph that has wide applications in statistics. Histograms provide a visual interpretation of numerical data by indicating the number of data points that lie within a range of values. These ranges of values are called classes or bins. The frequency of the data that falls in each class is depicted by the use of a bar.

翻译过来就是,直方图是统计学中广泛使用的一类图表,它以可视化的形式呈现统计数据,能够显示数据点在给定的数值区间内的分布情况

以常用的8位精度图像为例,直方图的X轴为0~255,共256个桶,每个桶刚好覆盖1个像素值,直方图的Y轴表示每个桶盛纳了多少个像素。

对比度:

图像对比度指一幅图像中最亮的白和最暗的黑之间灰度反差的大小。差异越大代表对比越大,否则对比越小。一种常用的定量度量方法是Michelson对比度,定义为

当一幅图像最白和最黑像素灰度都是128时,图像对比度最低,C=0。

当一幅图像最白像素灰度=255,最黑像素灰度=0时,图像对比度最高,C=1.0。

当一幅图像最白像素灰度=140,最黑像素灰度=80时,图像对比度C=0.27。-----自己算个例子√

当一幅图像最白像素灰度=140,最黑像素灰度=60时,图像对比度C=0.4。

--------------------所以最白和最黑的差距越大时,图像对比度会越大。

图像的直方图集中在中间的几个桶,图像看起来灰蒙蒙的,英语中使用dull(阴沉的;低沉的;无光泽的;萧条的;隐约的;不鲜明的;隐隐约约的;不清晰的;令人生厌的;不明亮的) 描述这种效果。

相反,如果黑白像素的跨度较大,则图像富有通透感,英语中使用clarity(清楚;(画面、物质或声音的)清晰,清澈;)描述这种效果。

简单---对比度拉伸:

将一个灰蒙蒙的图像,拉伸直方图,使画面更通透。

基本思想是用一个下图所示分段线性函数(Piece-Wise Linear, PWL Function)对像素亮度进行映射。------------线性的、分段、3个函数

 

局限:对比度拉伸适合处理低动态(LDR)图像,这类图像的特点是直方图的跨度较小,存在向两极拉伸的空间。对于高动态(HDR)图像,直方图跨度已经很大,对比度拉伸没有操作的空间,

升级---直方图均衡化 HE:

均衡化被认为是提升图像对比度最为有效的方法,它的基本思想是用数学方法重新调整像素的亮度分布(和拉伸差不多),使调整后的直方图具有最大的动态范围,每个桶(bin/bucket)盛纳的像素数量几乎相等------这样就会使图像的灰度级增加,从而可达到图像对比度整体增强的效果。

直方图均衡的方法是dy=p(x)dx,意义是将源直方图dx宽度所盛纳的p(x)dx个像素映射到目标直方图的dy宽度中,映射前后像素数量不变,密度发生变化,分布更均匀。如下图所示。

右侧图的中部、亮部区域的像素分布更加均匀。

对直方图拉伸和均衡两种方法的效果做比较:

-----------------(此图直方图均衡后,好像效果也没那么好)

直方图均衡的局限:

当原图的直方图比较集中时,这意味着原图实际上只出现了少数几个颜色值,如果对原图进行拉伸操作,则这些颜色之间的距离就会变大,直方图上留下了更多空洞,这样,原本比较接近的颜色在拉伸后的图上会出现显著的差异,图像出现颜色分层现象(banding),或者叫分色现象。

------------右图出现很多异常颜色

对齐问题:

直方图均衡的一个重要特征是把原图中最亮的像素对齐到预设的最大值(比如8bit图是255)。当原图中颜色比较丰富时,这个操作一般问题不大。但是当原图中所有像素都是一个值(例如8,这对应一幅纯黑的图像,可能是拍摄于夜间),则均衡之后所有像素都被映射到255,图像变成了纯白的。于是,直方图均衡相当于无脑改变了原图的色调。----------比如下图的映射,改变了色调

另外还会产生噪声问题,如果一个区域的像素分布大体是均匀的,但是图像中带有一些噪声,则HE变换函数会把原图中很窄的x值分布映射到整个y值空间,这同时也就放大了原图中的噪声。

改进---自适应直方图均衡化(AHE):

将图像分成若干个区域(tile),比如8x8=64个tile,直方图均衡的基本单位不再是整个图像,而是对每个小区域做直方图均衡。AHE 更适合于用来改善图像的局部对比度,以及增强图像边缘信息,但是并没有解决直方图均衡会放大图像噪声的问题。

-------------每一小块图像统计一个各自专属的分布函数,这样有利于更好地处理图像数据的局部细节,但是由于图像被等分为几块分别处理,这会导致算法的时间复杂度提高不少,降低了图像处理效率。    并且还有另一个缺点,由于AHE算法是对每个像素块独立进行处理映射,也就是块与块之间并没有做一个过渡处理,这样会导致一个问题现象,那就是图像呈现出来的效果就像是被切割成了几个块。
 

限制对比度+自适应直方图均衡 CL AHE:

削峰填谷,把我们认为多余的概率平均分摊给其它像素,使亮度增益相对均匀地散布到所有像素上,而不是让某一个颜色突然地对齐到最大亮度。【分析那个黑图像被对齐到全白的例子。如果用CLAHE来处理这个黑图,我们可以拍脑袋规定直方图每个bin的频数不能超过总像素数的50%,超过的部分要被均摊到各个bin中。】

以下图为例,由于CLAHE 人为削减了最亮像素的频数(比如不超过10%),所以CLAHE图的亮区得到了抑制,而暗区的亮度得到了明显的提升。

----------------------------------------------无脑的HE均衡化。-------------分区均衡化 + 增益分布均匀。

 original histogram                                  HE histogram                                CLAHE histogram

高通平台的直方图调整---好像不一样:

按下述取target 的方案,高通的直方图调整是整体的亮度,不能兼顾:亮部压制+ 暗处提亮。

另个平台的直方图-----只是参与亮度计算:

将直方图划分区域,判断画面过曝情况,然后进行target 调整。也无法做到亮处+暗处的调整。

通过high level 计算出高亮的highCut, highCut越大则表示过曝区越多,则降低曝光,

直到把highCut收敛到highCutTarget结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/596008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis源码基本原理--XML版

文章目录 mybatis是什么架构设计首先建立起Mapper的代理工程和代理映射器的注册和使用XML文件解析数据源解析、创建和使用SQL执行器(Executor)的定义与实现SQL解析参数处理器:策略模式实现封装处理结果注解 mybatis 是什么 MyBatis 是一款优…

SecOC中新鲜度值和MAC都按照完整的值来生成,但是在发送和认证的时候只会截取一部分。这边截取的部分一般取多长?由什么参数设定?

新鲜度值(Freshness Value, FV)和消息验证码(Message Authentication Code, MAC)是SecOC协议中用于保证数据的真实性和新鲜度的重要信息。它们的长度取决于不同的因素,如加密算法、安全级别、通信带宽等。 一般来说,FV和MAC的长度越长,安全性越高,但也会占用更多的通信…

IDEA 每次新建工程都要重新配置 Maven的解决方案

文章目录 IDEA 每次新建工程都要重新配置 Maven 解决方案一、选择 File -> New Projects Setup -> Settingsfor New Projects…二、选择 Build,Execution,Deployment -> Build Tools -> Maven IDEA 每次新建工程都要重新配置 Maven 解决方案 DEA 每次新建工程都要…

用大模型读取你的想法,并转化成文本!恐怖的DeWave模型

悉尼科技大学的科研人员,通过大语言模型、EEG(大脑活动检测工具)、脑机接口等技术,开发了一个可自动读取人类想法,并转化成文本的AI大模型——DeWave。 DeWave的使用方法非常简单,用户只需要戴上EEG&#…

vivo 互联网技术 2023 年度盘点

在龙年到来之际,vivo互联网技术2023年货如约而至,让我们一起盘点下vivo互联网技术在过去一年的成长与收获吧。 01 年度技术文章 2023年,vivo 互联网技术公众号共推送技术干货文章 70,我们根据文章阅读量等指标,精选出…

[书生·浦语大模型实战营]——书生·浦语大模型全链路开源体系

大模型成为发展通用人工智能的重要途径 书生浦语大模型开源历程 书生浦语模型性能 从模型到应用 应用例子:智能客服/个人助手/行业应用 实现流程: 开源开放体系: 1.数据——书生万卷 价值观对齐这个挺有意思嗷! 2.预训练工具…

docker容器添加新的端口映射

通常在运行容器时,我们都会通过参数 -p来指定宿主机和容器端口的映射,例如 docker run -it -d --restart always --name [指定容器名] -p 8899:8080 [指定镜像名]上述命令将容器内的8080端口映射到宿主机的8899端口。 参数说明 -d 表示后台运行容器 -t…

【51单片机系列】LCD1602液晶模块

本文是关于液晶显示屏的相关介绍。相对于静态数码管、动态数码管、LED点阵等,LCD1602液晶显示器能够显示更多的字符数字信息,并且也是常用的一种显示装置。 文章目录 一、LCD1602介绍1.1、LCD1602简介1.2、LCD1602常用指令1.3、LCD1602使用 二、LCD1602使…

openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作

文章目录 openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作174.1 事务隔离说明174.2 写入和读写操作174.3 并发写入事务的潜在死锁情况 openGauss学习笔记-174 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作 174.1 事务隔离说…

Parallels虚拟机启动后,Mac主机无法上网怎么办

文章目录 1.问题2.解决: 1.问题 部分用户在运行Parallels Desktop的Windows 11打开后,Windows上网没有问题 ,但是Mac主机不能访问带域名的网站,而访问带ip的网站没问题,退出parallels虚拟机以后,mac网络恢…

docker 部署来自Hugging Face下机器翻译模型

机器翻译模型(Hugging Face官网) 模型翻译api服务代码 # 离线翻译服务代码 # -*-coding:utf-8-*-import os import json import logging from logging.handlers import RotatingFileHandler from datetime import datetime from flask import Flask, request,jsonify from geve…

HarmoryOS Ability页面的生命周期

接入穿山甲SDK app示例: android 数独小游戏 经典数独休闲益智 广告接入示例: Android 个人开发者如何接入广告SDK,实现app流量变现 Ability页面的生命周期 学习前端,第一步最重要的是要理解,页面启动和不同场景下的生命周期的…

内联函数的作用

目的 主要为了提升程序运行速度。 分析 当程序调用一个函数时,程序暂停执行当前指令,跳到函数体处执行,在函数执行完后,返回原来的位置继续执行。如果该函数为内联函数,则不需跳,是因为该内联函数直接插…

基于TIC6000的DSP教学实验箱操作教程:5-18 RGB24图像灰度转换(LCD显示)

一、实验目的 学习RGB24图像灰度转换的原理,掌握图像的读取方法,并实现在LCD上显示灰度转换前后的图像。 二、实验原理 RGB24图像灰度转换 RGB颜色空间作为一种常用的彩色图像表示模型,分别用红(R)、绿&#xff08…

《代码整洁之道之程序员的职业素养》-专业主义

专业主义有很深的含义,它不但象征着荣誉和骄傲,而且明确意味着责任和义务担当责任,“为了按时交付软件,没测例行程序,测试例行程序需要几个小时,当时必须交付软件,因为故障修复部分都不涉及例行…

文件摆渡系统如何实现网络隔离后的数据交换、业务流转?

近年来全球网络安全威胁态势的加速严峻,使得企业对于网络安全有了前所未有的关注高度。即便没有行业性的强制要求,但在严峻的安全态势之下,企业的网络安全体系建设正从“以合规为导向”转变到“以风险为导向”,从原来的“保护安全…

鸿蒙系列--动态共享包的依赖与使用

一、前言 HarmonyOS的共享包相当于Android的Library,在HarmonyOS中,给开发者提供了两种共享包,HAR(Harmony Archive)静态共享包,和HSP(Harmony Shared Package)动态共享包 区别&…

Python从入门到网络爬虫(函数详解)

前言 函数是变成语言中最常见的语法,函数的本质就是功能的封装。使用函数可以大大提高编程效率与程序的可读性。函数是能够实现特定功能的计算机代码而已,他是一种特定的代码组结构。 函数的作用 1.提升代码的重复利用率,避免重复开发相同代…

js——json对象相互转化——js基础积累

js——json对象相互转化——js基础积累 需求场景解决步骤1:定义一个变量接收此字段,方便处理解决步骤2: { 外面的双引号要去掉解决步骤3:使用正则去除参数中的\\解决步骤4:如果此参数必须以{开头,以}结尾解…