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

论文阅读:A Software Platform for Manipulating theCamera Imaging Pipeline

论文代码开源链接:

A Software Platform for Manipulating the Camera Imaging Pipelineicon-default.png?t=O83Ahttps://karaimer.github.io/camera-pipeline/摘要:论文提出了一个Pipline软件平台,可以方便地访问相机成像Pipline的每个阶段。该软件允许修改单个模块的参数,以及在中间图像经过不同阶段时访问和操作中间图像的能力。

概述:数码相机上有许多处理步骤,用于获得最终的RGB输出。这些处理步骤通常是按顺序执行的,并共同构成了相机成像Pipeline。这些处理步骤的例子包括Bayer Demosaic、白平衡、颜色空间映射、降噪、Tone-Mapping和CCM等。

一个传统ISP Pipeline成像过程如下图所示:

但是由于访问底层硬件的成像Pipeline较为困难,因为这些例程嵌入到相机的硬件中,可能涉及到个别相机制造商独有的专有图像操作。

因此对于ISP Pipeline当中某个模块的研究难以演示它将如何影响相机的最终输出。例如,许多针对白平衡和颜色不变性的工作都是直接在特定于相机的原始RAW图像上执行的,而图像最终的输出质量还与Pipeline的其他模块息息相关。另一个例子是去噪研究,由于缺乏通用的RAW原始图像成像Pipeline,通常研究去噪的论文都是在经过ISP处理后的sRGB图像上进行操作,但是经过了ISP非线性模块处理后的图像很多降噪假设已经难以成立。

因此,该论文提供了一个软件平台,允许访问ISP Pipeline 的每个成像阶段图像参数和数据,可以方便的抓取某个成像阶段的图像处理后再插入进去,该操作可以方便研究某个过程的图像处理对于整个ISP pipeline最终成像输出的影响。该软件平台基于DNG原始RAW格式,DNG保存了CMOS Sensor的原始成像二进制RAW数据,并附加了一些关于成像的其他信息和拍摄信息。

PS:我的HUAWEI Mate30手机拍摄的RAW图格式就是DNG格式

相关工作:论文例举了相关文献说明了在各种计算机视觉和图像处理任务中考虑整个ISP Pipeline成像过程的好处。力求优化最终成像输出。

软件平台架构

论文提供的ISP Pipeline成像处理如下图所示:

相应阶段的输出图像为:

各个成像阶段说明

Stage 1:Reading the raw image ( Params: None ),从DNG格式中获取原始二进制RAW数据
Stage 2:Black light subtraction and linearization (Params: Level values or 1D LUT),可以理解为BLC(黑电平),对于特定的某张RAW图像,其黑电平与拍摄时的ISO和增益有关,或者可以提供一个一维LUT来进行线性化。(但目前的ISP貌似是减去一个固定值即可)
Stage 3:Lens/Flat Field correction ( Params: 4 × Array N × M )。可以理解为LSC(镜头阴影校正),对于每个Bayer通道(总共RGGB四个通道)提供一个NxM的二维矩阵,结合双线性插值来对原始RAW图进行镜头阴影校正。
Stage 4:Demosaicing ( Params: func),将原始RAW图每个通道缺失的颜色分量通过插值还原出来,最终得到RGB图。
Stage 5:Noise reduction ( Params: func),降噪。
Stage 6:White-balancing and color space conversion (Params: Two 3 ×3 matrices),白平衡与颜色空间转换,注意这里指的颜色空间转换可以看作是CCM(颜色校正),指的并不是RGB到YUV的颜色空间转换。
Stage 7:Hue/Sat map application ( Params: 3D LUT),非线性变换,调整饱和度和色调,通常的ISP貌似没有这个步骤(CCM是乘以一个3x3矩阵,是对颜色的线性变换,而这个是3D LUT,可以实现对颜色的非线性变换)
Stage 8:Exposure compensation ( Params: EV value , 1D LUT),曝光补偿,是一种数字曝光调整,类似于DGain(数字增益),只是对像素值增加一个线性增益。
Stage 9:Color manipulation ( Params: 3D LUT),也是对于颜色的非线性调整。
Stage 10:Tone-curve application ( Params: 1D LUT),色调映射,对于亮度和对比度的调整。
Stage 11:Final color space conversion ( Params: 3 × 3 Matrix),类似于CCM线性颜色校正。
Stage 12:Gamma curve application ( Params: 1D LUT),Gamma校正,对于全局亮度的调整。
Exposure Compensation & Tone-mapping

Demosaicing

论文使用了一个Colorimetry Example例子来说明现有的计算机视觉和图像处理研究面临的一个挑战是能够在相机Pipeline中获得中间图像,以评估在各个阶段的有效性。

使用四种相机(LG-G4, Motorola Nexus 6, Samsung S6-Edge, and an HTC One M9)在不同光照条件下拍摄标准色卡并得到DNG格式的原始图像。

分别使用X-Rite software和论文【Bastani, P., Funt, B.: Simplifying irradiance independent color calibration. In: Color Imaging XIX: Displaying, Processing, Hardcopy, and Applications (2014)】中提到的方法来进行颜色空间映射(stage 6)

通过对比颜色转换后的24色与标准24色卡颜色的色差,Bastani and Funt提到的方法取得了良好的结果,余弦角度误差最小。

使用Full Pipeline来评估某个成像阶段的算法性能

White-balancing/color constancy

论文通过该例子说明,只评估不同AWB算法在RAW域的结果没有什么视觉意义,因为RAW图空间是非标准的显示结果。更为合理的比较应该是对相应图像进行ISP Pipeline全流程后得到标准的显示输出后再进行比较。通过这样才能看不同AWB算法的差异性。

Noise Reduction

论文通过这个例子说明同通常噪声是通过图像传感器产生的,因此噪声从一开始的RAW原始图像中就开始出现。论文对比了图像在非线性处理前的降噪结果说明了非线性处理会改变噪声的分布情况,因此降噪最好在非线性处理前进行。

Deblurring

同理,论文也论证了Deblur(锐化)也应该在非线性处理前进行,在RAW域进行deblur的结果要比在sRGB域的结果好。

个人总结:论文提供了一个ISP Pipeline的全流程软件,可以方便的更改某一阶段的算法并查看该算法最终Pipeline输出的效果,但是由于使用的是Adobe的DNG SDK,整个ISP Pipeine的很多阶段被隐藏了,通常一些处理都是调用库或者使用DNG中携带的信息,还是不能更好的从数据流角度透明展示ISP pipeine的各个阶段,后续准备使用传统的ISP算法简单搭建一个类似的MATLAB仿真平台。

相关文章:

论文阅读:A Software Platform for Manipulating theCamera Imaging Pipeline

论文代码开源链接: A Software Platform for Manipulating the Camera Imaging Pipelinehttps://karaimer.github.io/camera-pipeline/摘要:论文提出了一个Pipline软件平台,可以方便地访问相机成像Pipline的每个阶段。该软件允许修改单个模块…...

【MySQL篇】持久化和非持久化统计信息的深度剖析(第一篇,总共六篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…...

Ubuntu下安装Qt

1.如图1所示,在Index of /archive上下载安装包; 图1 2.将图1安装包下载好之后,通过共享文件夹的方式拷贝到ubutntu,如图2所示; 图2 3.如图3所示,执行chmod x qt-creator-opensource-linux-x86_64-10.0.2.…...

丹摩征文活动 | AI创新之路,DAMODEL助你一臂之力GPU

目录 前言—— DAMODEL(丹摩智算) 算力服务 直观的感受算力提供商的强大​ 平台功能介绍​ 镜像选择 云磁盘创建 总结 前言—— 只需轻点鼠标,开发者便可拥有属于自己的AI计算王国 - 从丰富的GPU实例选择,到高性能的云磁盘,再到预配置的深度学习…...

数据库(总结自小林coding)|索引失效的场景、慢查询、原因及如何优化?undo log、redo log、binlog 作用、MySQL和Redis的区别

数据库(总结自小林coding)|索引失效的场景、慢查询、原因及如何优化?undo log、redo log、binlog 作用、MySQL和Redis的区别 说一下索引失效的场景?什么是慢查询?原因是什么?可以怎么优化?undo …...

Docker容器运行CentOS镜像,执行yum命令提示“Failed to set locale, defaulting to C.UTF-8”

最近对运维比较感兴趣,以前虽然对公司负责的项目做过运维工作,但用的都是最原始的方法,例如是在阿里云服务器上直接安装jdk,tomcat,redis ,nginx 。这种方式对不大的项目还能够支持,随着项目变大,服务增加&…...

OpenCV基本图像处理操作(六)——直方图与模版匹配

直方图 cv2.calcHist(images,channels,mask,histSize,ranges) images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的…...

【LLM学习笔记】第四篇:模型压缩方法——量化、剪枝、蒸馏、分解

文章目录 1. 为什么要进行模型压缩2. 模型量化2.1 常见数据类型2.2 浮点数表示2.3 线性量化2.4 非线性量化2.5 挑战2.6 实际应用 3. 模型剪枝4. 模型蒸馏4.1 模型蒸馏的基本流程4.2 模型蒸馏的优势4.3 实际应用 5. 低秩分解(低秩近似)5.1 基本概念5.2 实…...

python3 自动更新的缓存类

这个类会在后台自动更新缓存数据,你只需要调用方法来获取数据即可。 自动更新缓存类 以下是 AutoUpdatingCache 类的实现: import threading import timeclass AutoUpdatingCache:def __init__(self, update_function, expiry_time60):""&qu…...

英语知识网站开发:Spring Boot框架应用

3系统分析 3.1可行性分析 通过对本英语知识应用网站实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本英语知识应用网站采用SSM框架,JAVA作为开发语…...

文件上传upload-labs-docker通关

(图片加载不出,说明被和谐了) 项目一: sqlsec/ggctf-upload - Docker Image | Docker Hub 学习过程中,可以对照源码进行白盒分析. 补充:环境搭建在Linux虚拟机上的同时,以另一台Windows虚拟机进行测试最…...

git(Linux)

1.git 三板斧 基本准备工作: 把远端仓库拉拉取到本地了 .git --> 本地仓库 git在提交的时候,只会提交变化的部分 就可以在当前目录下新增代码了 test.c 并没有被仓库管理起来 怎么添加? 1.1 git add test.c 也不算完全添加到仓库里面&…...

Doris实战—构建日志存储与分析平台

构建日志存储与分析平台 日志是系统运行的详细记录,包含各种事件发生的主体、时间、位置、内容等关键信息。出于运维可观测、网络安全监控及业务分析等多重需求,企业通常需要将分散的日志采集起来,进行集中存储、查询和分析,以进一步从日志数据里挖掘出有价值的内容。 针…...

【vue3+Typescript】unapp+stompsj模式下替代plus-websocket的封装模块

由于plus-websocket实测存在消息丢失的问题,只能寻找替代的方案,看文章说使用原生的即可很好的工作。而目前在stompjs里需要使用websocket类型的封装模块,看了下原来提供的接口,采用uniapp原生的websocket模式,对原模块…...

Tcon技术和Tconless技术介绍

文章目录 TCON技术(传统时序控制器)定义:主要功能:优点:缺点: TCONless技术(无独立时序控制器)定义:工作原理:优点:缺点: TCON与TCONl…...

C#-利用反射自动绑定请求标志类和具体执行命令类

文章速览 概述例程请求类命名空间父类示例子类示例 命令类命名空间子类示例 记录的数据结构实现绑定方法 坚持记录实属不易,希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区! 谢谢~ 概述 需求: 将指定的两种类型的…...

高中数学练习:初探均值换元法

文章目录 1. 均值换元法定义2. 均值换元法优点3. 均值换元法应用4. 均值换元法示例4.1 求解分式方程4.2 求解指数方程4.3 计算最大值 5. 实战小结 1. 均值换元法定义 均值换元法是一种数学技巧,通过引入新变量 t t t将两个变量 x x x和 y y y表示为它们的平均值加上…...

数据结构单链表,顺序表,广义表,多重链表,堆栈的学习

单链表 比如一个多项式,主要包括x的系数,x的指数,那么可以创建一个一维数组来存储它的系数和指数,用数组下标来表示。它的系数可以用数组下标对应的数组元素来储存。 可是这样储存会浪费空间所以采用单链表形式来存储。 即创建一…...

【保姆级教程】使用lora微调LLM并在truthfulQA数据集评估(Part 2.在truthfulQA上评估LLM)

上一期我们成功用lora微调了一个模型传送门,怎样评估模型呢?目前LLM没有一个统一的BENCHMARK。我们今天选用truthfulQA。 truthfulQA数据集格式如下所示 {question: What is the smallest country in the world that is at least one square mile in ar…...

thinkphp中对请求封装

请求的封装 //调用 $res Http::post($this->baseUrl . $url,$params,[CURLOPT_HTTPHEADER > [Content-Type: application/json,Content-Length: . strlen($params),],]);<?php namespace fast; /*** 字符串类*/ class Http {/*** 发送一个POST请求*/public static …...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...