一种结合白平衡统计信息和曝光信息的软光敏算法专利学习(专利一)

本文主要是介绍一种结合白平衡统计信息和曝光信息的软光敏算法专利学习(专利一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景技术

        随着科技的发展,对视频监控设备提出了越来越高的要求。大部分视频监控设备

        都需要能够全天候的监控。ICR的中文名称为双滤光片切换器,是用于让滤光片白天切换到红外截止滤光片和晚上切换到全光谱滤光片的监控设备配件。白天的时候,人眼看不到红外光,但是摄像头的传感器能够感知到红外光,为了让图像的色彩更加符合人眼的感受,需要加一个红外截止滤光片滤除红外光。而夜晚的场景,由于光线不足,需要加灯光提高环境亮度。为了避免对环境造成灯光干扰,或者隐秘拍摄等原因,大部分是选择加一个红外灯,

        此时就需要用全透的白玻璃即全光谱滤光片,让摄像头的传感器能够感知到红外光。

        目前监控设备实现这种日夜模式的切换,主要有硬件和软件两种方案。

1、硬件方案

采用只能感知到可见光,不能感知到红外光的光敏电阻或者光感芯片,对环境的可见光进行感知。

此方案存在以下问题:

(a)成本高:需要针对光敏电阻或者光感芯片进行开模,还需要配套专门的电路,硬件成本高。光敏电阻的开口都需要有配套的设计,只对正前方的很小的角度光线比较敏感;

(b)识别不灵敏:由于现在的图像传感器感光性能越来越好,已经超出了光敏电阻或者光感芯片的感知范围,从而导致摄像头拍出来的图像效果还比较好的时候,光敏值已经为0了,无法继续进行日夜模式的判断;

(c)功耗高,需要有专门的电路设计,会影响到整机的功耗。

2、软件方案

(a)通过图像传感器的增益进行判断,容易出现反复切换的问题;

(b)通过图像亮度动态的确定阈值,如果近距离出现红外反射物,会导致环境亮度很高才会切回白天模式,不灵敏;

(c)通过整张画面的RGB比值来确定是否红外光占主导,对复杂环境的判断不准确,如局部出现比较亮的灯的时候容易误判。

        通过现有技术中的软件方式实现容易出现日夜模式来回切换问题的主要原因如下:

        在夜模式的情况下,图像传感器不仅仅能够感知到可见光,还可以感知到红外光。

        在图像亮度保持一定的情况下,图像传感器的增益越高,环境越暗。

        仅仅通过图像传感器的增益进行判断的时候,只能判断出图像传感器接受到的光线强度,并不能区分出到底是红外光太亮了还是可见光太亮了。当处于比较狭小的黑暗空间内,当设备在日模式时,没有红外灯,环境很黑,增益很高,高于日模式切换夜模式的阈值,会切换到夜模式。但当设备切换到夜模式后,开启红外灯,反射回来的红外灯亮度很高,图像传感器感知到的亮度很高,导致增益低于夜模式切换日模式的阈值,又会切到日模式,这样就会出现日夜模式反复切换的问题。

基本原理

        进入镜头成像的光包括可见光和红外光,其中,可见光为人眼所感知的部分,其波段通常在400nm-760nm左右,红外光的波长介于760-1000nm之间的电磁波。如下图所示,当光波波长在400nm-760nm区域时,即在可见光谱区域时,R、G、B三基色分量的光谱响应几乎无任何规律,当光波波长逐渐增大靠近760nm的时候,R、G、B三基色分量的光谱响应基本趋同,当光波波长在800nm-1000nm,也即红外光谱区域,R、G、B三基色分量的光谱响应几乎一致。

        基于此理论基础,通过获取黑白图像白平衡统计信息以及当前的亮度信息设置夜切白的阈值。即黑白图像计算白平衡统计信息计算红外光贡献率,当红外光贡献率小于预设红外光贡献率阈值时,再通过获取当前黑白画面曝光统计信息,基于曝光统计信息计算当前画面的照度,当画面照度大于预设值阈值时,将黑白夜市切换到才是模式。

        其基本流程图如下:

白切夜

夜切白

具体实现:

 其中所说的图3,即对应的上述sensor的QE曲线。

讨论:

       对于红外光贡献率计算公式,不同色温下可见光的G/R、G/B比值肯定不一样,而且不同色温下同画面同等亮度情况下,其曝光参数也会不一样。如果按照以上公式计算,那是否能通过一个公式计算各个色温下的红外光贡献量,是否在不同色温下都需要确定一个对应的红外光贡献率函数呢?

     此外,专利当中只要满足相应条件就切换到相应模式。没有考虑到环境突变或者特定场景下可能频繁切换的日夜模式的情况。为此,当满足切换条件的时候,应该连续检测N帧,如果N帧都满足相应条件,则进行相应的模式切换。

这篇关于一种结合白平衡统计信息和曝光信息的软光敏算法专利学习(专利一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/291162

相关文章

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1