Camera的学习笔记(二)——ISP

2023-11-18

ISP概念:

ISP是Image Signal Processor的缩写,全称是影像处理器。在相机成像的整个环节中,它负责接收感光元件(Sensor)的原始信号数据,可以理解为整个相机拍照、录像的第一步处理流程,对图像质量起着非常重要的作用。

ISP功能简述:

ISP的功能比较杂,基本上跟图像效果有关的它都有份。它内部包含多个图像算法处理模块,其中比较有代表性的是:扣暗电流(去掉底电流噪声),线性化(解决数据非线性问题),shading(解决镜头带来的亮度衰减与颜色变化),去坏点(去掉sensor中坏点数据),去噪(去除噪声),demosaic(raw数据转为RGB数据),3A(自动白平衡,自动对焦,自动曝光),gamma(亮度映射曲线,优化局部与整体对比度),旋转(角度变化),锐化(调整锐度),缩放(放大缩小),色彩空间转换(转换到不同色彩空间进处理)等。在这里插入图片描述

(1)BLC(Black Level Correction)/ Black Level Compensate (OBC) :

黑电平校正。所谓黑电平就是在DNP下,将曝光时间和增益都调到最小时拍摄图片的亮度值,理想情况下应该是0,但是实际中因为sensor暗电流作用,全黑像素值大于0。(这一个值,在后面可能会受到AWBGain,CCM,Gamma的影响)。

产生原因:

CMOS是光电传感器,把光信号转换成电信号;但是,即使没有光照,器件由于受热影响,产生电子的扰动,进而也会产生电荷;在全黑的情况下,仍然会累积讯号,导致拍摄的全黑的影像不够黑

影响:

1,黑阶不够黑;

2,影像整体呈现雾状,不够通透;

3,影像产生色偏;

在这里插入图片描述

解决方法:

1、由Sensor本身在output raw 上减去对应的black level值。

2、由ISP本身在input raw 上减去对应的black level值。

(2)DPC/BPD(Defect Pixel Correction/Bad Pixel Detect):

概念:

坏点校正/坏点检测,相机中成像坏点一般是白色或者黑色的点,和周围像素点的差异明显。

坏点:坏点一般是指sensor 制造过程中因为单个像素的电路异常而不能正常表现感光亮度,其表现形式为全黑的场景成像中单个白色和彩色的点,或者全白的情况下的黑点。

在这里插入图片描述
在这里插入图片描述

坏点如何检测:

通过比较模板中心像素周围像素的像素值差异来侦测坏点坏点。

如何校正:

用中心像素周围合适的候选像素值替代坏点像素。

DPC flow:

在这里插入图片描述

(3)LSC(Lens Shading Correction)/Color Shading :

概念:

阴影校正;
Lens Shading 是由于镜片从边缘到中心对入射光线的反射程度不同,造成拍摄均匀亮度的画面,图像从中心到边缘亮度不均匀逐渐变暗。
Color Shading 是由于Lens从中心到边缘,其R、G、B变暗的速率不一样,总体表现就是Gb/Gr像素值差异较大,两个像素之间有细微纹理。找出shading的distribution(分布),然后用最小的模型来建模将其导入。
在这里插入图片描述

Correction原理:

在这里插入图片描述找到中心点后,以中心点为原心,向周围以圆为单位补Gain,离中心点越远,补的越大。

Correction前后对比:

在这里插入图片描述

(4)DM(Demosaicing/Color Filter Array Interpolation/CFA插值):

概念:

CMOS Sensor出来的RawData是Bayer格式的图像,每个像素只有一个通道的信息。
DM是将Bayer格式的图像恢复成每个像素用RGB三通道表示的方式。
DM的主要依据是图像在平滑的局部区域,各分量的ratio是相等的。插值算法的好坏会影响图片的细节,如摩尔纹。

DM 是一种数位影像处理演算法,目的是从覆有滤色阵列(Color Filter Array简称CFA)的感光元件所输出的的不完全色彩取样中,重建出色彩影像,这个方法也叫作滤色阵列内插法或者色彩重建法

(5)CCM(Color Correction Matrix/ DSC color calibration):

颜色校正矩阵
拍摄color checker24色板,将相机拍摄图片值与色板标准值之间进行对比(RGB颜色空间),得出一组能将拍摄值校正到最接近标准值的3x3矩阵。通过这个矩阵对所有相机拍摄的图片进行颜色校正。
在这里插入图片描述

(6)Gamma校正

Gamma产生的原因:
人眼对自然亮度感知是非线性的。资源总是稀缺的,我们用来记录/展示画面的媒介,动态范围和灰阶预算是有限的。(无论纸张还是电子屏幕)

为了在灰阶预算有限的前提下,协调自然亮度和主观灰阶感受这二者的映射关系,Gamma就产生了。
在这里插入图片描述

(7)NR(Noise Reduction/Denoise):

去噪 采用特定的LPF(Low Pass Filter)对图片进行滤波,滤除图像的噪声成分,而Bilateral filtering即双边滤波器,它是一种保护边缘的平滑滤波器,这样既可以滤除噪声,edge又可以保留下来。

在这里插入图片描述

(8)EE(Edge Enhancement/Edge Sharpening):

锐化 边缘增强。通过滤波器获取图像的高频分量,按照一定的比例将高频部分和原图进行加权求和获取锐化后的图像。

在这里插入图片描述
AWB(Automatic White Balance)------自动白平衡

人类视觉系统具有颜色恒常性的特点,因此人类对事物的观察可以不受到光源颜色的影响。但是图像传感器本身并不具有这种颜色恒常性的特点,因此,其在不同光线下拍摄到的图像,会受到光源颜色的影响而发生变化。例如在晴朗的天空下拍摄到的图像可能偏蓝,而在烛光下拍摄到的物体颜色会偏红。因此,为了消除光源颜色对于图像传感器成像的影响,自动白平衡功能就是模拟了人类视觉系统的颜色恒常性特点来消除光源颜色对图像的影响的

Camera 3A

1 、AWB

AWB(Auto White Balance)即自动白平衡 严格上来说,白色是反射到人眼里面的R、G、B比例相同,并且有一定亮度的视觉反应。白色物体被放在不同的色温光源下,所呈现的颜色会不同,但是因为人眼有自动白平衡的功能,会自动校正回来。所以要求我们Camera也要进行AWB矫正,要求在不同色温环境下,照白色的物体,屏幕中的图像应也是白色的。

2 、AE

AE(Automatic Exposure)即自动曝光 自动曝光的目的是在不同的照明条件和场景中实现欣赏亮度级别或所谓的目标亮度级别,从而捕获的视频或图像既不太暗也不太亮。为了达到这个目的,要调整镜头孔径,传感器曝光时间,传感器模拟增益和传感器/ ISP数字增益。这个过程称为自动曝光。

3 、AF

AF(Auto Focus)自动聚焦 聚焦就是前后移动镜头,直至将尽可能清晰亮丽的物体图像投射到胶片上。镜头必须与胶片保持一定的距离才能形成清晰的图像,具体取决于物体与相机的距离。自动对焦(Auto Focus)是利用物体光反射的原理,将反射的光被相机上的传感器CCD接受,通过计算机处理,带动电动对焦装置进行对焦的方式叫自动对焦。它多分为二类:一是主动式,另一个则是被动式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Camera的学习笔记(二)——ISP 的相关文章

  • 相机标定opencv

    你好 我正在做一个项目来进行图像 3D 重建 我正在校准相机的阶段 这需要很长时间才能完成 但是当我编译代码并在相机前显示棋盘时 它会直接进入未处理的异常错误 当图片不在框架中时 一旦进入框架就没有错误 出现未处理的错误我不知道为什么 我问
  • 在 iOS 中测量/计算距离

    我需要计算 iOS 中两点之间的距离 我可以保证至少有一部iPhone 4 所以相机的图像质量应该很好 这个想法是使用图片计算到某个点的距离 有一个名为 easyMeasure 的应用程序 它完全可以满足我的需要 我对毕达哥拉斯很满意 但这
  • 您可以从 Mobile Safari 访问 iPhone 相机吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有 JavaScript API 用于从 Mobile Safari 访问 iPhone 的相机
  • Zxing扫描仪相机变焦

    我已经尝试解决这个问题3天了 但仍然没有找到答案 我想在通过 Zxing 扫描仪扫描二维码时向相机添加 ZOOM 构建 gradle implementation me dm7 barcodescanner zxing 1 9 8 Xml
  • 不确定如何使用 CICrop 裁剪图像

    我正在尝试使用 CICrop 裁剪图像 但是当我尝试裁剪时 它崩溃并显示以下错误消息 由于未捕获的异常 NSUnknownKeyException 而终止应用程序 原因 setValue forUndefinedKey 这个类 不符合键的键
  • 如何从里程计/tf数据获取投影矩阵?

    我想将视觉里程计的结果与 KITTI 数据集提供的事实进行比较 对于地面中的每一帧 我都有一个投影矩阵 例如 1 000000e 00 9 043683e 12 2 326809e 11 1 110223e 16 9 043683e 12
  • 如何使用鼠标改变OpenGL相机

    我正在尝试在 OpenGL 中设置一个相机来查看 3 维中的一些点 为了实现这一点 我不想使用旧的 固定的功能样式 glMatrixMode glTranslate 等 而是自己设置模型视图投影矩阵并在我的顶点着色器中使用它 正交投影就足够
  • 为什么 Camera.setParameters(Camera.Parameters) 不适用于索尼爱立信 X10 和 Droid?

    在索尼爱立信 X10 或 Droid 上使用相机 API 时 有人遇到过奇怪的行为吗 例如 以下代码不适用于这些设备 结果 我在市场上收到了很多负面反馈 导致许多订单被取消 mParameters set rotation orientat
  • 以编程方式截取屏幕截图不会捕获 surfaceVIew 的内容

    我有一个应用程序 我希望能够捕获屏幕截图 布局的背景是一个 SurfaceView 显示来自后置摄像头的视频 下面的代码可以截图 但是surfaceView的内容保存为黑色 这是代码 btn setOnClickListener new O
  • iOS:如何打开带有动画效果的相机?

    我想以动画效果打开相机 以便看起来相机仅在父屏幕中打开 我正在使用相机覆盖屏幕 在父屏幕中单击按钮事件时 相机覆盖屏幕正在打开 在相机覆盖屏幕中有一个取消按钮可以关闭相机 因此在再次关闭相机时我需要显示动画效果看起来现在相机在同一个父屏幕中
  • 如何检测位图中的红色像素

    android中的getPixels 是上下左右读取像素 还是左右上下读取像素 基本上是按行或列读取 如果我想知道图片中的红色值较高的位置 我可以这样做吗 我假设它是按列读取的 Bitmap thumbnail Bitmap data ge
  • iOS:同时使用 WiFi 和移动数据

    Setup 我的项目涉及一个 WiFi 相机 它创建一个 WiFi 热点 为了在相机上流式传输视频预览 浏览媒体 用户需要连接到相机的热点 Problem 用户无法同时使用 3G 4G 上的蜂窝数据 因为 iOS 设备已通过 WiFi 连接
  • Android:想要在相机预览上放置剪影叠加

    我想知道如何在相机预览上添加剪影 到目前为止 我已经完成了以下示例 它只是预览相机 http developer android com reference android view TextureView html http develo
  • 禁止将拍摄的照片保存到 DCIM 文件夹中

    我在我的应用程序中通过 Intent 拍照 照片保存到 SD 上我指定的文件夹中 而且它们也保存到 DCIM 默认相机文件夹中 我不想两次 如何禁止将拍摄的照片保存到此默认相机目录中 先感谢您 这是我正在使用的 Intent intent
  • iOS 相机视频实时预览与拍摄的照片有偏移

    我正在使用相机工作 相机以实时反馈的形式呈现给用户 当用户单击时 就会创建图像并将其传递给用户 问题是图像被设计为位于最顶部位置 该位置高于实时预览显示的位置 您知道如何调整相机的框架 使实时视频的顶部与他们要拍摄的照片的顶部相匹配吗 我以
  • Three.js 设置并读取相机外观向量

    而不是使用camera rotation或lookAt 函数旋转相机 我想将外观矢量直接传递给相机 是否可以直接设置相机外观矢量以及是否可以从相机读取外观矢量 相机没有 外观矢量 因此无法设置它 但是 您可以构造一个point通过将您的外观
  • Marshmallow 中的手电筒控制

    我对最新 Marshmallow 版本中的相机 更具体地说是手电筒 有疑问 在任何棉花糖之前的版本上 我需要执行以下操作来打开 关闭闪光灯 private void turnFlashOn final Camera camera int f
  • 相机预览的有效模糊

    到目前为止我尝试过的 将每一帧转换为位图 然后用library https github com wasabeef Blurry并将其放入ImageView这是在相机预览前 显然太慢了 就像1 fps 然后我开始使用渲染脚本这会模糊每一帧
  • iPhone AVFoundation 相机方向

    我一直在绞尽脑汁地试图让 AVFoundation 相机以正确的方向 即设备方向 捕获图片 但我无法让它工作 我看过教程 看过 WWDC 演示 还下载了 WWDC 示例程序 但即使这样也没有成功 我的应用程序的代码是 AVCaptureCo
  • cameraOverlayView 防止使用 allowedEditing 进行编辑

    在我的应用程序中 使用以下行在拍摄照片后对其进行编辑 移动和缩放 效果很好 imagePicker setAllowsEditing YES 但如果我还使用cameraOverlayView 则编辑模式将不再起作用 屏幕出现 但平移和捏合手

随机推荐

  • 谷歌翻译SDK (Google Translate SDK)的使用

    一 安装Google Cloud SDK http blog csdn net nicolelili1 article details 68947164 二 设置你的项目 1 登陆谷歌账号 没有就注册 https accounts goog
  • 【SpringBoot】ApplicationContext介绍

    1 ApplicationContext是spring继BeanFactory之外的另一个核心接口或容器 允许容器通过应用程序上下文环境创建 获取 管理bean 为应用程序提供配置的中央接口 ApplicationContext继承关系 2
  • PCA+SVM手写数字识别 代码参考

    我可以为您提供一些参考 但是最终具体实现还需要您根据自己的需求进行调整 可以参考下面的代码 from sklearn import datasets from sklearn model selection import train tes
  • Android Intent的FLAG标志详解

    原文地址 Android Intent的FLAG标志详解 前言 在Android开发中 Intent想必大家经常用 Intent本意为目的 意向 意图 在Android中 Intent是系统各组件 或应用程序 之间进行数据传递的数据附载者
  • 小程序开发Q&A

    本文总结小程序开发中常见的错误问题 请开发者利用浏览器的搜索功能来检索关键字 快速定位到相关问题 快捷键Ctrl F打开搜索框 Q1 为什么会出现 脚本错误或者未正确调用Page 的错误提示 A 出现这个错误的原因通常是因为对应页面的js文
  • 真香系列!史上最全的微服务专业术语面试50问,赶快收藏备战金九银十!

    前言 上个月4号通过阿里工作的学长进行内推 7天简历评估 11号接到电话面试 尽管猝不及防回答仓促 但好在前期准备充分 通过 3天后进行现场面试 通知时间为早上10点 当日设了七点闹钟 结果五点五十三分惊醒后再无法入睡 起床 重新翻看之前做
  • 春秋云镜 CVE-2022-32991

    春秋云镜 CVE 2022 32991 Web Based Quiz System SQL注入 靶标介绍 该CMS的welcome php中存在SQL注入攻击 1 启动场景 2 注册任意用户 3 登录成功进入主页 http eci 2zei
  • postgresql 清空数据表 truncate

    在 mysql 中如果需要清空表 只需要 TRUNCATE table name 即可 如果有自增的 id 字段 也会还原回 1 但是 postgresql 与 mysql 稍有不同 postgresql 的自增字段 是通过 序列 sequ
  • Python Turtle绘图基础(三)——Turtle色彩和画笔设置

    今天继续给大家介绍Python相关知识 本文主要内容是Python Turtle绘图基础 三 包括Turtle色彩和Turtle画笔设置 一 Turtle色彩设置 想要用Turtle绘制出更加复杂 更加美丽的图形 就必须学习Turtle的色
  • 【按照年月去统计信息并分类展示】

    1 前言 需求是需要将历史订单按照年月分类展示 并展示汇总值 由于后端返回的是数组的数据 并没有将数据做好统计分类 出于对自己的自信以及不想给别人添麻烦的信息 然后自己写了一下处理的方法 然后放上最后的效果图吧 2 代码实现 按照月份统计每
  • 跟着英雄刷算法-素数

    跟着英雄大佬刷算法的第三天 数论基础 优化一 对于一个非素数n来说 如果x是n的一个因子 那么n x也是n的一个因子 我们可以假设x 所以对于一个数n 判断它是否为一个素数我们需要确定的范围为 2 根号下n 优化二 例1 不是素数返回0 b
  • Tomcat 8 解决“At least one JAR was scanned for TLDs yet contained no TLDs”问题

    参考 http stackoverflow com questions 14375673 how to fix jsp compiler warning one jar was scanned for tlds yet contained
  • 网络层抓包tcpdump

    sudo tcpdump i eth0 s 0 nn host iphost w xxx pcap 这段代码使用了命令行工具 tcpdump 用于在Linux系统上捕获网络数据包 让我详细介绍一下这段代码的含义和 tcpdump 的用法 代
  • 2022年4月3日-4月15日(方案A,ogremain源码抄写+ue4视频学习,共22小时,合计1270小时,剩8730小时)

    截至2022年4月1日 ogreMain剩下4533行 含注释 纯代码2646行 周二时学完了ue第五套视频教程编辑器1 good 接下来 UE4视频教程进行到了mysql 1 1 tf1 2 1 oss 4 2 simpleThread
  • c语言/c++(数据结构篇) 之 括号匹配检验实例(栈和队列)(4/7)

    实验目的及要求 熟悉掌握利用栈完成括号是否匹配的检验 实验内容 利用栈完成括号匹配检验 目的 掌握栈的后进先出原则在解决实际问题中的应用 内容 输入一组括号 构造栈 利用栈判断所输入的括号是否匹配 并能够输出匹配 多左括号 多右括号三种不同
  • Centos7Hadoop集群搭建准备工作

    设置静态IP地址 1 vi etc sysconfig network scripts ifcfg ens33 BOOTPROTO static ONBOOT yes 固定IP IPADDR IP地址 子网掩码 NETMASK 255 25
  • [思维模式-8]:《如何系统思考》-4- 认识篇 - 什么是系统思考?系统思考的特征?系统思考的思维转变。

    目录 第1章 系统思考概述 1 1 什么是系统思考 1 2 系统思考适合解决什么样的问题 解决复杂问题的有效利器 1 3 思维模式的转换 还原论向整体论 西医向中医 第2章 系统思考的四项特征 2 1 看到全貌而非局部 2 2 看透结构而非
  • 基于 Kintex-7 FPGA + Nvidia TX2 = 16通道高速ADC数据采集系统

    在之前接触的设计中如果涉及要实现ADC采样的话 往往会从精度和速率来考虑对性能的影响 一般来说精度是固定的或有一个最大精度设置 但是采样速率的话 过快会造成采样不准确 往往会对整个设计的性能造成限制 所以一直期望有这样一个系统 可以实现高速
  • 如何配置Java环境变量

    文章目录 零 首先需要进入环境变量页面 一 配置 JAVA HOME 变量 二 配置 Path 变量 三 配置 CLASSPATH 变量 四 验证是否配置成功 零 首先需要进入环境变量页面 1 win i 打开设置页面 点击系统 2 点击关
  • Camera的学习笔记(二)——ISP

    ISP概念 ISP是Image Signal Processor的缩写 全称是影像处理器 在相机成像的整个环节中 它负责接收感光元件 Sensor 的原始信号数据 可以理解为整个相机拍照 录像的第一步处理流程 对图像质量起着非常重要的作用