SROI(Smart Region of Interest)特性支持自适应传输矩形的感兴趣区域(rectangular ROI)。SROI可以通过选择性地发送从原始图像中抠出的一个或多个较小的ROI,达到降低数据带宽的目的,这些ROI可以是人脸或车牌等。SROI在用于计算机视觉,机器视觉等场景中有很多用处,相关应用不仅在移动市场中广泛存在,同样存在于工业、监视和IoT等领域。
除了降低数据带宽,SROI还有以下好处:
- 高帧率/低延迟:数据量降低能让传感器的帧率增加,同时减少了应用处理器的工作量。
- 高分辨率:在不增加传输的数据量的条件下,通过捕获必要的信息,可以提取出高分辨率图像。
- 低功耗: 降低工作量能够节省系统功耗。
SROI帧格式概览
如上图所示,每个矩形的ROI区域,由位置(ROI矩形左上角像素的X,Y坐标)、大小(ROI矩形的高度和宽度,以像素为单位)以及其他元数据(metadata,比如ADC bit depth等)所定义。
每个ROI存在一个对应的ROI信息字段描述位置、大小和其他项。ROI信息(ROI Information)字段的值,要么是由集成到AP或图像传感器的检测函数所决定,要么是针对特定使用场景比如工厂自动化,被预先配置好了。检测ROI的方法和ROI的最大数量,超出了规范的讨论范围。ROI的最大数量由实现方案所定义,但在SROI发送数据前,应用处理器和图像传感器要对ROI的最大数量达成一致。
SROI帧使用三种数据包类型:
SROI短包:用来传输图像帧内的一个帧开始FS(Frame Start)包和一个帧结束FE(Frame End)包,图像帧的图像数据通过SROI长包传输。
如果需要使用行同步包(Line Synchronization packets),那么行开始LS(Line Start)和行结束LE(Line End)包也是被允许的SROI短包
SROI内嵌数据包(SROI Embedded Data Packet):用来传输ROI Infromation。如果在一帧图像数据中存在SROI Embedded Data Packet,那么它要放到图像数据帧的开始处。
SROI长包(不包含SOIR Embedded Data Packet):用来传输一帧图像的ROI图像数据。SROI Long Packet的Data Type,和发送图像帧用的正常的、非SROI图像行的数据类型一样(比如RAW10),但是也允许使用用户自定义的Data Type。对于SROI传输,并不要求一帧内的所有SROI长包拥有相同的长度。如果原始图像数据中的一行内存在多个ROI,那么所有ROI数据要合并为一个单独的SROI长包,这些区域之间不带blanking。如图中的A(0)和D(0)。
任何多个ROI重叠的图像区域,例如A(n - 2)和B(0),这些区域的数据只会传送一次(即不会传输多次)。因此在计算SROI长包Word Count字段的值的时候,每个重叠的图像区域只会计数一次。
术语SROI Packet是指任何SROI Short Packet, SROI Embedded Data Packet或SROI Long Packet。
SROI Embedded Data Packet传输
本小节说明图像传感器何时在图像帧中需要发送SROI Embedded Data Packet(SEDP)。
这个时间点依赖于应用处理器AP(Application Processor)是否清楚或不清楚所有需要的ROI信息。当图像传感器发送了SEDP的时候,AP侧检测SROI包的方法取决于AP和图像传感器达成一致所使用的SROI包选项(Option 1,Option 2)。
- 如果应用处理器已经知道了所有需要的ROI信息来接收SROI包,那么图像传感器不需要发送SEDP。但是图像传感器也可以选择发送SEDP。如果使用SROI Packet Option 1,SEDP发送后,AP通过检查Virtual Channel值来检测图像帧中的SROI包。
- 如果应用处理器还不知道所有想要的的ROI信息来接收SROI包,那么图像传感器会发送SEDP。AP所使用的检测图像帧中的SROI包的方法,根据所使用的SROI Packet Option而定:Option 1的话用Virtual Channel,Option 2的话用Data Type。
SROI Embedded Data Packet传输
SROI包检测选项
本小节详细描述用于区分图像帧中SROI包和非SROI包的两种选项。
在SROI传输发生前,应用处理器和图像传感器要对两种选项中使用哪一种达成一致。
SROI Packet Option 1
Option 1通过使用一个不同的虚拟通道(Virtual Channel)值来区分SROI和非SROI包。
对于Option 1来说,一个图像帧的所有SROI包使用相同的虚拟通道,这个SROI虚拟通道号和图像帧中的非SROI包的虚拟通道号不同。虚拟通道交织(Virtual Channel Interleaving)方法可以被使用。
一个包含了SROI包的图像帧可以使用数据类型交织(Data Type Interleaving),但只能在SROI长包中的Data Type和非SROI长包的Data Type不同的情况下使用(例如PDAF,Phase Detection Auto Focus)。
SROI Packet Option 2
Option 2通过Data Type来区分SROI包和非SROI包,也就是说通过检测图像帧中的SROI Embedded Data Packet是否存在来区分。
对于Option 2来说,一个图像帧的所有SROI包和非SROI包所使用的虚拟通道号相同。
一个包含了SROI包的图像帧可以使用数据类型交织(Data Type Interleaving),但只能在SROI长包中的Data Type和非SROI长包的Data Type不同的情况下使用(例如PDAF,Phase Detection Auto Focus)。
SROI使用场景
使用场景1:应用处理器进行ROI检测
如果AP负责检测ROI,或者存在预先设置好的ROI信息,那么图像传感器不需要传输SROI Embedded Data Packet。如下图所示:
这种场景下,AP检测到一个ROI(比如人脸),随后通过CCI发送ROI的位置和大小到图像传感器。图像传感器随后根据所要求的位置和大小,抠出对应的ROI,并且持续发送相同图像区域的SROI长包。
这种场景下,SOIR Embedded Data Packet不会被传送,因为没有必要:应用处理器已经知道了需要的全部ROI信息(例如ROI的位置和大小)来接收SROI包。
使用场景2:图像传感器进行ROI检测
如果图像传感器负责检测ROI,那么图像传感器需要发送SROI Embedded Data Packet。如下图所示:
AP命令图像传感器获得ROI(例如人脸)。图像传感器检测ROI并且将其抠出来,然后持续跟踪ROI。
这种场景下,SROI Embedded Data Packet会(必须)被发送,因为应用处理器不知道需要的所有ROI信息(例如位置和大小)来接收SROI包。
SROI Embedded Data Packet(SEDP)格式
对于SROI传输,内嵌数据格式(Embedded Data Format)是基于MIPI CCS规范中的定义而来。SROI帧的Embedded Data Format Code是0x0D(1字节)。
SROI Embedded Data Packet由多个ROI Infomation字段组成,每个字段包含了一块提取出的图像区域的ROI信息。每个ROI Information字段以ROI ID开始,随后是ROI Element Information字段,这个字段定义了Type ID子字段(ROI Element Information中)所要求的值。
在内嵌数据行的最后,End of Line会被插入到最后一个ROI Information字段结尾的后面。
SROI内嵌数据包格式(Embedded Data Packet Format)
ROI Element Infromation字段格式
ROI Element Type ID定义