IPA

1. 定义

Image Processing Algorithm,图像处理算法,看名字并不能很清楚的知道其在libcamera中的角色和作用。

实际上,每个ISP只有一个pipelineHandler,也只有一个IPA模块,每个IPA模块管理者多个Algorithm(如AE,AF等)。

// awb.cpp
REGISTER_IPA_ALGORITHM(Awb, "Awb")  // 工厂模式创建awb实例,并注册到IPA的algorithms_数组中

// af.cpp
REGISTER_IPA_ALGORITHM(Lsc, "Lsc")

...

// 使用algorithm
void IPAIPU3::processStats(const uint32_t frame,
			   [[maybe_unused]] const int64_t frameTimestamp,
			   const uint32_t bufferId, const ControlList &sensorControls)
{
    ...
	for (auto const &algo : algorithms())
		algo->process(context_, frame, frameContext, stats, metadata);
    ...
}

 

2. 角色/作用

libcamera中,IPA是算法大脑。其从PipelineHandler(管理的硬件)中接收3A统计值信息,计算和处理得到控制信息,并通过PipelineHandler下发给Sensor/ISP。

[Sensor + Lens + ISP] --> (捕获图像帧 + 生成统计信息) --> [PipelineHandler]
       ^                                                          |
       |                                                          v
       |                                                  [IPA Module]
       |                                                          |
       |                                                          | (计算控制参数)
       |                                                          v
       ------------------------ (下发控制参数) <-------------------

 

3. 对外关系

和ISP、PipelineHandler 均一一对应;

如果系统中有多个ISP,则IpaManager就会创建多个IPAModule;

每个IPA Module可以包括多个algorithm。

CameraManager <-> IpaManager

  ISP0 <-> PipelineHandler0 <-> IPA0

  ISP1 <-> PipelineHandler1 <-> IPA1

  ...

 

4. 改进

为了打破开源约束,IPA以库的形式被libcamera调用(也可独立进程),每个IPA包括多个算法。

实际项目中,算法常常以库的形式运行。因此,如果把IPA和算法库对应起来,可以更好的满足实际项目的需求。

 

posted @ 2025-09-17 15:21  moonのsun  阅读(13)  评论(0)    收藏  举报