in sensor zoom 片上数码变焦简介

1.原理和优势:

首先,让我们回顾一下传统的数码变焦。传统方法是在镜组等效焦距不变的情况下,通过裁剪画面中央的像素来实现“变焦”。这种方法的效果其实与拍摄全像素图像后进行裁剪相同,通常会导致图像质量下降。在早期实现中,传感器通常会输出全像素图像,然后在后期进行裁剪,这显然对算力是一种浪费。

in sensor zoom是一种在图像传感器级别实现的数码变焦技术,它通过直接在传感器上裁切和处理像素数据,而不是在后期的图像信号处理阶段进行。

in sensor zoom的出现改变了这种情况。在用户进行数码变焦时,传感器只读取中央部分的像素数据,而不是全像素读取。这种方法不仅提高了处理效率,还减少了不必要的数据传输和处理,从而降低了功耗。

对于高分辨率传感器,如5000万像素的传感器,理想的数码变焦应该基于全像素裁剪,而不是低分辨率(binning)模式的裁剪。然而,许多手机仍然基于低分辨率模式进行裁剪,这主要是因为传感器不支持片上remosaic。

软件remosaic:

1.

2.

硬件remosaic:

in-sensor zoom的优势在于其高效性和节能性。它允许传感器只读取必要的像素区域,从而减少数据处理量,提高处理速度。此外,in sensor zoom还可以与其他算法结合,进一步增强图像细节和清晰度。这使得在某些情况下,数码变焦的图像质量甚至优于全像素输出再裁切。

缺点:

1.fullsize的setting暗态下噪点比binning size严重的多。

2.由于FMC的导入,冷、热启动性能会受到寄存器增多的影响,启动时间增加100ms+。

3.ISZ无法叠加预览类有帧延迟的算法,这会导致ISZ重新计算的crop,应用在算法延迟输出的图像上,导致跳帧现象。目前已知美颜和视频夜景存在帧延迟。

2.实现过程:

in sensor zoom的实现过程是seamless switch到sensor的full crop setting(full size的setting直接在sensor端进行了crop)达到画质约等于同等倍率的光学变焦镜头的效果。

但由于是非binning模式,故暗态下噪点会很明显。

具体设计流程:

  1. 初始化阶段:

    • 在 PipelineModelImpl::querySeamlessSwitchStaticInfo 函数中,系统首先确定 isSeamlessSwitchSupported 和 seamlessSwitchSensorModes 的值。这些值决定了平台是否支持无缝切换。
  2. 配置评估阶段:

    • evaluateSeamlessSwitchConfiguration 函数根据前面确定的值判断平台的无缝切换支持情况。通过 SENSOR_CMD_GET_SENSOR_CROP_WIN_INFO 获取相关模式的信息,判断是 binning size、crop scene 还是 full scene,并填充 SeamlessSwitchFeatureSetting 数据。
  3. 默认设置阶段:

    • makePolicy_Configuration_SensorSetting_4Cell 函数中设定默认的传感器设置。
  4. 硬件设置阶段:

    • 在 configP1HwSetting 函数中,根据 SeamlessSwitchFeatureSetting 的数据决定 IMGO 的大小。根据不同的场景(fullScene 和 cropScene),申请或使用不同的 buffer。
  5. 管道上下文准备阶段:

    • PipelineContextBuilder.cpp 中准备提供给 P1Node 的配置参数,特别是与无缝切换相关的设置,然后传递给 P1Node。
  6. 传感器配置阶段:

    • 在 P1NodeImp::sensorConfig 中,根据无缝切换的情况配置传感器。
  7. 特性设置评估阶段:

    • FeatureSettingPolicy::evaluateSeamlessSwitchSetting 根据当前的 zoom ratio 判断是否需要进行 ISZ 切换,并更新相关的元数据。
  8. 元数据更新阶段:

    • 执行 updateSeamlessSwitchRelatedMetadata 和 updateSeamlessSwitchCrop 函数,更新 P2 crop 相关的元数据。
  9. 动作创建和队列运行阶段:

    • runQueue 调用 createAction,根据应用和 HAL 的元数据更新变量,然后执行 preConfigPipe 完成管道配置。
  10. 元数据解析阶段:

    • 在 parseMeta 中获取无缝切换请求的值,并根据条件更新相关参数。
  11. 请求设置阶段:

    • setRequest 函数中发送无缝切换触发命令给 Hal3A,更新 AE 设定。
  12. 传感器模式设置阶段:

    • setNormal 函数中根据条件设置目标传感器模式,并暂停和恢复相关的管道。
  13. 辅助管理和线程处理阶段:

    • AFAssistMgr::sensrModeFastSwitch 异步线程重新配置 PD。
  14. 3A处理完成阶段:

    • 在 3A 线程完成后,hardwareOps_enque 调用 seamlessCheck 函数,确保所有操作同步完成后,进行传感器设置切换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值