专利名称:基于可编程视觉芯片的视觉图像处理系统的制作方法
技术领域:
本发明涉及可编程视觉芯片及图像处理技术领域,尤其涉及一种基于可编程视觉芯片的视觉图像处理系统,具有高速度、高集成、低功耗、低成本的优势,可应用于多种嵌入式高速实时视觉图像处理系统,实现包括高速目标追踪、自然人机交互、环境监控、智能交通、机器人视觉等在内的各种智能视觉图像应用。
背景技术:
传统的视觉图像处理系统包括分立的摄像头和通用处理器(或数字信号处理器(DSP)),摄像头使用图像传感器获取图像,并将获取的大量原始图像数据串行传送到通用处理器或DSP中进行处理,由于是串行传送,所以存在严重的带宽限制。另一方面,在通用处理器或DSP中利用软件对图像进行处理往往也是逐个像素串行处理的,存在串行处理的 瓶颈。由于串行传输和串行处理的限制,传统视觉图像系统一般只能达到30帧/秒的速度,远远无法满足高速实时性需求,比如某些工业控制系统中经常要求1000帧/秒的速度。而视觉芯片的出现有效的满足了高速实时性需求,该视觉芯片模仿人类视觉系统的原理,将图像传感器和图像处理电路集成在同一块芯片内,图像传感器获取的图像数据被并行传送到图像处理电路中,而图像处理电路本身在硬件上是采用像素级大规模并行体系架构,最终图像处理电路输出少量图像特征数据或分析识别结果,从而很好的克服了传统视觉图像处理系统中数据串行传输和串行处理的瓶颈,实时性得到大幅提升,不少采用视觉芯片的系统可以达到1000帧/秒以上的处理速度。视觉芯片可分为专用视觉芯片和可编程视觉芯片,由于后者可通过编程灵活实现多种应用,应对复杂多变的实际环境,因此具有更大的实用价值。但是,目前国内外对可编程视觉芯片体系架构的研究存在严重不足,表现在(I)每一个像素单元都包含感光元、读出电路和处理电路,芯片面积较大,极大地限制了分辨率和填充率,原始图像质量差;而且由于感光元和读出电路是模拟电路,因此处理电路也往往使用模拟电路,导致图像处理的可靠性和灵活性较较差。(2)这些像素单元排列成二维阵列,工作在单指令多数据(SIMD)模式下,可实现全像素并行图像采集及局域处理,但无法实现快速灵活的广域处理;(3)上述工作在SMD模式下的可编程视觉芯片体系架构支持低级图像处理和部分中级图像处理,但缺乏高级图像处理功能,尤其缺乏类似人脑神经的简单直观的快速特征识别能力,因此必须借助外部通用处理器才能组成完整的视觉图像系统,这样就限制了视觉芯片在某些对体积、功耗和成本有严格要求的嵌入式场合的应用。
发明内容
(一 )要解决的技术问题针对以上可编程视觉芯片存在的问题,本发明提供了一种像素单元和处理电路分离的、基于多级并行数字处理的、且带有片上人工神经网络的、基于可编程视觉芯片的视觉图像处理系统,以达到较高的分辨率和填充率,结合局域处理和广域处理功能,支持灵活快速的低、中、高级图像处理和片上反馈控制,实现功能完整的片上视觉系统,通过多种典型的高速智能视觉应用算法,其处理速度可达到1000帧/秒。(二)技术方案为达到上述目的,本发明提供了一种基于可编程视觉芯片的视觉图像处理系统,包括
图像传感器,用于高速采集原始图像数据,并将采集的该原始图像数据并行传输到多级并行数字处理电路;以及多级并行数字处理电路,用于对接收自图像传感器的该原始图像数据进行快速并行处理,输出处理结果。上述方案中,所述图像传感器包括NXN像素阵列1,用于高速采集原始图像数据,并将采集的该原始图像数据输出给NX I行并行模拟预处理阵列3,其中N为自然数;NXl行并行模拟预处理阵列3,用于去除该原始图像数据中的固定噪声,提高该原始图像数据的动态范围,并输出给NX I行并行模数转换阵列4 ;NXl行并行模数转换阵列4,用于将每一列模拟像素数据转换为高精度数字像素数据,并输出给输出像素选择模块5 ;输出像素选择模块5,用于并行接收所述NX I行并行模数转换阵列4的N个数字像素数据作为输入,并从中选择M个像素数据作为该图像传感器的输出,实现对像素行的选择,其中M为自然数且M < N;以及图像传感器控制模块6,用于根据内部的参数寄存器控制NXN像素阵列1、NX I行并行模拟预处理阵列3、NX I行并行模数转换阵列4和输出像素选择模块5的工作时序,实现对该图像传感器的动态控制。上述方案中,所述NXN像素阵列I包含NXN个二维排列的像素单元2,其中每个像素单元2均包含感光元和相应的读出电路;所述NX I行并行模拟预处理阵列3包含N个一维排列的模拟预处理单元,其中每个模拟预处理单元均包含用于去除固定噪声的相关双采样(CDS)电路和用于提高动态范围的可控增益放大电路(PGA);所述NX I行并行模数转换阵列4包含N个一维排列的模数转换单元;所述输出像素选择模块5配合图像传感器控制模块6对像素行列的选择,实现对该图像传感器灵活的区域处理和/或亚采样处理。上述方案中,所述图像传感器控制模块6中的参数寄存器,其中的数据能够通过片上总线接口从模块外部进行读写,实现对该图像传感器的动态控制。上述方案中,所述图像传感器控制模块6控制所述NXN像素阵列I滚动曝光,并且每次选择其中一列以行并行方式输出N个模拟像素值至所述NX I行并行模拟预处理阵列3,通过所述NX I行并行模拟预处理阵列3进行噪声去除和动态范围提升,然后进入所述NX I行并行模数转换阵列4并行转换为高精度数字像素数据,最后通过所述输出像素选择模块5输出M个数字像素数据作为该图像传感器的最终输出,提供给所述多级并行数字处理电路。上述方案中,所述多级并行数字处理电路包括MXM像素级并行处理单元阵列7,用于对接收自图像传感器的数字像素数据进行适合像素级并行的局域线性处理,并将处理结果输出给MX I行处理单元阵列9,其中M为自然数且M < N ;MXl行处理单元阵列9,用于加速低、中级图像中适合以行并行方式完成的非线性处理和广域处理,实现对图像特征的提取;处理阵列控制模块11,用于从其内部变长单指令多数据(SMD)指令存储器中取出控制所述MXM像素级并行处理单元阵列7和所述MX I行处理单元阵列9的控制指令,并译码输出到所述MXM像素级并行处理单元阵列7和所述MX I行处理单元阵列9 ;片上可配置人工神经网络12,用于完成高级图像处理中的特征识别或特征压缩任务,其输入为所述MX I行处理单元阵列9提取的特征向量数据,输出为特征识别的结果;精简指令处理器双核子系统13,用于实现线程级并行的处理,进行高级图像处理中除正常特征识别以外的不规则处理以及对整个系统的控制; 随机/顺序混合I/O存储器14 ;系统线程标志15 ;片上总线16,用于将来自所述精简指令处理器双核子系统13的读写控制信号和逻辑地址信息映射到其他各个总线从器件模块所需的选通使能信号和物理地址信息,以驱动这些从器件模块完成各种操作。上述方案中,所述MXM像素级并行处理单元阵列7包含MXM个二维排列的像素级并行处理单元PE8,所有像素级并行处理单元PE8工作在单指令多数据(SMD)模式下,接受相同的PE阵列控制指令,执行相同的操作,但是所操作的数据来自各个单元本地的存储器。上述方案中,所述每个像素级并行处理单元PE8对应于一帧中所述NXN像素阵列I的一个或多个图像像素,当每个像素级并行处理单元PE8对应一个像素时,由于M < N,整个处理单元阵列对应于所述NXN像素阵列I的一个MXM的子区域图像或是整个所述NXN像素阵列I的MXM亚采样图像,此时所述MXM像素级并行处理单元阵列7以全并行方式对一帧分辨率为MXM子图像或亚采样图像进行处理;当每个像素级并行处理单元PE8对应多个像素时,整个所述MXM像素级并行处理单元阵列7对应于整个NXN像素阵列I或是NXN像素阵列I中大于MXM的子区域,此时是以部分像素并行的方式对整帧图像进行处理。上述方案中,该视觉图像处理系统是通过图像传感器控制模块6动态切换像素级并行处理单元PE8与图像像素之间的对应方式,由此实现多分辨率视觉图像处理。上述方案中,所述像素级并行处理单元PE8用于完成基本的I比特求和、求反、求与、求或等算术逻辑操作,低中级图像处理中的多比特算术逻辑运算是通过分解为上述基本I比特运算在所述像素级并行处理单元PE8上实现的;所述像素级并行处理单元PE8的数据可与其上、下、左、右的邻近处理单元进行交互传递,通过多次的邻近处理单元数据传递,每个所述像素级并行处理单元PE8可与任意位置的其他处理单元产生交互。上述方案中,所述像素级并行处理单元PE8包括第一操作数选择器31、第二操作数选择器32、1比特算术逻辑运算单元33、I比特临时数据寄存器34和位平面随机存储器35,其中第一操作数选择器31根据所述处理阵列控制模块11输出的控制指令从本单元或邻近处理单元的位平面存储器35的输出中选择一个作为I比特算术逻辑运算单元33的第一操作数;第二操作数选择器32根据所述处理阵列控制模块11输出的控制指令从本单元的I比特临时寄存器34的输出或I比特立即数O和I中选择一个作为I比特算术逻辑运算单元33的第二操作数。上述方案中,所述I比特算术逻辑运算单元33包括一个全加器、一个非门、一个二输入与门、一个二输入或门、一个进位寄存器以及一个输出结果选择器;其中,所述进位寄存器用于寄存加法运算产生的进位结果,该进位结果用于多比特算术运算,所述进位寄存器能够被所述处理阵列控制模块11输出的控制指令清零;所述输出结果选择器根据所述处理阵列控制模块11输出的控制指令从全加器、非门、与门、或门计算的输出中选择一个作为I比特算术逻辑运算单元33的结果。上述方案中,所述位平面随机存储器35是数据位宽为I比特、支持同时读写的小容量随机存储器,其读写地址来自所述处理阵列控制模块11输出的控制指令,其写入数据来自I比特算术逻辑运算单元33的输出,其读出数据作为本单元或邻近处理单元的第一操作数选择器的输入之一。 上述方案中,所述处理阵列控制模块11输出的控制指令能够选择将I比特算术逻辑运算单元33的每次输出结果数据写入到所述位平面随机存储器35还是所述I比特临时寄存器34,每次必须且只能写入其中之一。上述方案中,所述MX I行处理单元阵列9包含M个一维排列的行并行处理单元RP10,所有行并行处理单元RP 10工作在单指令多数据(SMD)模式下,接受相同的RP阵列控制指令,执行相同的操作,但是所操作的数据来自各个单元本地的寄存器;所述每个行并行处理单元RPlO用于完成k-bit的算术操作,包括加法、减法、求绝对值、数据移位、以及比较大小,大于k-bit的数据操作能够被分解为若干个小于k-bit的操作串行来完成。上述方案中,所述每个行并行处理单元RP 10对应于所述MXM像素级并行处理单元阵列7中同一行的所有像素级并行处理单元PE 8,该行每个像素级并行处理单元PE 8的数据能够逐个进入行并行处理单元RP 10被进一步操作。上述方案中,所述每个行并行处理单元RP均能够与其上下方的行并行处理单元RP进行数据交互,其中有些行并行处理单元RP还能够与相隔其上下方S行的行并行处理单元RP进行数据交互,这些行并行处理单元RP被称为跳跃行处理单元,除这些跳跃行处理单元之外的行并行处理单元RP被称为普通行处理单元;整个行处理单元阵列中,从第一行开始,每隔S行放置一个跳跃行处理单元,其余各行均放置普通行处理单元;其中S为自然数。上述方案中,所述跳跃行处理单元能够远距离直接进行数据交互,不需逐个通过所有行并行处理单元RP 10进行数据交互,能够实现快速灵活的行间广域处理。上述方案中,所述行并行处理单元RP包括一个k-bit缓冲移位寄存器41,用于实现与所述MXM像素级并行处理单元阵列7的串并/并串数据转换,并作为阵列外部片上总线对所述MX I行处理单元阵列9的数据访问接口,同时可被其所属RP单元的寄存器文件的读出数据所更新;一个k-bit第一操作数选择器42,用于根据所述处理阵列控制模块11输出的控制指令从本单元或邻近行处理单元的寄存器文件输出、本单元缓冲移位寄存器的输出中选择一个作为所述k-bit算术运算单元44的第一操作数;一个k-bit第二操作数选择器43,用于根据所述处理阵列控制模块11输出的控制指令从本单元临时寄存器输出或来自阵列控制指令的立即数中选择一个作为所述k-bit算术运算单元44的第二操作数;一个k-bit算术运算单元44,用于执行广域处理和非线性处理,该广域处理包括k-bit加法、减法、求绝对值、数据移位和大小比较;一个条件选择器45,用于根据所述处理阵列控制模块11输出的控制指令从本单元所在行的像素级并行处理单元PE 8输出的Ibit数据、来自k-bit算术运算单元44的条件标志寄存器以及Ibit常数I中选择一个作为条件运算使能信号,该信号将使能所述k-bit三态缓冲门46 ;—个k-bit三态缓冲门46,用于接收k-bit算术运算单元44的输出结果,在条件选择器45所输出条件使能信号的控制下决定是否将本次操作的数据写入k-bit临时寄存器47或k-bit位宽的寄存器文件48,以实现条件运算;以及一个k-bit临时寄存器47和一个k-bit位宽的寄存器文件48。上述方案中,所述k-bit缓冲移位寄存器41能够在阵列控制指令下按比特进行左右移位,以实现与所述MXM像素级并行处理单元阵列7的串并/并串数据转换;还能够在阵列外部信号控制下,与所述行并行处理单元RP 10上下方单元中的缓冲移位寄存器所有比特并行上下移位,以实现阵列外部片上总线对所述MX I行处理单元阵列9的数据访问;该k-bit缓冲移位寄存器41的输出作为k-bit第一操作数选择器42的输入之一,其值也能被寄存器文件的读出数据所更新。上述方案中,所述k-bit第一操作数选择器42在根据控制指令从本单元或邻近行处理单元的寄存器文件输出、本单元缓冲移位寄存器的输出中选择时,如果本单元为跳跃行处理单元,则其选择范围还包括与其相隔S行的跳跃行处理单元。上述方案中,所述k-bit算术运算单元44还根据每次运算结果更新其内部的“进位/借位”以及“结果为零”标志寄存器,便于大于k-bit的数据运算以及条件运算;其标志寄存器能够被处理阵列控制模块输出的控制指令清零。上述方案中,所述k-bit位宽的寄存器文件48为数据位宽k-bit、支持同时读写的小容量随机存储器或寄存器堆,其读写地址来自所述处理阵列控制模块11输出的控制指令,其写入数据来自k-bit三态缓冲门46的输出,其读出数据作为本单元或邻近行处理单元的k-bit第一操作数选择器42的输入之一;如果本单元为跳跃行处理单元,则还包括与其相隔S行的跳跃行处理单元。上述方案中,所述处理阵列控制模块11输出的控制指令用于选择将所述k-bit算术运算单元44的每次输出结果数据写入到k-bit临时寄存器47或k-bit位宽的寄存器文件48,当所述k-bit三态缓冲门46被使能时必须且只能写入其中之一。上述方案中,所述条件选择器45能够直接来自像素级并行处理单元PE8的Ibit数据作为条件使能信号,不需经过基于所述k-bit缓冲移位寄存器41的串并转换,有利于实现灵活快速的行内广域处理。上述方案中,当所述MX I行处理单元阵列9完成较复杂的算法而寄存器文件的存储空间不够时,能够将数据通过所述k-bit缓冲移位寄存器41存入所述MXM像素级并行处理单元阵列7中;当所述MX I行处理单元阵列9所有操作完成时,能够将结果数据写入所述k-bit缓冲移位寄存器41,再由阵列外部片上总线16读走。上述方案中,所述处理阵列控制模块11从变长SMD存储器内部读取指令片段的 位置由片上总线16动态配置,且当该段指令执行完成后生成完成标志报告给片上总线16。上述方案中,为了既支持所述MXM像素级并行处理单元阵列7和所述MX I行处理单元阵列9的协同操作,又减少所需片上指令存储空间,该视觉图像处理系统采取变长SIMD指令机制,其中变长SMD指令存储器每个地址上都存储了一条2L-bit指令字,根据指令字头能够区分这是一条控制所述MXM像素级并行处理单元阵列7和所述MX I行处理单元阵列9协同工作的2L-bit超长SMD指令,还是控制所述MXM像素级并行处理单元阵列7和所述MX I行处理单元阵列9单独工作的两条L-bit普通SMD指令;所述处理阵列控制模块11内嵌有变长SIMD指令的调度和译码功能单元。上述方案中,所述片上可配置人工神经网络12包括输入神经元向量寄存器组51,包括Tl个输入神经元寄存器,其中每个输入神经元寄存器用于存储Jl比特定点数据,其中Tl <<M;神经元广播器52,用于接受所述输入神经元向量寄存器组51的数据,并每次选择其中一个广播到并行运算单元阵列53,作为并行运算单元阵列53中各个并行运算单元的操作数之一;并行运算单元阵列53,包含T2个并行运算单元,T2 ( Tl,每个并行运算单元接受所述神经元广播器52广播的输入神经元作为第一个操作数,同时分别接收权重/阈值存储器55每个地址上的T2个权重/阈值数据作为第二个操作数,其中权重/阈值为J比特定点数据,J > Jl ;输出神经元向量寄存器组54,包括T2个输出神经元寄存器,其中每个输出神经元寄存器存储J2比特定点数据;权重/阈值存储器55,其中存有运算过程所需的权重和阈值数据,每个地址上有T2个J比特定点数据;神经网络控制模块56,用于根据配置的参数信息控制整个片上可配置人工神经网络12的并行运算过程,片上可配置人工神经网络12正常工作时存储器地址由神经网络控制模块56给出;总线读写接口 57,用于片上可配置人工神经网络12中的输入神经元向量寄存器组51、输出神经元向量寄存器组54、权重/阈值存储器55中的数据被外部写入和读出;并行运算单元中的分段线性映射单元的映射函数和神经网络控制模块56的控制参数也由该总线读写接口 57灵活配置。上述方案中,所述每个并行运算单元包括定点乘法器、累加寄存器和分段线性映射单元,其中,所述定点乘法器和所述累加寄存器用于完成输入神经元数据与相应权重因子/阈值的乘累加运算,所述累加寄存器能够被神经网络控制模块清零,所述分段线性映射单元用于实现激活转移函数,其输出用于更新所述输出神经元向量寄存器组54。上述方案中,在所述神经网络控制模块56的控制下,所述神经元广播器52每次广播一个输入神经元到所述并行运算单元阵列53,同时从所述权重/阈值存储器55中取出与被广播的输入神经元对应的权重/阈值数据到所述并行运算单元阵列53,经过各个并行运算单元的乘法器相乘后累加到累加寄存器,全部完成后再并行实施分段线性映射,将最终结果归一化为T2比特后送入所述输出神经元向量寄存器组54。上述方案中,所述写入权重/阈值存储器55的数据和配置并行运算单元及神经网络控制模块56的数据是根据对神经网络的训练结果得到的,训练过程是在精简指令处理器双核子系统13或者系统外部通用处理器上实现。上述方案中,所述片上可配置人工神经网络12支持最大Tl个输入神经元,最大T2个输出神经元,且T2≤Tl,当输入神经元数目小于Tl、或输出神经元数目小于T2时,剩余的输入神经元寄存器、输出神经元寄存器和权重/阈值存储器中对应的数据将被自动置为O0 上述方案中,所述输出神经元寄存器的数据由片上总线16读出,并再次输入到输入神经元寄存器,实现多层神经网络的计算。上述方案中,所述精简指令处理器双核子系统13包括I号精简指令处理器核(RISC#I)、I号RISC私有程序/数据存储器、2号精简指令处理器核(RISC#2)、2号RISC私有程序/数据存储器、处理器核间通信信箱和处理器仲裁器,其中该精简指令处理器双核子系统13的I号精简指令处理器核(RISC#1)和2号精简指令处理器核(RISC#2)分别具有P比特数据位宽的私有程序/数据存储器,以实现线程级并行的处理,用于负责高级图像处理中除正常特征识别以外的不规则处理以及对整个系统的控制。上述方案中,所述I号精简指令处理器核(RISC#1)和2号精简指令处理器核(RISC#2)之间利用所述处理器核间通信信箱进行通信以实现必要的线程同步和数据交换; 所述I号精简指令处理器核(RISC#1)和2号精简指令处理器核(RISC#2)对片上总线的访问权通过所述处理器仲裁器控制,该处理器仲裁器在硬件上支持固定优先级和先来先服务两种仲裁方式;所述处理器核间通信信箱为同步双向FIFO。上述方案中,所述精简指令处理器双核子系统13还根据所述MXM像素级并行处理单元阵列7和所述MX I行处理单元阵列9进行处理所获得的宏观图像信息或感兴趣目标范围动态调整所述图像传感器控制模块6的参数寄存器中的数据,以自适应不断变化的应用环境,以及满足本系统或目标在环境中的相对运动所带来的多分辨率处理需求。上述方案中,所述随机/顺序混合I/O存储器14为一双端口存储器,其中一个端口为P比特位宽,可由片上总线进行随机读写访问,另一端口为PS(PS < P)比特位宽,由片外器件进行顺序读写访问,且读写相互独立;片外进行顺序读写时的使能信号能被该存储器内嵌的地址生成模块自动映射成该存储器的物理地址;该物理地址能被外部重定向清零。上述方案中,所述系统线程标志15为W比特寄存器,其中某些比特由系统内部的片上总线16负责控制写入,而另外一些比特则由系统外部器件负责控制写入;系统内外均可读标志寄存器的所有比特。上述方案中,所述片上总线16将来自所述精简指令处理器双核子系统13的读写控制信号和逻辑地址信息映射到其他各个总线从器件模块所需的选通使能信号和物理地址信息时,所述器件模块包括图像传感器控制模块、处理阵列控制模块、片上人工神经网络、随机/顺序混合I/o存储器、以及系统线程标志。上述方案中,在该视觉图像处理系统中,由图像传感器获得的数字像素数据以行并行方式载入到所述MXM像素级并行处理单元阵列7中,在所述MXM像素级并行处理单元阵列7和所述MX I行处理单元阵列9的协同配合下灵活完成各种低、中级图像处理,提取出图像特征送入片上人工神经网络12进行特征识别,以及还由精简指令处理器双核子系统13做进一步分析处理,得到最终所需的少量结果数据并输出。(三)有益效果从上述技术方案可以看出,本发明具有以下有益效果I、本发明提供的基于可编程视觉芯片的视觉图像处理系统,像素单元阵列和处理电路分离,彻底解决了传统视觉芯片面积随分辨率迅速增长、分辨率和填充率过低限制原始图像质量的难题,而且处理单元PE和像素单元灵活的对应关系有助于实现灵活的多分
辨率处理。2、本发明提供的基于可编程视觉芯片的视觉图像处理系统,引入基于多级并行数字处理电路以及片上人工神经网络的体系架构,能够通过编程高速、灵活的完成各种低、中、高级图像处理,真正实现了单芯片片上视觉图像处理系统,丰富和扩展了视觉芯片在各种对体积、功耗、成本有严格限制的嵌入式场合的应用。3、本发明提供的基于可编程视觉芯片的视觉图像处理系统,带有跳跃行处理单元的可编程行处理单元阵列能够实现灵活、快速的广域处理功能,加快了特征提取的速度。4、本发明提供的基于可编程视觉芯片的视觉图像处理系统,具有高速、灵活的视觉图像实时处理能力,处理速度可以超过1000帧/秒。
图I是本发明提供的基于可编程视觉芯片的视觉图像处理系统的结构示意图;图2是图I中图像传感器阵列中连续一行的电路图,包括一行滚动曝光的高速四管像素单元与其后续的行并行模拟处理单元(包括相关双采样电路和可控增益放大电路)及基于循环冗余机制的模数转换电路单元;图3是图I中像素级并行处理单元阵列中的处理单元PE的电路结构图;图4是图I中行并行处理单元阵列中的行处理单元RP的电路结构图;图5是图I中片上可配置人工神经网络的电路结构图;图6是基于图I中视觉图像处理系统的1000帧/秒高速目标追踪算法流程图;图7是基于图I中视觉图像处理系统的高速手势识别算法流程图;图8是图7中算法所需识别的四类手势的二值化图像;图9是基于图I中视觉图像处理系统的快速人脸检测的算法示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。如图I所示,图I是本发明提供的基于可编程视觉芯片的视觉图像处理系统的结构示意图,该系统包括图像传感模块和多级并行数字图像处理模块两部分。其中图像传感器模块包括NXN像素阵列,NXl行并行模拟预处理阵列,NXl行并行模数转换单元(ADC)阵列、输出像素选择模块和图像传感器控制模块,在本实施例中,N = 256,可以达到机器视觉等应用中的标准分辨率。多级并行数字图像处理模块包括MXM像素级并行处理单元(PE)阵列、MX I行处理单元(RP)阵列、片上可配置人工神经网络、精简指令处理器双核子系统、随机/顺序混合I/O存储器14、系统线程标志和高速片上总线。在本实施例中,M =64,配合输出像素选择模块和图像传感器控制模块对感兴趣像素阵列区域和分辨率的灵活选择,可以在较小的芯片面积内实现多分辨率处理。如图2所示是本实施例中一行像素单元极其相应行的模拟预处理单元和模数转换单元(ADC),其中像素单元采用了标准的四管像素结构,配合模拟预处理单元中的相关双采样电路CDS可消除复位噪声和固定模式噪声,另外模拟预处理单元中的可控增益放大电路PGA可以灵活改变等效反馈电容的大小,以此实现不同的增益,提高图像的动态范围和对比度,最后该模拟图像数据经过小面积循环冗余数模转换ADC单元转换为数字信号,经 过输出像素选择模块输入到像素级并行处理单元(PE)阵列开始进行处理。图像传感器模块可以通过外部片上总线动态的配置输出像素选择模块和图像传感器控制模块,以实现对像素阵列灵活的行列选择,即在不同的亚采样分辨率下选择不同的感兴趣区域,输入到PE阵列极其后续处理模块进行处理,实现多分辨率处理。另外图像传感器模块还可以通过外部片上总线动态的配置图像传感器控制模块的参数寄存器,以实现不同的积分曝光时间、不同的帧率和不同的PGA增益等等,实时根据应用环境和算法的需要调整图像传感器的工作方式。如图3所示是本实施例中像素级并行处理单元PE的具体电路结构图。每个PE单元包括第一操作数选择器、第二操作数选择器、Ibit算术逻辑运算单元(ALU)、lbit临时数据寄存器和位平面随机存储器。第一操作数选择器用于选择来自本单元或是邻近(上下左右)四个PE单元中位平面存储器的输出数据作为本单元Ibit ALU的第一个操作数,这样就实现了邻近PE单元之间的数据交互,而第二操作数用于选择本单元Ibit临时寄存器中的数据或是常数0、1作为本单元Ibit ALU的第二个操作数。单元中Ibit ALU可以完成Ibit的与、或、非逻辑运算和Ibit加法运算,多比特的加法、减法、乘法等较复杂的算术运算可以通过分解为多次串行Ibit加法来实现,其中ALU中的进位寄存器用于寄存进位标志。位平面存储器的输入输出数据都为lbit,多比特灰度图像数据按位(bit)存储在该存储器中,因此占据多个地址。在本实施例中,该位平面存储器容量为64bit,可以满足绝大多 应用中低、中级图像处理的数据存储需求。PE单元ALU处理的结果可以存入临时寄存器或该位平面存储器中。PE阵列的指令存储在处理阵列控制模块中,它在处理阵列控制模块的控制下以单指令多数据(SIMD)模式并行工作,每个时钟周期可执行一条指令。像素级并行处理单元(PE)阵列主要用于低、中级图像处理中的局域线性运算,包括背景减除、线性灰度变换、平滑滤波、边缘检测、阈值分割、二值形态学,等等,这些运算都可以像素级并行高速完成,相比串行处理的加速比为O(MXM)。如图4所示为本实施例中行并行处理单元RP的具体电路结构图,。每个RP单元包括一个k-bit缓冲移位寄存器、一个k-bit第一操作数选择器、一个k-bit第二操作数选择器、一个k-bit算术运算单元、一个条件选择器、一个k-bit三态缓冲门、一个k_bit临时寄存器和一个k-bit位宽的寄存器文件。在本实施例中,k = 8,这是因为灰度图像数据一般为8bit,因此k = 8可以实现较好的性能-面积平衡。RP单元中的各个缓冲移位寄存器组成了移位寄存器阵列,可以支持字并位串的左右移位以实现各个RP单元和相同行PE单元的数据交互,也可以支持字串位并的上下移位以实现阵列外部的总线与RP阵列的数据读写交互。RP单元分为跳跃RP单元和普通RP单元,每种RP单元都可以与邻近(上下)RP单元通过第一操作数选择器对数据输入的选择来实现交互,但跳跃RP单元的第一操作数选择器还可以选择与本单元相隔S行的RP单元数据来实现“跳跃”交互,这些跳跃RP单元在RP阵列中每隔S行放置一个,所有的RP单元组成了跳跃链,以加速某些统计类广域操作。在本实施例中S = 8,因为可以通过简单的理论推导得出S的最佳值为M的平方根。RP单元ALU的第二操作数来自本单元临时寄存器或是RP阵列指令中的立即数域,其ALU可以通过硬件完成8bit数据的求最大/最小值、加法/减法、数据移位和求绝对值,并生成标志位以利于下一周期的条件操作。条件选择器选择该ALU的标志位或者来自该行PE单元的Ibit数据(通常为二值图像数据或某些标志数据)控制三态缓冲门以实现条件写入,这样就实现了 RP单元的条件操作。临时寄存器和寄存器文件用于存储RP单元处理过程中的数据。由于RP阵列的输出一般不再是图像数据,而是图像中的某些特征,因此所需存储量较小,当RP单元确实需要较大存储容量时,可以通过缓冲寄存器的串并转换和本行PE单元共享位平面存储器的存储空间。在本实施例中,RP单元寄存器文件的存储容量为8bitX 16。RP单元主要用于低、中级图像处理中适合以行并行方式完成的广域运算和非线性运算,包括中值滤波、灰度形态学算法、平均灰度计算、形状特征提取(比如面积、周长、目标区域矩形限定框),等等,这些运算的主要步骤可以行并行方式完成,相比串行处理的加速比为0(M)。RP阵列也工作在单指令多数据(SMD)方式下,其指令同样来自处理阵列控制模块,每个时钟周期可执行一条指令。另外RP阵列操作时经常需要PE阵列配合,为了既能支持PE阵列和RP阵列的协同工作,又能在只需其中一个阵列单独工作时不浪费指令存储空间,采用了一种变长超长SMD指令字(Variable VLIff SIMD, VVS)机制,可通过指令头区分这是一条控制PE阵列和RP阵列协同工作的2L-bit超长SMD指令字还是两条连续的控制 PE阵列或RP阵列工作的L-bit普通SMD指令字。处理阵列控制模块在外部总线所写入控制参数的控制下进行取指,并负责对指令的解释和调度。在本实施例中,L = 32,片上指令存储空间为8KB,满足绝大多数典型应用低、中级图像处理算法的存储需求。如图5所示是本实施例中片上可配置人工神经网络的具体结构。该人工神经网络包括输入Jl比特精度的神经元寄存器组、神经元广播器、并行运算单元阵列、J2比特精度的输出神经元寄存器组、J比特精度的权重/阈值存储器和神经网络控制模块。其中每个并行运算单元进一步包括定点乘法器、累加寄存器和分段线性映射单元。由RP阵列提取的图像特征数据被片上总线加载到Tl个输入神经元寄存器中,在神经网络控制模块的控制下,神经元广播器依次广播各个输入神经元寄存器的数据到并行运算单元阵列作为操作数之一,而另一个操作数来自权重/阈值存储器,该存储器中每一个地址上存储了 T2个权重/阈值数据,分别对应T2个并行运算单元,而存储器的地址则由神经网络控制模块给出。并行运算单元将输入神经元寄存器数据和相应的权重数据相乘后累加到累加寄存器中,当Tl个输入神经元寄存器数据均被广播处理之后再减去权重/阈值存储器中的阈值信心,最后输入到分段线性映射单元实现转移函数,其结果就是代表识别结果的输出神经元寄存器的值,并最终通过片上总线读出。人工神经网络是以矢量级并行方式来完成特征识别任务的,相比串行处理可获得约为0(T2)的加速比。输入神经元的有效个数(代表图像特征维数)可以小于Tl,同样,输出神经元的有效个数(代表目标识别的分类数)也可以小于Τ2;当这两种情形发生时,可以通过配置神经网络控制模块中的参数寄存器来简化运算过程,使得剩余的无效神经元数据并不参与运算以加快处理速度。分段线性映射函数的两个“拐点”也是可配置的。另外,还可以将上一次运算结束后的输出神经元寄存器的数据读出后再反馈作为下一次运算开始前的输入神经元寄存器的数据,这样就可以动态实现任意多层神经网络,以完成复杂的识别任务。总之,该片上人工神经网络具有非常良好的可配置性。该人工神经网络的权重/阈值数据是由训练得到的,由于训练过程并不包含在系统正常工作的处理流程中,不影响系统运行的实时性,而且训练过程本身较复杂不宜用硬件直接实现,因此可以在RISC双核子系统甚至系统外的通用处理器上完成训练过程,训练结束后再将得到的权重和阈值数据下载到人工神经网络的权重/阈值存储器中。训练既可以采用有监督学习方式,也可采用无监督学习方式,因此可以实现包括反向传播(BP)神经网络、自组织映射(SOM)神经网络和矢量量化(LVQ)神经网络在内的多种人工神经网络。在本实施例中,Tl = 16,T2 = 8,Jl = 8,J2 = 8,J = 12,且权重/阈值存储器的容量为12bitX256,这样的精度和容量配置可以满足大多数应用中目标识别算法的需求,当特征维数高于16时,可以通过多次处理不同的特征子空间来完成识别过程。
在本实施例中,图I中的精简指令处理器(RISC)双核子系统主要用于完成高级图像处理中不规则的复杂算法(比如人工神经网络的训练、霍夫变换、主分量分析等)、动态配置以及统一控制系统内其它模块的并行工作。该RISC双核子系统包括两个P比特数据位宽的精简指令处理器(RISC)核及各自的私有程序/数据存储器、处理器核间通信信箱和处理器仲裁器。其中每个RISC都可以独自访问自身私有的程序/数据存储器,但必须通过处理器仲裁器来申请访问片上其它资源,该仲裁器在硬件上支持先来先服务和固定优先级仲裁算法并可灵活配置改变。处理器核间通信信箱实质为一双端口同步FIFO,用于支持双核间的线程同步。该RISC双核子系统具有线程级并行处理能力,相比单核单线程处理可获得一定的加速比,减少复杂高级处理的时间。在本实施例中,P = 32而FIFO容量为32bitX16。在本实施例中,图I中的随机/顺序混合I/O存储器用于系统内外的数据交互,为一双端口存储器。为了尽量减少系统引脚数量,其中一个端口为P比特位宽,可由片上总线进行随机读写访问,另一端口为PS(PS < P)比特位宽,可由片外器件进行顺序读写访问,且读写相互独立;片外进行顺序读写时的使能信号可被该存储器内嵌的地址生成模块自动映射成该存储器的物理地址;该物理地址可被外部重定向清零。该存储器面向系统内外的两个端口可以工作在不同的时钟频率下,有利于扩展系统的应用范围。在本实施例中,P =32,而 PS = 8。在本实施例中,图I中的系统线程标志为W比特寄存器,其中某些比特由系统内部的片上总线负责控制写入,而另外一些比特则由系统外部器件负责控制写入;系统内外均可读标志寄存器的所有比特。该寄存器可作为片系统内外线程交互和同步的标志使用。在本实施例中,W = 4,且其中三个比特由系统外部控制写入,一个比特由系统内部控制写入。在本实施例中,图I中的片上总线将来自RISC双核子系统主器件的读写控制信号和逻辑地址信息映射到其他各个总线从器件模块(包括图像传感器控制模块,处理阵列控制模块,片上人工神经网络,随机/顺序混合I/o存储器、线程标志)所需的选通使能信号和物理地址信息,以驱动这些从器件模块完成各种操作。在本实施例中,片上总线的数据位宽为32比特,最多支持16个从器件。在本实施例中,整个高速片上视觉系统(可编程视觉芯片)的工作流程如下由图像传感器获得的数字像素数据以行并行方式载入到处理单元PE阵列中,在处理单元PE阵列和行处理单元阵列的协同配合下灵活完成各种低、中级图像处理,提取出图像特征送入片上人工神经网络进行特征识别,有时还需要精简指令处理器双核子系统做进一步分析处理,得到最终所需的少量结果数据并输出到系统外部。同时,RISC双核子系统还可以根据PE阵列和RP阵列所进行处理获得的宏观图像信息或感兴趣目标范围动态调整图像传感器控制模块的参数寄存器中的数据,以自动适应不断变化的应用环境,以及满足本系统或目标在环境中的相对运动所带来的多分辨率处理需求。下面通过在本实施例中所提出的基于可编程视觉芯片的视觉图像处理系统上开发运行的三个典型高速视觉图像处理算法来详细说明本实施例的具体应用。
(一)高速目标追踪如图6所示,是基于本实施例视觉图像处理系统的高速目标追踪算法流程。首先利用图像传感器阵列捕获若干帧图像,在PE阵列中按一定规则合成一副背景图像,然后开始正常工作。正常工作时捕获的每一帧图像首先在PE阵列中平滑滤波去噪后减去背景图像,得到一副差分图像,然后利用RP阵列统计该图像的灰度值大致分布,以确定最佳的动态阈值,之后在PE阵列中以该阈值分割差分图像得到一副二值图像,该二值图像就是场景中有明显运动目标的区域。接下来再在PE阵列中利用二值形态学测地变换分割出该二值图像的每一个连通区域,利用RP阵列提取各区域形状特征并在RISC双核子系统中逐一与待追踪目标的特征作比较,在特征空间中欧氏距离或曼哈顿距离最小并且小于某个预先定义的距离时者就可认定为目标特征,据此锁定目标所在的区域和中心坐标,并将这些信息写入I/O存储器输出到片外。最后,将非运动区域的背景按照某种算法模型进行更新,以消除环境缓慢变化对追踪过程的干扰。在该算法中,如果目标和其他运动物体发生碰撞或运动到遮挡物之后,会消失若干帧,此时RISC双核子系统会自动根据目标之前的统计运动来预测输出目标当前所在区域坐标;但是当目标重新出现时,该算法又会立即将其锁定。该算法有较强的适应性和鲁棒性,可以处理复杂动态场景下具有多个不规则高速运动物体情况时的目标追踪。以上所述高速目标追踪算法可以达到1000帧/秒的处理速度。另外,在背景较简单的人工可控环境下,也可以应用专利ZL200510086902. 2中妙维等人提出的“自窗捕捉”方法,并在目标追踪开始时手动指定被追踪目标所在的区域。该算法也能达到1000帧/秒的处理速度。(二)高速手势识别如图7所示,是基于本实施例视觉图像处理系统的高速手势识别算法流程。本发明所提出的手势识别算法支持四类手势的识别,主要用于基于自然人机交互的PPT手势控制系统,图8列出了这四类手势的阈值分割后的二值化图像以及相应的控制功能。该手势识别算法中,从背景合成到阈值分割这五步和高速目标追踪算法中的相同,之后在PE阵列中利用二值形态学区域修整算法去除小的杂散区域和填补大块区域中小的孔洞,最后的大块完整区域就是待识别手势所在的区域。之后利用人工神经网络进行识别,人工神经网络必须经过充分的训练才能用于识别,训练时首先提取手势识别区域的归一化致密度特征,即将该区域平均分为若干行和若干列,分别统计每一行和每一列激活像素(即二值图像中值为I的像素)的个数占该区域总面积的比值,这些比值组成一组向量,并且在系统线程标志的监督配合下用于神经网络的学习(即通过外部写线程标志寄存器来指示目前学习的是哪一类手势),学习过程可以在系统内部的RISC双核子系统上完成,也可以在系统外的通用处理器上完成。学习完成之后就是识别过程,注意到待识别手势中的两种特殊情况(即没有待识别区域的“空白”手势和只有一根指头的特殊鼠标移动手势),为了加快特征识别速度,算法采用了基于简单区域特征结合人工神经网络的级联分类器,该分类器首先提取待识别区域的简单特征(比如激活像素总数、形状参数、顶点坐标等)在RISC核上尝试识别出上述特殊手势,若不成功再进一步提取较复杂的完整归一化致密度特征并利用人工神经网络进行统一识别,最后输出识别出的手势类别代码以及手势顶点坐标(顶点坐标仅用于鼠标移动手势)。由于典型应用过程中的大部分时间都是所述两种特殊手势,因此整个处理速度可以得到很大提升,该系统的平均帧率可以达到1000帧以上。高帧率有利于进一步采用RISC核对识别结果进行基于软件的时域低通滤波,抑制环境噪声和手势抖动对识别结果造成的干扰。(三)快速人脸检测如图9所示,是基于本实施例视觉图像处理系统的快速人脸检测算法流程,该算法可用于特殊场合下的人流量统计。应用本算法时,需要RISC核控制图像传感器每次输出待监测区域的一个64 X 64分辨率图像。本算法主要采用了 Masakazu等人在2003年在IEEETransactions on Neural Networks 杂志上发表的 An Image Representation AlgorithmCompatible With Neural-Associative-Processor-Based Hardware RecognitionSystems 一文中提到的PPED特征向量用于人脸检测,PPED特征向量的提取主要分为水平、垂直、正45度和负45度四个方向的5X5模板边缘检测及边缘标志生成,以及按一定规则组合压缩这四个方向边缘标志以形成一个64维的PPED向量这两步,并且在PE阵列和RP阵列上完成,之后利用人工神经网络判断是否是人脸,判断前必须利用标准人脸库中的模板对神经网络进行充分训练。由于特征维数较高,可以划分为特征子空间进行逐一训练和识另Ij,或者在实时性要求较高而正确率不必太高的情况下,将64维的PPED向量进一步压缩为一个16维的向量以提高处理速度。在本实施例中的系统上,采用完整的64维PPED向量,用本算法对每一帧256X256图像中部的256X64区域划分为10个64X64的子区域(因为64X64的子区域之间必须有一定的重叠以尽量减少漏检情况)进行人脸检测所需的处理时间约为18ms,或者说整个系统的帧率可高于50帧/秒,远高于串行处理系统。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡 在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于可编程视觉芯片的视觉图像处理系统,其特征在于,包括 图像传感器,用于高速采集原始图像数据,并将采集的该原始图像数据并行传输到多级并行数字处理电路;以及 多级并行数字处理电路,用于对接收自图像传感器的该原始图像数据进行快速并行处理,输出处理结果。
2.根据权利要求I所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述图像传感器包括 NXN像素阵列(I),用于高速采集原始图像数据,并将采集的该原始图像数据输出给NX I行并行模拟预处理阵列(3),其中N为自然数; NXl行并行模拟预处理阵列(3),用于去除该原始图像数据中的固定噪声,提高该原始图像数据的动态范围,并输出给NX I行并行模数转换阵列⑷; NXl行并行模数转换阵列(4),用于将每一列模拟像素数据转换为高精度数字像素数据,并输出给输出像素选择模块(5); 输出像素选择模块(5),用于并行接收所述NX I行并行模数转换阵列(4)的N个数字像素数据作为输入,并从中选择M个像素数据作为该图像传感器的输出,实现对像素行的选择,其中M为自然数且M < N ;以及 图像传感器控制模块¢),用于根据内部的参数寄存器控制NXN像素阵列(1)、NX1行并行模拟预处理阵列(3)、NX I行并行模数转换阵列(4)和输出像素选择模块(5)的工作时序,实现对该图像传感器的动态控制。
3.根据权利要求2所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于, 所述NXN像素阵列(I)包含NXN个二维排列的像素单元(2),其中每个像素单元(2)均包含感光元和相应的读出电路; 所述NX I行并行模拟预处理阵列(3)包含N个一维排列的模拟预处理单元,其中每个模拟预处理单元均包含用于去除固定噪声的相关双采样(CDS)电路和用于提高动态范围的可控增益放大电路(PGA); 所述NX I行并行模数转换阵列(4)包含N个一维排列的模数转换单元; 所述输出像素选择模块(5)配合图像传感器控制模块(6)对像素行列的选择,实现对该图像传感器灵活的区域处理和/或亚采样处理。
4.根据权利要求2所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述图像传感器控制模块¢)中的参数寄存器,其中的数据能够通过片上总线接口从模块外部进行读写,实现对该图像传感器的动态控制。
5.根据权利要求2所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述图像传感器控制模块(6)控制所述NXN像素阵列(I)滚动曝光,并且每次选择其中一列以行并行方式输出N个模拟像素值至所述NX I行并行模拟预处理阵列(3),通过所述NX I行并行模拟预处理阵列(3)进行噪声去除和动态范围提升,然后进入所述NX I行并行模数转换阵列(4)并行转换为高精度数字像素数据,最后通过所述输出像素选择模块(5)输出M个数字像素数据作为该图像传感器的最终输出,提供给所述多级并行数字处理电路。
6.根据权利要求I所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述多级并行数字处理电路包括MXM像素级并行处理单元阵列(7),用于对接收自图像传感器的数字像素数据进行适合像素级并行的局域线性处理,并将处理结果输出给MX I行处理单元阵列(9),其中M为自然数且M< N; MX I行处理单元阵列(9),用于加速低、中级图像中适合以行并行方式完成的非线性处理和广域处理,实现对图像特征的提取; 处理阵列控制模块(11),用于从其内部变长单指令多数据(SMD)指令存储器中取出控制所述MXM像素级并行处理单元阵列(7)和所述MX I行处理单元阵列(9)的控制指令,并译码输出到所述MXM像素级并行处理单元阵列(7)和所述MX I行处理单元阵列(9); 片上可配置人工神经网络(12),用于完成高级图像处理中的特征识别或特征压缩任务,其输入为所述MXl行处理单元阵列(9)提取的特征向量数据,输出为特征识别的结果; 精简指令处理器双核子系统(13),用于实现线程级并行的处理,进行高级图像处理中除正常特征识别以外的不规则处理以及对整个系统的控制; 随机/顺序混合I/O存储器(14); 系统线程标志(15); 片上总线(16),用于将来自所述精简指令处理器双核子系统(13)的读写控制信号和逻辑地址信息映射到其他各个总线从器件模块所需的选通使能信号和物理地址信息,以驱动这些从器件模块完成各种操作。
7.根据权利要求6所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述MXM像素级并行处理单元阵列(7)包含MXM个二维排列的像素级并行处理单元PE(S),所有像素级并行处理单元PE(8)工作在单指令多数据(SMD)模式下,接受相同的PE阵列控制指令,执行相同的操作,但是所操作的数据来自各个单元本地的存储器。
8.根据权利要求7所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述每个像素级并行处理单元PE (8)对应于一帧中所述NXN像素阵列(I)的一个或多个图像像素, 当每个像素级并行处理单元PE (8)对应一个像素时,由于M < N,整个处理单元阵列对应于所述NXN像素阵列⑴的一个MXM的子区域图像或是整个所述NXN像素阵列(I)的MXM亚采样图像,此时所述MXM像素级并行处理单元阵列(7)以全并行方式对一帧分辨率为MXM子图像或亚采样图像进行处理; 当每个像素级并行处理单元PE(8)对应多个像素时,整个所述MXM像素级并行处理单元阵列(7)对应于整个NXN像素阵列⑴或是NXN像素阵列⑴中大于MXM的子区域,此时是以部分像素并行的方式对整帧图像进行处理。
9.根据权利要求8所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,该视觉图像处理系统是通过图像传感器控制模块(6)动态切换像素级并行处理单元PE (8)与图像像素之间的对应方式,由此实现多分辨率视觉图像处理。
10.根据权利要求7所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于, 所述像素级并行处理单元PE(8)用于完成基本的I比特求和、求反、求与、求或等算术逻辑操作,低中级图像处理中的多比特算术逻辑运算是通过分解为上述基本I比特运算在所述像素级并行处理单元PE (8)上实现的;所述像素级并行处理单元PE(8)的数据可与其上、下、左、右的邻近处理单元进行交互传递,通过多次的邻近处理单元数据传递,每个所述像素级并行处理单元PE (8)可与任意位置的其他处理单元产生交互。
11.根据权利要求7所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述像素级并行处理 单元PE (8)包括第一操作数选择器(31)、第二操作数选择器(32)、I比特算术逻辑运算单元(33)、1比特临时数据寄存器(34)和位平面随机存储器(35),其中 第一操作数选择器(31)根据所述处理阵列控制模块(11)输出的控制指令从本单元或邻近处理单元的位平面存储器(35)的输出中选择一个作为I比特算术逻辑运算单元(33)的第一操作数; 第二操作数选择器(32)根据所述处理阵列控制模块(11)输出的控制指令从本单元的I比特临时寄存器(34)的输出或I比特立即数O和I中选择一个作为I比特算术逻辑运算单元(33)的第二操作数。
12.根据权利要求11所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述I比特算术逻辑运算单元(33)包括一个全加器、一个非门、一个二输入与门、一个二输入或门、一个进位寄存器以及一个输出结果选择器;其中, 所述进位寄存器用于寄存加法运算产生的进位结果,该进位结果用于多比特算术运算,所述进位寄存器能够被所述处理阵列控制模块(11)输出的控制指令清零; 所述输出结果选择器根据所述处理阵列控制模块(11)输出的控制指令从全加器、非门、与门、或门计算的输出中选择一个作为I比特算术逻辑运算单元(33)的结果。
13.根据权利要求11所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述位平面随机存储器(35)是数据位宽为I比特、支持同时读写的小容量随机存储器,其读写地址来自所述处理阵列控制模块(11)输出的控制指令,其写入数据来自I比特算术逻辑运算单元(33)的输出,其读出数据作为本单元或邻近处理单元的第一操作数选择器的输入之一。
14.根据权利要求11所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述处理阵列控制模块(11)输出的控制指令能够选择将I比特算术逻辑运算单元(33)的每次输出结果数据写入到所述位平面随机存储器(35)还是所述I比特临时寄存器(34),每次必须且只能写入其中之一。
15.根据权利要求6所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述MX I行处理单元阵列(9)包含M个一维排列的行并行处理单元RP (10),所有行并行处理单元RP(IO)工作在单指令多数据(SIMD)模式下,接受相同的RP阵列控制指令,执行相同的操作,但是所操作的数据来自各个单元本地的寄存器; 所述每个行并行处理单元RP(10)用于完成k-bit的算术操作,包括加法、减法、求绝对值、数据移位、以及比较大小,大于k-bit的数据操作能够被分解为若干个小于k-bit的操作串行来完成。
16.根据权利要求15所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述每个行并行处理单元RP (10)对应于所述MXM像素级并行处理单元阵列(7)中同一行的所有像素级并行处理单元PE (8),该行每个像素级并行处理单元PE (8)的数据能够逐个进入行并行处理单元RP(10)被进一步操作。
17.根据权利要求15所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述每个行并行处理单元RP均能够与其上下方的行并行处理单元RP进行数据交互,其中有些行并行处理单元RP还能够与相隔其上下方S行的行并行处理单元RP进行数据交互,这些行并行处理单元RP被称为跳跃行处理单元,除这些跳跃行处理单元之外的行并行处理单元RP被称为普通行处理单元;整个行处理单元阵列中,从第一行开始,每隔S行放置一个跳跃行处理单元,其余各行均放置普通行处理单元;其中S为自然数。
18.根据权利要求17所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述跳跃行处理单元能够远距离直接进行数据交互,不需逐个通过所有行并行处理单元 RP(10)进行数据交互,能够实现快速灵活的行间广域处理。
19.根据权利要求15所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述行并行处理单元RP包括 一个k-bit缓冲移位寄存器(41),用于实现与所述MXM像素级并行处理单元阵列(7)的串并/并串数据转换,并作为阵列外部片上总线对所述MX I行处理单元阵列(9)的数据访问接口,同时可被其所属RP单元的寄存器文件的读出数据所更新; 一个k-bit第一操作数选择器(42),用于根据所述处理阵列控制模块(11)输出的控制指令从本单元或邻近行处理单元的寄存器文件输出、本单元缓冲移位寄存器的输出中选择一个作为所述k-bit算术运算单元(44)的第一操作数; 一个k-bit第二操作数选择器(43),用于根据所述处理阵列控制模块(11)输出的控制指令从本单元临时寄存器输出或来自阵列控制指令的立即数中选择一个作为所述k-bit算术运算单元(44)的第二操作数; 一个k-bit算术运算单元(44),用于执行广域处理和非线性处理,该广域处理包括k-bit加法、减法、求绝对值、数据移位和大小比较; 一个条件选择器(45),用于根据所述处理阵列控制模块(11)输出的控制指令从本单元所在行的像素级并行处理单元PE (8)输出的Ibit数据、来自k-bit算术运算单元(44)的条件标志寄存器以及Ibit常数I中选择一个作为条件运算使能信号,该信号将使能所述k-bit三态缓冲门(46); 一个k-bit三态缓冲门(46),用于接收k-bit算术运算单元(44)的输出结果,在条件选择器(45)所输出条件使能信号的控制下决定是否将本次操作的数据写入k-bit临时寄存器(47)或k-bit位宽的寄存器文件(48),以实现条件运算;以及 一个k-bit临时寄存器(47)和一个k-bit位宽的寄存器文件(48)。
20.根据权利要求19所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述k-bit缓冲移位寄存器(41)能够在阵列控制指令下按比特进行左右移位,以实现与所述MXM像素级并行处理单元阵列(7)的串并/并串数据转换;还能够在阵列外部信号控制下,与所述行并行处理单元RP (10)上下方单元中的缓冲移位寄存器所有比特并行上下移位,以实现阵列外部片上总线对所述MX I行处理单元阵列(9)的数据访问;该k-bit缓冲移位寄存器(41)的输出作为k-bit第一操作数选择器(42)的输入之一,其值也能被寄存器文件的读出数据所更新。
21.根据权利要求19所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述k-bit第一操作数选择器(42)在根据控制指令从本单元或邻近行处理单元的寄存器文件输出、本单元缓冲移位寄存器的输出中选择时,如果本单元为跳跃行处理单元,则其选择范围还包括与其相隔S行的跳跃行处理单元。
22.根据权利要求19所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述k-bit算术运算单元(44)还根据每次运算结果更新其内部的“进位/借位”以及“结果为零”标志寄存器,便于大于k-bit的数据运算以及条件运算;其标志寄存器能够被处理阵列控制模块输出的控制指令清零。
23.根据权利要求19所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述k-bit位宽的寄存器文件(48)为数据位宽k-bit、支持同时读写的小容量随机存储器或寄存器堆,其读写地址来自所述处理阵列控制模块(11)输出的控制指令,其写入数据来 自k-bit三态缓冲门(46)的输出,其读出数据作为本单元或邻近行处理单元的k-bit第一 操作数选择器(42)的输入之一;如果本单元为跳跃行处理单元,则还包括与其相隔S行的跳跃行处理单元。
24.根据权利要求23所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述处理阵列控制模块(11)输出的控制指令用于选择将所述k-bit算术运算单元(44)的每次输出结果数据写入到k-bit临时寄存器(47)或k-bit位宽的寄存器文件(48),当所述k-bit三态缓冲门(46)被使能时必须且只能写入其中之一。
25.根据权利要求19所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述条件选择器(45)能够直接来自像素级并行处理单元PE (8)的Ibit数据作为条件使能信号,不需经过基于所述k-bit缓冲移位寄存器(41)的串并转换,有利于实现灵活快速的行内广域处理。
26.根据权利要求19所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于, 当所述MX I行处理单元阵列(9)完成较复杂的算法而寄存器文件的存储空间不够时,能够将数据通过所述k-bit缓冲移位寄存器(41)存入所述MXM像素级并行处理单元阵列(7)中; 当所述MX I行处理单元阵列(9)所有操作完成时,能够将结果数据写入所述k-bit缓冲移位寄存器(41),再由阵列外部片上总线(16)读走。
27.根据权利要求6所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述处理阵列控制模块(11)从变长SMD存储器内部读取指令片段的位置由片上总线(16)动态配置,且当该段指令执行完成后生成完成标志报告给片上总线(16)。
28.根据权利要求6所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,为了既支持所述MXM像素级并行处理单元阵列(7)和所述MX I行处理单元阵列(9)的协同操作,又减少所需片上指令存储空间,该视觉图像处理系统采取变长SMD指令机制,其中变长SMD指令存储器每个地址上都存储了一条2L-bit指令字,根据指令字头能够区分这是一条控制所述MXM像素级并行处理单元阵列(7)和所述MX I行处理单元阵列(9)协同工作的2L-bit超长SMD指令,还是控制所述MXM像素级并行处理单元阵列(7)和所述MX I行处理单元阵列(9)单独工作的两条L-bit普通SMD指令;所述处理阵列控制模块(11)内嵌有变长SIMD指令的调度和译码功能单元。
29.根据权利要求6所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述片上可配置人工神经网络(12)包括输入神经元向量寄存器组(51),包括Tl个输入神经元寄存器,其中每个输入神经元寄存器用于存储Jl比特定点数据,其中Tl <<M; 神经元广播器(52),用于接受所述输入神经元向量寄存器组(51)的数据,并每次选择其中一个广播到并行运算单元阵列(53),作为并行运算单元阵列(53)中各个并行运算单元的操作数之一; 并行运算单元阵列(53),包含T2个并行运算单元,T2 ( Tl,每个并行运算单元接受所述神经元广播器(52)广播的输入神经元作为第一个操作数,同时分别接收权重/阈值存储器(55)每个地址上的T2个权重/阈值数据作为第二个操作数,其中权重/阈值为J比特定点数据,J > Jl ; 输出神经元向量寄存器组(54),包括T2个输出神经元寄存器,其中每个输出神经元寄存器存储J2比特定点数据; 权重/阈值存储器(55),其中存有运算过程所需的权重和阈值数据,每个地址上有T2个J比特定点数据; 神经网络控制模块(56),用于根据配置的参数信息控制整个片上可配置人工神经网络(12)的并行运算过程,片上可配置人工神经网络(12)正常工作时存储器地址由神经网络控制模块(56)给出; 总线读写接口(57),用于片上可配置人工神经网络(12)中的输入神经元向量寄存器组(51)、输出神经元向量寄存器组(54)、权重/阈值存储器(55)中的数据被外部写入和读出;并行运算单元中的分段线性映射单元的映射函数和神经网络控制模块(56)的控制参数也由该总线读写接口(57)灵活配置。
30.根据权利要求29所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述每个并行运算单元包括定点乘法器、累加寄存器和分段线性映射单元,其中,所述定点乘法器和所述累加寄存器用于完成输入神经元数据与相应权重因子/阈值的乘累加运算,所述累加寄存器能够被神经网络控制模块清零,所述分段线性映射单元用于实现激活转移函数,其输出用于更新所述输出神经元向量寄存器组(54)。
31.根据权利要求29所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,在所述神经网络控制模块(56)的控制下,所述神经元广播器(52)每次广播一个输入神经元到所述并行运算单元阵列(53),同时从所述权重/阈值存储器(55)中取出与被广播的输入神经元对应的权重/阈值数据到所述并行运算单元阵列(53),经过各个并行运算单元的乘法器相乘后累加到累加寄存器,全部完成后再并行实施分段线性映射,将最终结果归一化为T2比特后送入所述输出神经元向量寄存器组(54)。
32.根据权利要求31所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述写入权重/阈值存储器(55)的数据和配置并行运算单元及神经网络控制模块(56)的数据是根据对神经网络的训练结果得到的,训练过程是在精简指令处理器双核子系统(13)或者系统外部通用处理器上实现。
33.根据权利要求29所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述片上可配置人工神经网络(12)支持最大Tl个输入神经元,最大T2个输出神经元,且T2 ( Tl,当输入神经元数目小于Tl、或输出神经元数目小于T2时,剩余的输入神经元寄存器、输出神经元寄存器和权重/阈值存储器中对应的数据将被自动置为O。
34.根据权利要求29所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述输出神经元寄存器的数据由片上总线(16)读出,并再次输入到输入神经元寄存器,实现多层神经网络的计算。
35.根据权利要求6所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述精简指令处理器双核子系统(13)包括I号精简指令处理器核(RISC#1)、1号RISC私有程序/数据存储器、2号精简指令处理器核(RISC#2)、2号RISC私有程序/数据存储器、处理器核间通信信箱和处理器仲裁器,其中 该精简指令处理器双核子系统(13)的I号精简指令处理器核(RISC#1)和2号精简指令处理器核(RISC#2)分别具有P比特数据位宽的私有程序/数据存储器,以实现线程级并行的处理,用于负责高级图像处理中除正常特征识别以外的不规则处理以及对整个系统的控制。
36.根据权利要求35所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于, 所述I号精简指令处理器核(RISC#1)和2号精简指令处理器核(RISC#2)之间利用所述处理器核间通信信箱进行通信以实现必要的线程同步和数据交换; 所述I号精简指令处理器核(RISC#1)和2号精简指令处理器核(RISC#2)对片上总线的访问权通过所述处理器仲裁器控制,该处理器仲裁器在硬件上支持固定优先级和先来先服务两种仲裁方式; 所述处理器核间通信信箱为同步双向FIFO。
37.根据权利要求35所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述精简指令处理器双核子系统(13)还根据所述MXM像素级并行处理单元阵列(7)和所述MXl行处理单元阵列(9)进行处理所获得的宏观图像信息或感兴趣目标范围动态调整所述图像传感器控制模块¢)的参数寄存器中的数据,以自适应不断变化的应用环境,以及满足本系统或目标在环境中的相对运动所带来的多分辨率处理需求。
38.根据权利要求6所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述随机/顺序混合I/O存储器(14)为一双端口存储器,其中一个端口为P比特位宽,可由片上总线进行随机读写访问,另一端口为PS(PS < P)比特位宽,由片外器件进行顺序读写访问,且读写相互独立;片外进行顺序读写时的使能信号能被该存储器内嵌的地址生成模块自动映射成该存储器的物理地址;该物理地址能被外部重定向清零。
39.根据权利要求6所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述系统线程标志(15)为W比特寄存器,其中某些比特由系统内部的片上总线(16)负责控制写入,而另外一些比特则由系统外部器件负责控制写入;系统内外均可读标志寄存器的所有比特。
40.根据权利要求6所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,所述片上总线(16)将来自所述精简指令处理器双核子系统(13)的读写控制信号和逻辑地址信息映射到其他各个总线从器件模块所需的选通使能信号和物理地址信息时,所述器件模块包括图像传感器控制模块、处理阵列控制模块、片上人工神经网络、随机/顺序混合I/O存储器、以及系统线程标志。
41.根据权利要求6所述的基于可编程视觉芯片的视觉图像处理系统,其特征在于,在该视觉图像处理系统中,由图像传感器获得的数字像素数据以行并行方式载入到所述MXM像素级并行处理单元阵列(7)中,在所述MXM像素级并行处理单元阵列(7)和所述MXl行处理单元阵列(9)的协同配合下灵活完成各种低、中级图像处理,提取出图像特征送入片上人工神经网络(12)进行特征识别,以及还由精简指令处理器双核子系统(13)做进一步分析处理,得到最终所需的 少量结果数据并输出。
全文摘要
本发明公开了一种基于可编程视觉芯片的视觉图像处理系统,包括图像传感器和多级并行数字处理电路。其中图像传感器主要包括像素阵列、模拟预处理电路阵列和模数转换电路阵列,数字处理电路主要包括像素级并行的处理单元阵列、行并行处理单元阵列、片上人工神经网络和精简指令处理器双核子系统。该系统可实现高速高质量图像采集和多级并行图像处理,可通过编程实现多种高速智能视觉应用,相比传统图像系统具有高速度、高集成、低功耗、低成本的优势。本发明提出了一种实现上述架构的实施例以及基于该实施例的多种高速智能视觉图像处理算法,包括高速运动检测、高速手势识别和快速人脸检测,处理速度可达到1000帧/秒,满足高速实时处理需求。
文档编号H04N5/378GK102665049SQ201210088420
公开日2012年9月12日 申请日期2012年3月29日 优先权日2012年3月29日
发明者吴南健, 杨杰, 石匆, 秦琦, 龙希田 申请人:中国科学院半导体研究所