当前位置: 首页 > article >正文

Camera ISP 之 镜头阴影矫正(lens_shading_correction)

1、Lens ShadingLens Shading指画面四角由于入射光线不足形成暗角同时由于不同频率的光折射率不同导致Color Shading因此需要进行镜头阴影矫正Lens Shading Correction) 。 Lens shading分为两种 luma shading和color shadingISP中该模块一般在OB和DPC的后面。luma shading由于凸透镜中心的聚光能力远大于其边缘从而导致Sensor中心的光线强度大于四周从而造成中心亮四周暗的现象。color shading由于入射光中不同波长的光折射率不同导致入射光中不同波长的光落在感光器件的不同位置上造成图像的色彩不均匀。Color Shading一般与镜头和sensor的CRA不匹配有关。Lens Shading校正前后示意图在实际使用中校正后边角Noise略大需要在边角亮度和Noise之间取一个平衡。在低光照条件下通常会让四周的亮度达到中心亮度的70%90%就可以了。环境色温的差异也会导致计算出LSC gain curve有所差异在调校IQ的过程中会计算多种色温的LSC gain curve然后在实际使用过程中动态的调整curve形状。2、矫正方法Shading的矫正方法目前主流有两种一种是同心圆法一种是网格法。同心圆法的流程为a、找到RGB三通道的圆心一般选择为同一个点b、以同心圆的形状将画面的中心和画面的边缘的三通道乘以不同的增益具体如下图所示一般来说考虑shading渐变的曲率从中心到边缘逐渐增大所以等增益曲线中心稀疏边缘密集。一般来说lens shading的增益最好不要超过2倍因为会引入噪声。下图为mesh shading的矫正方法同一个方格中的增益一致mesh的分布也是中心稀疏四角密集。同心圆矫正方法的优点是计算量小缺点是镜头若装配时稍有不对称则矫正失败网格矫正方法的优点是能够应对各种shanding情况缺点是运算量大。3、Python简易实现def distance_euclid(point1, point2): return math.sqrt((point1[0] - point2[0])**2 (point1[1]-point2[1])**2) def approximate_mathematical_compensation(self, params, clip_min0, clip_max65535): # parms: # parameters of a parabolic model y a*(x-b)^2 c # For example, params [0.01759, -28.37, -13.36] # Note: approximate_mathematical_compensation require less memory print(----------------------------------------------------) print(Running lens shading correction with approximate mathematical compensation...) width, height utility.helpers(self.data).get_width_height() center_pixel_pos [height/2, width/2] max_distance utility.distance_euclid(center_pixel_pos, [height, width]) # allocate memory for output temp np.empty((height, width), dtypenp.float32) for i in range(0, height): for j in range(0, width): distance utility.distance_euclid(center_pixel_pos, [i, j]) / max_distance # parabolic model gain params[0] * (distance - params[1])**2 params[2] temp[i, j] self.data[i, j] * gain temp np.clip(temp, clip_min, clip_max) return temp核心原理1、计算像素到中心的距离center_pixel_pos [height/2, width/2] # 图像中心点 max_distance distance to corner # 最远距离对角线的一半 # 对每个像素 distance 像素到中心的距离 / max_distance # 归一化距离 0-12、增益模型gain a * (distance - b)² c# 不同参数的效果 距离(distance) → 增益(gain) 中心(0) : a*(0-b)² c 中间(0.5) : a*(0.5-b)² c 角落(1) : a*(1-b)² c # 理想情况中心增益小边缘增益大 中心增益 1.0 边缘增益 2.0 # 角落需要更多补偿假设一个100x100的图像以下面参数为例# 模型: y a*(x-b)^2 c # 例如: params [0.01759, -28.37, -13.36] # 其中: params[0] 0.01759 # a: 抛物线的开口大小和方向 params[1] -28.37 # b: 顶点的水平偏移 params[2] -13.36 # c: 顶点的垂直偏移基准增益center [50, 50] max_dist 70.7 (对角线距离) # 计算几个点的增益 中心像素 (50,50): - distance 0/70.7 0 - gain 0.01759×(0 28.37)² - 13.36 0.01759 × 804.8569 - 13.36 0.79743287 角落像素 (100,100): - distance 70.7/70.7 1 - gain 0.01759×(128.37)² - 13.36 0.01759 × 862.5969 - 13.36 1.81307947效果展示beforeafterrefhttps://www.cnblogs.com/wnwin/p/11805901.htmlhttps://blog.csdn.net/yxyx13120297/article/details/85206426https://zhuanlan.zhihu.com/p/40572917

相关文章:

Camera ISP 之 镜头阴影矫正(lens_shading_correction)

1、Lens Shading Lens Shading指画面四角由于入射光线不足形成暗角,同时由于不同频率的光折射率不同,导致Color Shading,因此需要进行镜头阴影矫正(Lens Shading Correction) 。 Lens shading分为两种 luma shading和color shadi…...

一区级光伏功率预测创新模型!CEEMDAN-KPCA-PINN多变量时序预测!完全自适应噪声集合经验模态分解+核主成份降维+物理信息神经网络

SCI配图创新模型!完全自适应噪声集合经验模态分解核主成份降维物理信息神经网络!CEEMDAN-KPCA-PINN多变量时序光伏功率预测,MATLAB代码。以下是对代码的全面分析: 一、主要功能 该代码用于光伏功率时间序列预测,结合了…...

在 CentOS Stream 9 上部署 OpenClaw(小龙虾)

在 CentOS Stream 9 上部署 OpenClaw(小龙虾) 注意:本人使用的普通用户安装 环境准备 # 1. 更新系统 sudo dnf update -y# 2. 安装基础工具 sudo dnf install -y gcc-c make cmake git curl wget vim执行官方安装脚本 脚本会自动安装 Node.js…...

C# 语言测验

C# 语言测验 引言 C#(读作“C sharp”)是一种由微软开发的高级编程语言,它旨在提供跨平台的开发能力,并广泛应用于桌面应用、移动应用、Web应用以及云服务等领域。为了帮助读者更好地理解和掌握C#语言,本文将提供一份全面的C#语言测验,旨在检验读者对C#基础知识的掌握程…...

迅雷怎么加快下载速度_现在迅雷下载怎么这么慢

迅雷限速怎么破解这个很简单,这个方法我还是在我朋友那里找到的。下载速度也是非常可以的。我让大家看一下。点我打开方法 这个就是我测试的速度。速度基本能跑到10M左右。宽带问题。下面开始今天的教学环节 打开上面图片中的地址,你会看到一个获取文件列…...

前端面试基础知识整理【Day-11】

前言 前端面试基础知识整理【Day-1】-CSDN博客 前端面试基础知识整理【Day-2】-CSDN博客 前端面试基础知识整理【Day-3】-CSDN博客 前端面试基础知识整理【Day-4】-CSDN博客 前端面试基础知识整理【Day-5】-CSDN博客 前端面试基础知识整理【Day-6】-CSDN博客 前端面试基…...

前端实现网页转PDF矢量文件,高清还原网页内容

前端:Vue3 后端:Node.js Express 接口 核心 PDF 引擎:Puppeteer(谷歌 Chrome 官方无头浏览器) 中文 100% 不乱码 图片 100% 显示 样式 1:1 还原 A4 自动分页,完美排版 文字可选中,矢量高清 ✅ …...

网络安全的进一步学习

了解基础网安知识分析第三方应用,进一步了解向日葵低版本被利用的条件,和木马能隐藏的原因(通过计划任务定时运行实现持久化的运行)和发现异常登录的记录并进行排查。...

JavaScript性能优化实战烈嘿

JavaScript性能优化实战技术文章大纲 性能优化的核心原则 减少代码执行时间 降低内存占用 优化网络请求 提升用户体验 代码层面的优化 避免全局变量污染,使用模块化或闭包 减少DOM操作,批量更新或使用文档片段 使用事件委托减少事件监听器数量 优化循环结…...

木马的排除与防护

作为学习者,我仅将所学知识进行系统梳理和总结。如有任何疏漏或错误,敬请指正进程、服务、启动项、计划任务的定义进程:操作系统中程序的一次执行实例,是资源分配和调度的基本单位。 服务:在后台运行的程序&#xff0c…...

我用 OpenClaw 7 天,砍掉了 80% 的重复沟通

我用 OpenClaw 7 天,砍掉了 80% 的重复沟通 很多人第一次接触 AI 助手,期待的是“无所不能”。 但真正把 AI 用起来之后,你会发现,最先产生价值的不是那些酷炫能力,而是那些你早就烦透了、却每天都还得做的重复工作。 …...

IDEA各版本支持的Java 版本和功能

https://www.jetbrains.com.cn/help/idea/supported-java-versions.html...

2.【.NET10 实战--孢子记账--产品智能化】--升级前的准备工作:项目依赖梳理与升级计划制定

我们在日常产品维护时,往往会遇到底层基础框架需要升级的情况,尤其是当底层框架升级到一个新的大版本时,可能会带来一些不兼容的变更,这时候我们就需要做好充分的准备工作,以确保升级过程顺利进行。从本文开始&#xf…...

064远程教育网站系统-springboot+vue

文末领取项目源码springbootvue 1.登录2.注册3.首页请文末卡片dd我获取源码...

Android 多进程开发 - FileDescriptor、Uri、AIDL 接口定义不能抛出异常

FileDescriptor 1、AIDL IMyAidlInterface.aidl,这里是位于 src/main/java/com/my/common 包下 package com.my.common;import android.os.ParcelFileDescriptor;interface IMyAidlInterface {ParcelFileDescriptor getFileDescriptor();void setFileDescriptor(in …...

KMP算法详解 [c++]

目录 前言 朴素的模式匹配算法 KMP模式匹配算法 KMP模式匹配算法的原理 next数组值的推导 KMP模式匹配算法的实现 KMP模式匹配算法的改进 nextval的推导 优化后的KMP模式匹配算法代码 零、前言 每年新闻周刊都会发布年度十大热词,这其实查询某个字符串在其…...

AD7685的SPI接口调试过程(附完整代码)

该系列的ADC主要差别是在转换速率上,AD7685的最大转换速率是250kSPS。我们主要是看芯片SPI接口和主机的通信:单个ADC和兼容SPI接口的主机通信时,一般会用三线且无繁忙指示模式,该模式的时序图如下所示:主要注意以下几点…...

L298N 直流电机驱动模块与 Arduino 的接口

虽然您最终需要学习控制直流电机才能构建自己的机器人,但您可能需要一些更容易上手的东西 - 这就是 L298N 电机驱动器的用武之地。它可以控制速度和旋转两个直流电机的方向。此外,它还可以 控制直流电机 只有能够控制直流电机的速度和旋转方向,我们才能完全控制它。通过结…...

【LLM infra】Megatron-LM | deepspeed | 量化/推理框架

note LLM推理过程: prefill:每层都得到历史token的kv cache,最后一个位置输出 logits;decode:对刚才新生成的token,计算它的Q/K/V,用它的 Q 去 attend 历史所有 K/V cache,输出下一…...

mimic数据库提取小问题解决

sql学艺不精,所以基本上自己开发一套“专属sql”后后面都是套用。首先是拼接问题,正常提取出目标人群后,需要不断拼接demo,treat,lab等数据,像demo,treat这些可能还好,但lab这些短时…...

推荐:Jib — 容器化你的Java应用的新选择!

推荐:Jib — 容器化你的Java应用的新选择! 【免费下载链接】jib GoogleContainerTools/jib: 是一个基于 Java 的 Docker 镜像构建工具,支持多种容器镜像构建选项和插件。该项目提供了一个简单易用的 Docker 镜像构建工具,可以方便…...

好用的软件、网站、插件记录

好的科研工具能够帮助我们事半功倍,华而不实的工具浪费我们的时间。在此记录一下,一些好用且目前我长期在使用的工具。 目的:希望帮助刚入门的同学快速上手,节省找工具的时间,将更多的时间投入自己的科研任务。 好用的…...

【亲测免费】 探索知识图谱的力量: rahulnyk/knowledge_graph 项目详解

探索知识图谱的力量: rahulnyk/knowledge_graph 项目详解 【免费下载链接】knowledge_graph Convert any text to a graph of knowledge. This can be used for Graph Augmented Generation or Knowledge Graph based QnA 项目地址: https://gitcode.com/gh_mirro…...

贡献者必读:如何参与SIMP开源项目并提交高质量代码

贡献者必读:如何参与SIMP开源项目并提交高质量代码 【免费下载链接】SIMP A system automation and configuration management stack targeted toward operational flexibility and policy compliance. 项目地址: https://gitcode.com/gh_mirrors/si/SIMP SI…...

【数字信号调制】基于8相移键控8-PSK调制数字通信系统(含模拟噪声信道上的信号传输,包括调制、噪声添加、解调以及符号和比特错误率的性能评估)附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…...

【状态估计】基于卡尔曼滤波器实现月球陨石坑导航附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…...

【雷达干扰】基于CFastICA交叉极化干扰对消-独立成分分析附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…...

Windows 10 RS2及以上系统中使用TDL的注意事项:IRQL级别变化与驱动开发调整

Windows 10 RS2及以上系统中使用TDL的注意事项:IRQL级别变化与驱动开发调整 【免费下载链接】TDL Driver loader for bypassing Windows x64 Driver Signature Enforcement 项目地址: https://gitcode.com/gh_mirrors/tdl1/TDL TDL(Turla Driver …...

TDL驱动开发实战:如何编写适用于Turla Driver Loader的“无驱动”内核模块

TDL驱动开发实战:如何编写适用于Turla Driver Loader的“无驱动”内核模块 【免费下载链接】TDL Driver loader for bypassing Windows x64 Driver Signature Enforcement 项目地址: https://gitcode.com/gh_mirrors/tdl1/TDL TDL(Turla Driver L…...

光纤熔接实验教程

一、实验目的掌握光纤熔接的基本原理和操作步骤。学习使用光纤熔接机进行光纤的精确对接。了解光纤熔接的质量评估方法。二、实验设备与工具光纤熔接机:用于光纤的精确对准和熔接。光纤切割刀:用于切割光纤端面,确保端面平整。光纤剥线钳&…...