【MTK Camera】简介与概述

Camera 硬件介绍

1.1  图像传感器的类型(Image Sensor)

a) YUV sensor

  • 输出数据(data)格式为YUV,即图像的明亮度、色度、浓度。(缩写与英文单词未对应)
  • 图像的效果处理使用Sensor内部的ISP
  • BB接收YUV格式的data后只进行格式的转换,
  • 效果方面不进行处理,由于Sensor内部的ISP处理能力有限,且YUV Sensor的数据量比较大
  • YUV422的格式1pixel2byte),一般Size都比较小,
  • 常见的YUV sensor都是5M以下

b) Raw Sensor

  •  Raw Sensor输出的Data格式为Raw
  • 图像的效果处理使用BB端的ISP
  • BB接收Raw data后进行一系列的图像处理(OBShadingAWBGammaEEANR等),效果方面由BB端控制,
  • 需要针对不同的模组进行效果调试,Raw sensor 是目前的主流
  • 数据量比YUV Sensor小(RAW10 格式的sensor 1个pixel 10个bit)使用平台ISP处理,能支持较大的size

1.2  硬件接口

简单说来,Camera的接口分为并行和串行两种方式,而MTK平台目前主要支持的串行方式为mipi接口

Parallel接口和mipi接口的介绍可以参考下图

 【MTK Camera】简介与概述_第1张图片【MTK Camera】简介与概述_第2张图片

1.3 常见基本概念

  • a)       三路电压
  • camera包含的三路电压为模拟电压(VCAMA),数字电压(VCAMD),IO口电压(VCAMIO
  • b)       I2C信号
  • BBSensor端通过I2C来通信(读写寄存器),包括SCLI2C Clock SDAI2C Data)信号
  • c)       mipi几条lane
  • mipi data是成对的差分信号,MIPI_RDNMIPI_RDP,有几对这样的pin脚,则说明是几条lane,同一颗sensor由于register setting不同,输出的信号有可能是2 lane或者4lane
  • d)       parallel高低八位
  • Parallel接口一般Data10pin,分别叫做Data0~Data9Parallel sensor输出的data信号是8pin时,这八根pin接到的是Data0~Data7还是Data2~Data9,需要配置正确,叫做接到高八位或者低八位,接错了可能产生如下现象
  • 【MTK Camera】简介与概述_第3张图片
  • e)       Data Format
  • Sensor输出的数据格式,对于YUV Sensor来说,Data Fomat一般有YUYVYVYUUYVY等,配置不对可能会导致颜色和亮度错掉,
  • 【MTK Camera】简介与概述_第4张图片
  • 对于Raw Sensor来说,Data Format就是First Pixel的颜色,分为RGrGbB,配置不对会导致颜色错误
  • f)        MCLK
  • BB提供给Sensor的外部clock
  • g)       PCLK
  • Parallel接口的Sensor输出的clock,该clock变化一次,data更新一次
  • h)       mipi 信号
  • mipi信号包括mipi clockmipi data,该信号是高速信号,用来传输mipi数据包

相机软件架构

Camera软件架构

主要包含三个部分的介绍:

1)Android Camera 架构:Android系统原生架构简要介绍.

2)Mediatek Android Camera架构: 简要介绍Mediatek平台在Android系统基础上Camera 的架构.

3)Camera data path: 介绍在平台端Camera的数据流.

1.下图为Android Camera 架构

【MTK Camera】简介与概述_第5张图片

Camera根据Android 架构从上至下可分为

    1)Applications: 最上层的应用,编译后生成Camera  APK

    2)Application Framework: 主要为Applications提供API;

    3)JNI: 使Application FrameworkLibraries可交互;

    4)Libraries: 包括Camera FrameworkCamera Service(camera servicecamera client);

    5)HAL硬件抽象层用来链接driver Camera Service;

    6)Kernel: image sensor driver的实作.

其中2)~4)的部分基本为Android原生的架构和code,Mediatek会有一些拓展,而HAL和Kernel层为Mediatek主要实作的部分,Camera APK是Mediatek基于Android 原生Camera APK修改的应用.

 

2.下图为MT6589/82/72/92/88平台基于Android架构上Cameraapplicationkernel层详细的架构.

【MTK Camera】简介与概述_第6张图片

1)蓝色部分主要由Java实现(偏向应用层)、黄色为JNI实现(C++,衔接Java层和Native) 绿色由C++实现(通常称为Native),而枣红色为C实现(Kernel ).

2) HAL librariesMediatekHAL层的实现,主要分Camera HALCamera Core两大部分.Camera HAL衔接Camera Service并响应它的需求,实现各个featurescenario; Camera Core提供平台一些通用的数据流控制接口.

 

3.最后这部分为Camera的数据流简要介绍

【MTK Camera】简介与概述_第7张图片

说明:

1) TG(Timing Generate):从sensor获取数据,并送给ISP处理.

2) Platform Data Processor: 包括平台在后端对图像数据进行resize、rotate、flip、format convert等处理.它可以同时有两个buffer输出.

  •    当normal preview时,port1输出给display,port2输出给face detection或者app preview callback
  •    当normal capture时,port1输出大图给jpeg encoder,port2输出小图给回显和thumbnail encode.
  •    当video record时,    port1输出给display,port2输出给video encoder.

 


参考博文 

  1. 摄像头的YUV
  2. Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别

你可能感兴趣的:(计算机视觉相关)