ISP图像处理pipeline简介1

ISP 是什么?

ISP (Image Signal Processor),图像信号处理器,是用于摄影和视频处理的一种专用芯片。它是用来干什么的呢?简单说就是用来将图像传感器(CCD, CMOS)信号转化成可视的信号的功能,这里可视的是指人眼可见的意思;在其它的应用场景,比如车载自动驾驶和机器人领域,“可视的”就要改成“可识别的“,可识别是指机器可识别,计算机可识别,或者算法可识别,这就是computer vision机器视觉(总之不是给人看的)。总之,就是将传感器信号进行处理,让人或者机器人能够看得见。要达到这个目的,我们对isp提了一些基本的要求。

ISP通常会作为一个模块集成到SoC上,也可以在设备的CPU或GPU上执行在ISP上的操作

ISP要求三原则

  1. 看得见 (动态范围, 明暗的分布范围,在科学研究中用lux来衡量亮度的大小。在日常生活和应用场景中,我们在晴天的日光下,照度可以达到10万lux,在树荫下照度下降到了1万lux,在日光灯下,只有300lux,白炽灯下又下降了一半只有150lux,在夜晚的路灯下只有10lux烛光下是1lux,在有月亮并且是满月的情况下照度只有0.1lux;星光下是0.001lux,在没有月亮也没有星星的漆黑的夜晚,照度达到了最低,仅仅1/10000 lux(万分之一);看得见的要求是在一个比较暗的环境下,依然能看得见。比如包括安防、无人机、自动驾驶等等对“看得见”的基本要求是在10lux,也即是在路灯下能够看得见。军工级别的要求是在0.001lux也就是有星星的夜晚能够可视(看得见)。)
  2. 看得清 (清晰度,噪音,这个就比较好理解,你看各手机厂,相机厂都在拼分辨率,就是为了能让照片拍得更加清晰)
  3. 看的好 (色彩或风格,比如什么哈苏色彩,徕卡色彩)

ISP应用领域

应用领域只能说很广泛,比如你现在玩的手机,出去玩带的各种相机,家里装的监控,以及汽车,机器人,特别是自动驾驶汽车,摄像头可能有十几个,车内车外都可能有。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ISP的工作流程PIPELINE

下图展示的是相机isp的典型pipeline, 这个例子中传感器数据最终会被输出为一个JPEG图片:
在这里插入图片描述
不同的ISP可能会以不同的顺序或方式应用这些步骤并且往往更加复杂,但一般包含这些步骤:3A(auto focus, auto exposure, auto white balance, 自动对焦, 自动曝光,自动白平衡),ISO增益,raw图片的各种处理,Demoasicing解马赛克,降噪,色彩空间转换,镜头和sensor校正,色彩校正,对比度和动态范围的调整,锐化,编码压缩等等。

下图是另一个使用场景的isp pipeline,这个例子中,传感器输出的raw data会被转化为yuv格式,然后进行视频编码。上一个例子是拍照的场景,这个是录视频的场景。
在这里插入图片描述
在这里插入图片描述
上一个图中按照图片在不同阶段的格式将pipeline划分为三个不同的阶段:raw domain, rgb domain,yuv domian。raw就是sensor 直出的,未经过处理的格式;在经过解马赛克这个工序之后就变成了rgb格式;但是在视频处理领域用得比较多的的是yuv格式,所以pipeline中需要将rgb格式转化成yuv进行后续的处理。

ISP 算法分类

从算法层面来讲,我们可以把ISP的常用算法分为几大类:2A(3A),镜头和sensor校正,对比度与动态范围,色彩,清晰度和降噪。

3A

3A就是指3auto focus自动对焦, auto exposure自动曝光, auto white balance自动白平衡。2A就是不包括自动对焦。
自动曝光曝光就是通过分析统计信息对sensor的曝光强度进行控制,确保视频(图片)亮度的稳定性。
自动白平衡同样也是通过分析统计信息对sensor输出的信号进行白平衡进行校正,确保色彩感知的稳定性,或者说叫让白色呈现为白色,解决环境光不同色温导致整幅图片偏色的情况。
同理,自动对焦也是通过分析统计信息对镜头的焦距进行调整保证兴趣区域的清晰度。

镜头和sensor校正

镜头是由透镜组成,由于制造精度以及组装工艺的偏差会引入畸变,导致原始图像的失真(包括形状,亮度,色彩)。镜头的畸变分为径向畸变和切向畸变两类。同时sensor模组本身也会导致一些信号的退化(亮度变化,串色等)。为了解决这些问题,ISP有各种算法来对这些畸变进行校正。
LSC:lens shading correction.镜头阴影校正,用来校正由于镜头模组导致的成像时的亮度和色彩不平衡。
CAC:color aberration correction, 用来校正由于镜头模组导致的色散现象。
DPC:defected pixel corrtction, 传感器像素坏点校正,用来处理传感器制作过程中出现的坏点。
BLC: black level correction, 黑电平校正

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

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

相关文章

CSS实现卡片在鼠标悬停时突出效果

在CSS中,实现卡片在鼠标悬停时突出,通常使用:hover伪类选择器。 :hover伪类选择器用于指定当鼠标指针悬停在某个元素上时,该元素的状态变化。通过:hover选择器,你可以定义鼠标悬停在元素上时元素的样式,比如改变颜色、…

java mysql 示例

java mysql 示例 一、登陆mysql;创建账号允许远程访问 -- 创建用户 CREATE USER user% IDENTIFIED BY password; -- 授予远程访问权限 GRANT ALL PRIVILEGES ON *.* TO user% WITH GRANT OPTION;二、关闭防火墙 sudo ufw disable三、下载jar包,并解压…

简单工厂模式大解析:让代码创造更高效、更智能!

个人主页: danci_ 🔥系列专栏:《设计模式》《MYSQL应用》 💪🏻 制定明确可量化的目标,坚持默默的做事。 🚀 转载自热榜文章:探索设计模式的魅力:简单工厂模式 简单工厂模式&#x…

Github学生认真全流程指南!避坑!保姆级教程!

重回学生身份,当然要好好享受一番学生权益了,而学生邮箱就是最好的资源与服务。 关于Github学生包(GitHub Student Developer Pack) Github的学生包里包括Github Pro账户,这是一个高级的 GitHub 账户类型,提供更多功能和服务,如私有仓库、团队协作工具等。以及Github …

CH254X 8051芯片手册介绍

1 8051CPU 8051是一种8位元的单芯片微控制器,属于MCS-51单芯片的一种,由英特尔(Intel)公司于1981年制造。Intel公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,如Atmel、飞利浦、深联华等公…

编辑距离问题

编辑距离 时间限制:1秒 内存限制:128M 题目描述 设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有三种: 1、删除一个字符; 2、插入一个字符&#xff1b…

Docker 学习笔记(八):Dockerfile实战篇,制作 Tomcat 镜像,发布镜像到 DockerHub 和阿里云

一、前言 记录时间 [2024-4-13] 系列文章简摘: Docker 学习笔记(六):挑战容器数据卷技术一文通,实战多个 MySQL 数据同步,能懂会用,初学必备 Docker 学习笔记(七)&#x…

(三)ffmpeg 解码流程以及函数介绍

一、视频解码流程 二、函数介绍 1.avformat_network_init 函数作用: 执行网络库的全局初始化。这是可选的,不再推荐。 此函数仅用于解决旧GnuTLS或OpenSSL库的线程安全问题。如果libavformat链接到这些库的较新版本,或者不使用它们&#…

hive窗口分析函数使用详解系列二之分组排序窗口函数

1.综述 我们讨论面试中各大厂的SQL算法面试题,往往核心考点就在于窗口函数,所以掌握好了窗口函数,面对SQL算法面试往往事半功倍。 已更新第一类聚合函数类,点击这里阅读 hive窗口函数聚合函数类 本节介绍Hive聚合函数中的第二类…

如何在seata中编写测试用例

title: 如何在seata中编写测试用例 keywords: [Seata, unit test, junit, mockito, assertj] description: 这篇文章主要介绍了Seata中已经使用的测试用例相关框架,以及社区建议开发者如何更好的编写测试用例 author: 汪忠祥 - trustdecision 技术专家 date: 2024-0…

SecureCRT通过USB-Servial ch340串口无法连接单片机

通过USB To TTL连线 STM32F103-PRO,烧制程序到单片机上,通过SecureCRT通过USB-Servial ch340串口无法链接RS232升USB转TTL连接正确 开发板连接正确 问题:SecureCRT串口连接没有反应 问题分析:1、检查ch340串口驱动 查看设备管…

TQZC706开发板教程:在ZC706上运行ADRV9371(vivado2018.3)

首先需要在github上下载两个文件,本例程用到的文件以及最终文件,我都会放在网盘里面,地址在本文的末尾,需要自行提取 在github上搜索hdl选择第一个-->选择版本-->我所使用的vivado是2018.3版本,所以这里我下载的…

软考 - 系统架构设计师 - 面向对象架构设计案例

问题1: 解决该题,用例和参与者要一起进行分析,首先看到用例 U1 和 U2 是 U3 的扩展,分析用例列表中的用例,可以分析出 U1 和 U2 是Underpaid transaction 和 Record lllegal use,顺序可以颠倒,…

分享 GoLand 2024.1 激活的方案,支持JetBrains全家桶

大家好,欢迎来到金榜探云手! GoLand 公司简介 JetBrains 是一家专注于开发工具的软件公司,总部位于捷克。他们以提供强大的集成开发环境(IDE)而闻名,如 IntelliJ IDEA、PyCharm、和 GoLand等。这些工具被广…

【QT学习】6.控件进阶,C与C++的强制类型转换,自定义控件,qt制作一个简易播放器

1.C与C的强制类型转换 2.自定义控件 要求:制作一个登录页面 1.使用控件拖拽一个页面出来 使用水平布局,垂直布局,网格布局 2.建立自定义控件 1.为项目添加自定义的类 自己写一个控件 2. (1)创建一个Group Box容器 &a…

springboot整合shiro之——拦截路径

简介Shiro: 1.基本功能 身份认证、授权、加密、会话管理 Web支持、缓存、多线程、测试、允许一个用户假装为另一个用户的身份进行访问、记住我 2. 执行过程 分为五步: Subject 用户主体:请求的发起者,即访问应用的用户 Security Manager 安…

xxl-job调度任务原理解析

xxljob可以对定时任务进行调度,现在看下定时任务调度的过程。XxlJobAdminConfig实现了InitializingBean接口,spring会调用afterPropertiesSet()进行初始化。大致有以下几个过程: admin服务端初始化 JobTriggerPoolHelper.java#toStart()方法…

1.Hexo安装和环境搭建引导

Hexo是一个依赖于一个名为nodejs的程序 因此安装它的方式在Mac和Windows上实际上是一样的 为了在电脑上安装Hexo 需要做两件事 nodejs,基本上是hexo依赖运行的JavaScript框架 Node.js — Run JavaScript Everywheregit,是一个程序,用来管理电…

Traefik和HAProxy全方位对比

在面对各种现代应用部署需求时,选择合适的反向代理和负载均衡器至关重要。Traefik🚦和HAProxy🛡️都是领先的解决方案,但它们各有特点,适用于不同的场景。本文将从多个维度全面对比Traefik🚦和HAProxy&…

【C++】类和对象②(类的默认成员函数:构造函数 | 析构函数)

🔥个人主页:Forcible Bug Maker 🔥专栏:C 目录 前言 类的6个默认成员函数 构造函数 概念 构造函数的特性及用法 析构函数 概念 析构函数的特性及用法 结语 前言 本篇主要内容:类的6个默认成员函数中的构造函…