关于坏点问题的调试总结

news2024/11/26 13:39:27

1、问题背景:

前段时间调试一个项目,有发现在低照度场景下图上有很多明显的白点,如下图所示。以以往的调试经验来看这就是坏点,可以通过 ISP 中去坏点模块去将其抹掉,但这么多的明显坏点,通过去坏点模块去处理的话,肯定会损失一定的清晰度,后面试了也确实是这样。所以我们可以再确认下 sensor 端是否有去坏点的功能,以及要确认下这么多坏点是否符合 sensor 对坏点的管控标准。

2、问题分析

a. 关于坏点问题的排查方法

坏点肯定是 sensor 的问题,但首先要先确认清楚这个点是否就是坏点,可以通过抓取相应的raw图来做分析。因为最后输出的结果图上坏点比较明显,所以可以通过结果图上有坏点的位置,找到对应raw图上的位置,查看raw 图上是否有异常。

当坏点比较多,比较大,涉及到多个像素时,那可能会很容易从raw图上直接看到。但对于单个的,差异不是特别大的坏点像素,则是不那么容易被看到了,如果是这种情况,那就可以通过比对像素点与周围像素的亮度差异来判断是否是异常点了。

如下图所示,可以看到红框内的 B,Gb通道是要比周围像素要亮一点的,另外也可以通过相应工具去读取各个颜色通道的亮度值,这样会更加直观。

b. 关于坏点的管控标准

坏点的管控标准分为单个坏点和坏点集群,这个项目上模组厂给到的回复是,坏点单点的管控一般都是按照输出尺寸的0.02% Pixels,比如5M就是1000个,坏点集群标准小于等于3个为良品。只要2个连在一起的像素点就算一个簇(也可以自定义)。

关于坏点判定的定义是通过比对像素点与周围像素点亮度差异,将亮度差异大于规格值的判定为坏点。此项目上用到的是像素差异30%以上,则判定为坏点。如下图所示的是 sensor 部分 pxiel 的亮度显示图,Gr,R,Gb,B 四个颜色通道是一个像素。

图中黄色方框部分的Gr亮度为185,185周围Gr通道的亮度:116-127-128-122-169-123-126-129,9个Gr通道平均亮度为:136.1,(185-136.1)/185 = 26.4%,因此按照30%的浓度差异此点不是坏点。

同理,图中蓝色方框部分的R亮度为160,160周围R通道的亮度:79-77-74-123-77-83-82-75,9个R通道平均亮度为:92.2,(160-92.2)/160 = 42.2%,此点即是坏点。

同理,白色方框R的浓度差异可以算出为31.4%,判定为坏点,因此我们可以判定R通道有相连,这是一个坏点簇。

c. 关于坏点问题的调试方法

知道了坏点的管控标准后,就可以确认此处的坏点是否符合管控了,若满足管控标准,那就排除了生产品质上的问题。后续接着就是软件去调试,先确认sensor端是否有dpc处理的控制,通过查sensor datasheet 及咨询该sensor 厂的fae来了解怎么去修改。

下一步可以通过后端isp中的dpc模块去做处理,但这里调试时要注意,dpc强度开大后肯定会对画面的清晰度有损失,但其实dpc也会有降低噪声的效果。而这样就可以将后面的空域降噪的强度减弱一点,在不增加噪点的情况下将锐化的强度增加一点,看看是否可以恢复一点由于dpc开大导致的清晰度问题。这个具体要看isp pipeline,若dpc模块是在raw域做的,而降噪、锐化的模块在dpc后面去做的,那就很难通过后面模块的调试来恢复清晰度了。

3、问题总结

关于项目调试过程中遇到的坏点问题,一般按如下步骤去进行排查:

a. 先判断遇到的是不是坏点,通过抓取raw图去看,及利用相应raw图工具去做分析。

b. 从模组厂或 sensor 厂了解坏点的管控标准,确认是否满足坏点的管控标准,排查生产品质问题。

c. 通过查 sensor datasheet 及咨询该 sensor 厂的fae来了解该 sensor 是否有 dpc 处理的控制。

d. 通过后端isp中的dpc模块去做处理,但调试时要注意可以通过dpc模块后的降噪及锐化的各个模块去平衡清晰度的效果。

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

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

相关文章

5.1.tensorRT基础(2)-正确导出onnx的介绍,使得onnx问题尽量少

目录 前言1. 正确导出ONNX总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 基础-正确导出 onnx 的介绍&#xff0…

【网络安全】DVWA靶场实战BurpSuite内网渗透

BurpSuite 内网渗透 一、 攻击模式介绍1.1 Sniper(狙击手)1.2 Battering ram(攻城锤)1.3 Pitchfork(草叉)1.4 Cluster bomb(榴霰弹) 二、 DVWA靶场搭建2.1 下载DVWA工程2.2 添加网站…

19 QListWidget控件

Tips: 对于列表式数据可以使用QStringList进行左移一块输入。 代码: //listWidget使用 // QListWidgetItem * item new QListWidgetItem("锄禾日当午"); // QListWidgetItem * item2 new QListWidgetItem("汗滴禾下土"); // ui->…

vue前端打包优化

建议,使用pnpn代替原生的npm 具体操作如下: pnpm安装,如果是linux,需要把npm和pnpm设置为环境变量## 安装pnpm npm install -g pnpm5.15.0 --registryhttps://registry.npm.taobao.org ## 设置淘宝镜像pnpm config set registry…

Vue3+vite实现组件上传npm并应用

场景:就是A项目的组件需要在B项目中使用 下面举例的是把a项目pagination分页组件上传到npm,在b项目使用 采坑日记:封装的组件一定要起name要不调用不成功 1.1 配置打包 1.1 首先在公用组件components文件夹下创建index.js文件&#xff0c…

JavaSwing+MySQL的小区物业管理系统

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88071096 JDK1.8、MySQL5.7 《数据库原理课程设计》课程设计任务书 题 目: 小区物业管理系统 学生姓名: xxxxxx 班 级: xx 级软件工程 x 班 学 号&#…

虚继承是如何解决二义性和数据的冗余的

我们知道面向对象的三大特性分别为封装,继承,多态。在继承中,我们知道一个类可以继承另一个类,这样的关系被叫做子类(派生类)继承父类(基类),并且子类可以使用到父类的接口。但是在C中还被设计了…

ElasticSearch学习--数据聚合

介绍 数据聚合可以帮助我们对海量的数据进行统计分析,如果结合kibana,我们还能形成可视化的图形报表。自动补全可以根据用户输入的部分关键字去自动补全和提示。数据同步可以帮助我们解决es和mysql的数据一致性问题。集群可以帮助我们了解结构和不同节点…

Pytorch个人学习记录总结 08

目录 神经网络-搭建小实战和Sequential的使用 版本1——未用Sequential 版本2——用Sequential 神经网络-搭建小实战和Sequential的使用 torch.nn.Sequential的官方文档地址,模块将按照它们在构造函数中传递的顺序添加。代码实现的是下图: 版本1—…

BeanFactory容器的构建和使用示例

BeanFactory容器的实现流程: BeanFactory是Spring框架中的一部分,它提供了IoC(控制反转)的实现机制。下面是BeanFactory的IoC实现过程: 定义Bean定义:首先,我们需要在配置文件中定义Bean的定义…

[数据结构]顺序表和ArrayList

顺序表的介绍 在了解顺序表之前先了解一下什么叫做线性表: 线性表(linear list):是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构。 常见的线性表:顺序表、链表、栈、队列… 线性…

数学建模入门-如何从0开始,掌握数学建模的基本技能

一、前言 本文主要面向没有了解过数学建模的同学,帮助同学们如何快速地进行数学建模的入门并且尽快地在各类赛事中获奖,或者写出优秀的数学建模论文。 在本文中,我将从什么是数学建模、数学建模的应用领域、数学建模的基本步骤、数学建模的技…

两天学会用Webpack打包前端代码-day01

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 什么是 Webpack? 使用 Webpack 体验webpack打包过程 修改 Webpack 打包入口和出口 入口 出…

[JAVAee]线程安全

目录 线程安全的理解 线程不安全的原因 ①非原子性 ②可见性 ③代码重排序 体会何为不安全的线程 保证线程安全 一个代码在多线程的环境下就很容易出现错误. 线程安全的理解 线程安全是什么呢?通俗的来讲,线程安全就是在多线程的环境下,代码的结果是符合我们预期的,就…

R语言-数据分析及建模(第1节)分类与预测问题简介

小伙伴们,今天我们学习R语言-数据分析及建模(第1节)分类与预测问题简介 01-分类与预测问题简介 ◆分类和预测是预测问题的两种主要类型,分类主要是预测分类标号(离散属性) ,而预测主要是建立连续…

Windows11的VS201x编译OpenCV+Contrib+CUDA

(1) CUDA下载,注意要和cudnn版本号相关。 我安装的是cuda11.0,注意VS2015不能编译CUDA11,所以用VS2015的话需要下载CUDA 10。因为更高的版本目前还没有cudnn。 (2) 下载和安装VS2015。 (3) 下载和解压CMake。 CMake地址: Releases Kitw…

性能测试Ⅱ(压力测试与负载测试详解)

协议 性能理论:并发编程 ,系统调度,调度算法 监控 压力测试与负载测试的区别是什么? 负载测试 在被测系统上持续不断的增加压力,直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状…

每天五分钟机器学习:多项式非线性回归模型

本文重点 在前面的课程中,我们学习了线性回归模型和非线性回归模型的区别和联系。多项式非线性回归模型是一种用于拟合非线性数据的回归模型。与线性回归模型不同,多项式非线性回归模型可以通过增加多项式的次数来适应更复杂的数据模式。在本文中,我们将介绍多项式非线性回…

[SpringMVC]仿写SpringMVC(注解开发)

文章目录 前提:1、代码结构2、核心:YhzMVC3、初始化步骤是:4、执行 前提: 当前版本无接受网络请求功能,不喜勿喷🙏🙏 本文将对代码核心进行讲解,源码已上传到gitee仓库 1、代码结构…

SpringBoot集成Druid实现数据库连接池

一、引入依赖 完整的pom文件如下所示: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http…