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

【Camera】MTK平台的一些基础认识(待补充)

文章目录

  • 一、MTK平台软件框架
  • 二、MTK对图像的处理(raw-->jpeg)
  • 三、MTK ISP
  • 四、deepseek的一些详细补充
    • 4.1 P1 Node 的完整工作流程分解
    • 4.2总结与核心要点

一、MTK平台软件框架

MTK hal代码主要在:
vendor/mediatek/proprietary/hardware/mtkcam3/

APP
framwork
hal
kernel
hw

APP:用户
framework:(Android,谷歌写的框架)很多标准API
hal:平台实现(实现上层,例如:拍照等API)
kernel:mtk / qcom(底层硬件的实现,相关封装)

sensor(hw),kernel通过I2C操作sensor
真正操作硬件都在kernel层

sensor接收光信号转换为电信号,然后经过数模转换等一系列处理后,输出数字信号给ISP,ISP处理后成为人眼可以感知的有色彩和亮度信息的照片

Optic light
Array Real-nuit&analoy agin
correct& color enhance
scene
sensor
processing
image

二、MTK对图像的处理(raw–>jpeg)

MTK ISP对一张sensor输出的raw(图)数据到jpeg的大概流程,mtk有3个P1,1个P2。当多个数据流同时给P2处理时,P2采用time sharing的方式处理。

sensor
TG
P1
sensor
TG
P1
P2
JPEG
sensor
TG
P1

· P1接收通过sensor传来的raw数据,然后对raw数据进行处理,处理完之后再传给P2,P2会将raw转化为YUV。在YUV的域进行一些降噪、亮度提升方面的处理,处理完之后传给JPEG编码器,JPEG编码压缩…

· P2对不同的数据进行分时处理

(Timing Generate):从sensor获取数据,并送给ISP处理
· TG相当于一个硬件模块,用于接收sensor的输出数据,sensor通过mipi传给平台端,TG把通过mipi接收到的数据转换成下一层可以处理的data

· P1+P2构成了MTK平台的ISP
P1工作一个还是两个,取决于当前的负载能力

三、MTK ISP

MTK ISP对一张sensor输出的raw数据的完整处理流程,这是MTK平台ISP主要的涉及图像处理的硬件模块

DGN,LSC,WB
Pass1
OBC
BPC
DigitalGain
LTM
RR2
DRAM
3AStaus
Pass2
DM
NR0
CCM
NR1
LCE
GMA
DCE
CSC
EE
NR2
COLOR
3DNR
MFNR
LPCNR
CA-LTM
ClearZoom
HFG
DRAM

P2在RGB域进行一些色彩处理,在YUV域进行多帧降噪、NR等
P1–>P2,DRAM到一个buffer,P2再从内存中取

· MTK平台一帧预览的request经过底层处理然后返回给APP的流程。
其ISP主要分成Pass1、Pass2,其中P1Node可以理解为对应Pass1,P2 StreamingNode可以理解为对应Pass2,只是这里用于吹preview数据流

· 每一个result,每一个request下发之后都会带有一个buffer,底层把这个buffer地址,把我们处理好的数据赋值给它,相当于copy过去,拿到数据之后,利用buffer中的数据进行显示

在这里插入图片描述

四、deepseek的一些详细补充

Q:MTK camera P1node在图像处理中扮演关键角色,它接收request并利用hal3A进行预设处理。在上一帧3A回调完成后,设置新的3A参数,并通过Camioenque与dequebuffer传递stream。Request在3A中经历preset、3A设置、camio操作,最终将imagebuffer与3A信息送往下一级节点。这一过程帮我详细讲讲

P1 Node: 位于相机Hal3 Pipeline中的第一个主要图像处理节点。它直接与相机传感器(Sensor)和图像信号处理器(ISP)交互,负责将原始的光信号转换为数字图像信号,并进行最基础的图像处理。

Request: 一个拍照请求,包含了输出图像的所有配置信息(如图像尺寸、格式、数量等)。一个Request通常会对应多个Buffer。

Hal3A: 一个统称,代表自动对焦(AF)、自动曝光(AE)和自动白平衡(AWB)算法的框架。它负责分析图像数据,并实时控制Sensor和ISP以优化图像质量。

CamIO: 一个与底层硬件(特别是ISP)进行数据交互(入队/出队Buffer)的通道或接口。

4.1 P1 Node 的完整工作流程分解

整个流程可以看作一个持续运行的、流水线化的循环。我们以“上一帧3A回调完成”作为起点,来追踪一个Request在P1 Node中的完整生命周期。

阶段一:预备与参数设置(上一帧结束后 -> 新Request开始)
1.上一帧3A回调完成:

当P1 Node处理完一帧数据后,该帧的图像数据会被发送给3A算法库进行计算。

3A算法库完成分析(例如:判断当前场景是太亮还是太暗,主体是否失焦)后,会通过一个回调函数(Callback) 将计算结果(例如:建议的曝光时间、传感器增益、对焦马达位置、白平衡增益)通知给P1 Node。

2.设置新的3A参数:

P1 Node接收到来自3A算法的新参数后,并不会立即应用到当前正在处理的帧,而是会将这些参数“预定”给下一个即将到来的Request。

这是为了确保参数与帧的严格对应。每个Request所使用的3A参数,都是基于上一帧或更早帧的图像分析结果得出的,这样就避免了使用正在计算的、不稳定的参数。

阶段二:Request流入与处理启动
3.接收Request:

框架(Framework)向Pipeline发送一个新的Request,这个Request最终到达P1 Node。该Request包含了Hal3A模块预定的新参数。

4.Preset处理:

“Preset”可以理解为P1 Node对一帧图像进行的基础且固定的图像处理流程。这通常在ISP的硬件流水线上完成,包括但不限于:

黑电平校正: 消除Sensor暗电流的影响。

镜头阴影校正: 补偿图像边缘的亮度衰减。

坏点校正: 修复Sensor上的失效像素。

去马赛克: 将Bayer格式的原始RAW数据转换为完整的RGB图像。

色彩校正矩阵: 调整颜色准确性。

Gamma校正: 对图像亮度进行非线性调整。

“Preset”确保了从Sensor出来的原始数据,首先被转换成一个可用的、经过基础优化的图像。

阶段三:硬件交互与数据流转
5.CamIO操作(Enqueue/Dequeue Buffer):

这是P1 Node与ISP硬件之间数据传递的核心。

Enqueue: P1 Node从框架申请到空的图像Buffer(内存块),然后将这些Buffer放入(Enqueue) 到CamIO的输入队列中。同时,它会将本Request的配置(包括在阶段一设置的新3A参数)传递给ISP。

硬件处理: ISP根据配置,控制Sensor开始曝光,将光信号转换为电信号,然后按照“Preset”流程处理数据,最终将处理完的图像数据填充到之前Enqueue的Buffer中。

Dequeue: 当ISP处理完成一帧后,P1 Node会从CamIO的输出队列中取出(Dequeue) 已经被填满图像数据的Buffer。

阶段四:数据分发与流程闭环
6.送往下一级节点:

此时,P1 Node已经拥有了处理完成的Image Buffer和与本帧对应的3A信息。

Image Buffer: 通常是YUV或RAW格式的数据,会被P1 Node发送给Pipeline中的下一个节点,例如:

P2 Node: 进行更高级的算法处理,如降噪、锐化、HDR融合等。

或者直接送给JPEG编码器生成照片。

3A信息: P1 Node会同时将这帧Image Buffer发送给3A算法库,开启新一轮的3A计算,为下一个Request提供参数依据。

4.2总结与核心要点

承上启下的关键角色: P1 Node是连接物理传感器(Sensor)和上层图像算法(3A)及后续处理节点(P2等)的桥梁。它负责产出所有后续处理所依赖的“原料”。

流水线与并行处理: 整个过程是高度流水线化的。当ISP正在处理第N帧时,3A算法可能在分析第N-1帧,而P1 Node同时在为第N+1帧准备参数和Buffer。这种并行处理是实现高帧率拍摄的关键。

3A的延迟性: 注意,应用到第N帧的3A参数,是基于第N-1帧(或更早) 的图像分析结果。这是一个固有的、单帧的延迟。3A算法的鲁棒性必须能够处理这种延迟。

数据同步: CamIO enqueue/dequeue机制确保了硬件(ISP)和软件(P1 Node)之间高效、低延迟的数据同步,避免了数据竞争和内存拷贝开销。

http://www.dtcms.com/a/445788.html

相关文章:

  • Go基础:用Go语言操作MySQL详解
  • 数字短链接生成郑州seo优化
  • 网站排版尺寸安装好的字体怎么用wordpress
  • 如何利用企业微信SCRM打造精准客户营销策略?
  • AI 编程 Trae 如何去 AI 味(以用户管理系统为例子)
  • 【National Treasure2】
  • 【LLM4EDA】: Part 9--LLM4EDA的优化与建模
  • 用parser_tools插件来解析SQL语句
  • 湖北住房和城乡建设厅网站phpmysql做网站
  • 《量子计算》学习笔记:量子计算的基本定义(续)
  • 哈尔滨网站建设价位上海有名的猎头公司
  • 手写MyBatis第94弹:完整架构回顾与核心技术深度解析
  • 汽车电子Autosar架构BSW层学习路线·附录章节
  • 织梦 网站设计做网站竟然不知道cms
  • Linex操作系统-Shell脚本(六)
  • 2025年ASOC SCI2区TOP,基于动态模糊系统的改进灰狼算法FGWO,深度解析+性能实测
  • Go基础:输入与输出格式化详解
  • Go语言:数据压缩与解压详解
  • Odoo 前端控制器:构建无缝集成的网站页面
  • Go基础:json文件处理详解(标准库`encoding/json`)
  • 网站页头尺寸网站建设实物实训目的
  • RegNet:高效可扩展网络
  • 软考 系统架构设计师系列知识点之杂项集萃(169)
  • 大数据毕业设计选题推荐-基于大数据的人口普查收入数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • 实验室网站制作数据交易网站源码
  • 【Kubernetes】(二十)Gateway
  • 爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南——企业级实时数据闭环构建
  • 桂林哪里可以做网站wordpress前台不显示
  • 模拟退火粒子群优化算法(SA-PSO):原理、应用与展望
  • 不用每次都改 `easysearch.yml` 也能改启动参数 —— 用 Docker 环境变量搞定一切