首页 > 编程语言 >ISP算法简述-BLC

ISP算法简述-BLC

时间:2023-11-26 22:57:16浏览次数:41  
标签:矫正 ISP OB 电平 像素 简述 offset sensor BLC

Black Level Calibration, 黑电平矫正

现象

1)在纯黑条件下拍张图,你会发现像素值不为0

2)或者你发现图像整体偏色

这些问题可能是黑电平导致的。

原因

存在黑电平的原因有2个:

1)sensor的电路本身存在暗电流。暗电流主要产生在光电信号转换过程中,光电二极管受温度,电压稳定性等因素的干扰,导致全黑状态下输出电平不一定稳定为0。
2)A/D转换器的精度无法将电压值很小的一部分转换出来,这会导致暗部细节丢失。因此人为的给模拟信号加一个固定的offset,使整体信号放大,有效的保留了暗部细节。当然这也会导致亮部溢出,损失亮部细节。而人眼特性是对暗部细节更加敏感,因此优先保证暗部细节。

BLC就是为了去除上述的暗电流和offset,一般放在ISP的前端。

BLC若处理的不好,会导致图像偏色,因为黑电平影响了RGB之间正常的比例关系:

扣少了会导致图像偏紫,对比度降低
扣多了会导致图像偏率,动态范围降低

image

算法

矫正分为2部分:

1)sensor端的矫正:一般采用OB区矫正法
2)isp端矫正:由于sensor端已完成了最复杂的矫正,这部分处理比较简单。

OB区矫正

关于 OB区的概念与矫正办法,可参考这位大佬的文章:ISP-OB - 知乎 (zhihu.com)

另外,在sensor手册上也是可以看到其具体的矫正算法的,以某sensor为例:

1)先按行读取OB区的值,计算得行均值(各颜色通道独立)
2)行均值经scaled,offset(即y=scaled*x+offset)后,再加权平均得到correction_value

【注】:scaled和offset具体值取决于工作温度。且应该是越靠近active区,权重越高。

3)像素实际值 = 像素readout值 - correction_value
4)上面步骤得到的像素值可能是负数,为保留这些值,我们会添加pedestal值(各通道独立),而不是直接clip为0

综上,像素输出值 = 像素实际值 + pedestal = 像素readout值 - correction_value + pedestal

注:OB区与active区的黑电平毕竟是有差异的,所以这种办法并不能完美矫正。

ISP端

由于OB区已经进行了虽不完美但也不错的处理,isp这边的操作就比较简单了,分通道减去pedestal即可(也可称为offset).

【注】:也有利用标定法来进行处理的,即在不同的Again,Dgain,温度,曝光下拍摄黑帧,以mesh表的形式进行黑电平计算,存储,矫正。这种矫正办法更准确,但考虑的因素越多,模块复杂度也呈指数上升。

转自:https://zhuanlan.zhihu.com/p/505024642

标签:矫正,ISP,OB,电平,像素,简述,offset,sensor,BLC
From: https://www.cnblogs.com/chuqianyu/p/17858137.html

相关文章

  • 若依集成mybatisplus实现mybatis增强
    ......
  • CodeWhisperer 体验总结
    CodeWhisperer体验总结|CodeWhisperer是一款亚马逊新推出的通用代码生成器可以实时进行代码数据的提供还可以定义安全问题CodeWhisperer对个人用户是免费使用企业用户需要订阅使用亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、......
  • 埃森哲使用 Amazon CodeWhisperer 助力开发人员提高工作效率
    AmazonCodeWhisperer是一款AI编程助手,可根据开发人员使用自然语言编写的注释和IDE(集成开发环境)中的代码生成建议,帮助开发人员提高工作效率。借助CodeWhisperer,开发人员无需在IDE与文档或开发者论坛之间切换,加快编码过程。通过CodeWhisperer的实时代码建议,开发人员可以在......
  • 1.MyBatisPlus代码生成器使用
    在项目开发中,快速生成entity、mapper、service、controller包中的简单接口和类能够加速我们开发的速度时间。为此,我们可以使用MyBatis-Plus的代码生成器快速生成前面几个包的接口和代码。快速生成代码的流程依次是:引入依赖、配置文件、编写生成类并启动。1.引入依赖 为......
  • MyBatisPlus 注解方式实现多表关联查询
    Mapper写法:@Select("SELECT*FROMtableAaLEFTJOINtableBbona.key=b.key${ew.customSqlSegment}")Listmethod1(@Param(Constants.WRAPPER)QueryWrapperwrapper);IPagemethod2(Page<>page,@Param(Constants.WRAPPER)QueryWrapperwrapper......
  • mybatisplus实现一次多表联查+分页查询
    以书籍整理为例,书籍是一个单独的表,书籍类别是另一个表,通过书籍通过类别的ID可以查询到书籍类别的具体名称,下面分享一下代码://mapperIPage<BookInfo>selectBookPage(IPage<BookInfo>page,@Param(Constants.WRAPPER)QueryWrapper<BookInfo>wrapper); //servicepublic......
  • CodeWhisperer 一款好玩的 AI 插件
    忙里抽闲,今天试了试CodeWhisperer这款插件,我是在IDEA中做的测试,下面是我的一些使用感想: 安装CodeWhisperer插件:在IntelliJIDEA中,可以通过插件管理器安装CodeWhisperer插件,然后在项目中右键单击Java文件,选择CodeWhisperer菜单,打开CodeWhisperer窗口。编写测......
  • 简述DHCP的作用及原理
    DHCP:简单来说就是动态分配IPDHCP(动态主机配置协议)是一种网络协议,它用于自动分配IP地址和其他网络配置给计算机。DHCP的工作原理如下:1.发现(Discover)阶段:当计算机连接到网络时,它会广播一个DHCP发现消息,寻找可用的DHCP服务器。2.提供(Offer)阶段:DHCP服务器接收到发现消息后,会向计算......
  • ISP--Black Level Correction(黑电平矫正)
    图像的每一个像素点都是由一个光电二极管控制的,由二极管将电信号,转换为数字信号。那么,我们知道了,图像的像素值是与电信号强度相关的。但是,我们得知道,每一个光电二极管要想工作,都得有一定的电压。这就是的,即使在外部没有光线照射的时候,Sensor也会有一定的电压。那这不就会在成像......
  • CodeWhisperer--手把手教你使用一个十分强大的工具
    AmazonCodeWhisperer是一款能够帮助我们智能生成代码的工具。经过数十亿行代码的训练,可以根据提示和现有代码实时生成从片段到完整功能的代码建议。类似Cursor和GithubCopilot编码工具。目前,CodeWhisperer兼容Python、Java和JavaScript,支持各种IDE,包括JetBrains、Vis......