具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
在车联网(V2X,Vehicle to Everything)技术中,通过整合全球定位系统(GPS)导航技术、车对车交流技术、无线通信及远程感应技术奠定了新的汽车技术发展方向。在V2X技术中,可以通过路侧感知技术获取道路信息,从而为智能交通、自动驾驶等方案提供必要的信息。在一些应用中,可以通过在道路附近设置的路侧感知设备获取所需的道路信息。例如,可以通过设置在直道两侧或交叉路口处的路侧感知设备获取道路信息。
在智能交通车路协同的一种系统架构中,路侧设备可以包括路侧感知设备和路侧计算设备。路侧感知设备(例如路侧相机)连接到路侧计算设备(例如路侧计算单元RSCU),路侧计算设备连接到云控平台。在另一种系统架构中,路侧感知设备自身包括计算功能,即路侧设备可以是具有计算功能的路侧感知设备,路侧感知设备可以直接连接到所述云控平台。以上连接可以是有线或是无线。云控平台也可以称为车路协同管理平台、中心系统、边缘计算平台、云计算平台、云端服务器等。云控平台在云端执行处理,云控平台包括的电子设备可以获取感知设备(如路侧相机)的数据,例如图片和视频等,从而进行图像视频处理和数据计算。
路侧感知技术是通过路侧传感器和感知算法将感知到的障碍物发送给车辆,从而帮助车实现自动驾驶功能的一种技术。目前路侧感知传感器包含摄像头和激光雷达(lidar)等。在车联网(V2X)路侧感知场景下,为了通过相机获取超视距的道路交通信息,通常将相机位置安装在路灯杆或红绿灯杆上,相机越高,所获得的图像的视场就越大,也就包含更多的信息量,路侧感知能力就越强。然而当相机安装在较高的杆子上时,由于风吹或重型车经过会引起相机抖动。当相机的位置有变化时,利用相机离线标定好的外参进行障碍物的回3D会引入抖动的误差。当抖动过大时,离线外参将会失效,障碍物位置会严重不准。因此,需要一种算法对相机抖动情况下的3D位置的检测进行优化。其中相机外参可以包括旋转矩阵和平移矩阵。作为相机外参的旋转矩阵和平移矩阵共同描述了如何把点从世界坐标系转换到相机坐标系。
一般的解决相机抖动的方法有光学防抖、机械防抖方法和电子防抖方法,由于路侧感知的成本限制,需要额外成本的光学防抖和机械防抖都不能大规模使用,而普通的电子防抖在面临路侧相机的场景时,也会有较大的误差。
一种比较流行的方法是进行外参的在线标定,通过实时计算相机的外参来更新离线外参,从而解决路侧感知系统中的离线外参失效问题,这种方法精度和实时性在较好的硬件上可以满足需求,但耗费算力,成本比较高。
为了解决上述问题,本公开提供了一种新的用于检测障碍物的方法,能够方便地实现针对相机抖动引起的外参变化所导致的误差的校正。
下面将结合附图详细描述本公开的实施例。
图1示出了根据本公开的实施例可以将本文描述的各种方法和装置在其中实施的示例性系统100的示意图。参考图1,该系统100包括一个或多个客户端设备101、102、103、104、105和106、服务器120以及将一个或多个客户端设备耦接到服务器120的一个或多个通信网络110。客户端设备101、102、103、104、105和106可以被配置为执行一个或多个应用程序。
在本公开的实施例中,服务器120可以运行使得能够执行根据本公开的用于检测障碍物的方法的一个或多个服务或软件应用。在一些实施例中,也可以使用客户端设备101、102、103、104、105和106运行根据本公开的用于检测障碍物的方法的一个或多个服务或软件应用。在一些实现方式中,客户端设备101、102、103、104、105和106可以用于实现车联网系统中的路侧设备。
在某些实施例中,服务器120还可以提供可以包括非虚拟环境和虚拟环境的其他服务或软件应用。在某些实施例中,这些服务可以作为基于web的服务或云服务提供,例如在软件即服务(SaaS)模型下提供给客户端设备101、102、103、104、105和/或106的用户。
在图1所示的配置中,服务器120可以包括实现由服务器120执行的功能的一个或多个组件。这些组件可以包括可由一个或多个处理器执行的软件组件、硬件组件或其组合。操作客户端设备101、102、103、104、105和/或106的用户可以依次利用一个或多个客户端应用程序来与服务器120进行交互以利用这些组件提供的服务。应当理解,各种不同的系统配置是可能的,其可以与系统100不同。因此,图1是用于实施本文所描述的各种方法的系统的一个示例,并且不旨在进行限制。
客户端设备可以提供使客户端设备的用户能够与客户端设备进行交互的接口。客户端设备还可以经由该接口向用户输出信息。尽管图1仅描绘了六种客户端设备,但是本领域技术人员将能够理解,本公开可以支持任何数量的客户端设备。
客户端设备101、102、103、104、105和/或106可以包括各种类型的计算机设备,例如便携式手持设备、通用计算机(诸如个人计算机和膝上型计算机)、工作站计算机、可穿戴设备、游戏系统、瘦客户端、各种消息收发设备、传感器或其他感测设备等。这些计算机设备可以运行各种类型和版本的软件应用程序和操作系统,例如Microsoft Windows、AppleiOS、类UNIX操作系统、Linux或类Linux操作系统(例如Google Chrome OS);或包括各种移动操作系统,例如Microsoft Windows Mobile OS、iOS、Windows Phone、Android。便携式手持设备可以包括蜂窝电话、智能电话、平板电脑、个人数字助理(PDA)等。可穿戴设备可以包括头戴式显示器和其他设备。游戏系统可以包括各种手持式游戏设备、支持互联网的游戏设备等。客户端设备能够执行各种不同的应用程序,例如各种与Internet相关的应用程序、通信应用程序(例如电子邮件应用程序)、短消息服务(SMS)应用程序,并且可以使用各种通信协议。
网络110可以是本领域技术人员熟知的任何类型的网络,其可以使用多种可用协议中的任何一种(包括但不限于TCP/IP、SNA、IPX等)来支持数据通信。仅作为示例,一个或多个网络110可以是局域网(LAN)、基于以太网的网络、令牌环、广域网(WAN)、因特网、虚拟网络、虚拟专用网络(VPN)、内部网、外部网、公共交换电话网(PSTN)、红外网络、无线网络(例如蓝牙、WIFI)和/或这些和/或其他网络的任意组合。
服务器120可以包括一个或多个通用计算机、专用服务器计算机(例如PC(个人计算机)服务器、UNIX服务器、中端服务器)、刀片式服务器、大型计算机、服务器群集或任何其他适当的布置和/或组合。服务器120可以包括运行虚拟操作系统的一个或多个虚拟机,或者涉及虚拟化的其他计算架构(例如可以被虚拟化以维护服务器的虚拟存储设备的逻辑存储设备的一个或多个灵活池)。在各种实施例中,服务器120可以运行提供下文所描述的功能的一个或多个服务或软件应用。
服务器120中的计算单元可以运行包括上述任何操作系统以及任何商业上可用的服务器操作系统的一个或多个操作系统。服务器120还可以运行各种附加服务器应用程序和/或中间层应用程序中的任何一个,包括HTTP服务器、FTP服务器、CGI服务器、JAVA服务器、数据库服务器等。
在一些实施方式中,服务器120可以包括一个或多个应用程序,以分析和合并从客户端设备101、102、103、104、105和106的用户接收的数据馈送和/或事件更新。服务器120还可以包括一个或多个应用程序,以经由客户端设备101、102、103、104、105和106的一个或多个显示设备来显示数据馈送和/或实时事件。
在一些实施方式中,服务器120可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器120也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。云服务器是云计算服务体系中的一项主机产品,以解决传统物理主机与虚拟专用服务器(VPS,Virtual Private Server)服务中存在的管理难度大、业务扩展性弱的缺陷。
系统100还可以包括一个或多个数据库130。在某些实施例中,这些数据库可以用于存储数据和其他信息。例如,数据库130中的一个或多个可用于存储诸如音频文件和视频文件的信息。数据存储库130可以驻留在各种位置。例如,由服务器120使用的数据存储库可以在服务器120本地,或者可以远离服务器120且可以经由基于网络或专用的连接与服务器120通信。数据存储库130可以是不同的类型。在某些实施例中,由服务器120使用的数据存储库可以是数据库,例如关系数据库。这些数据库中的一个或多个可以响应于命令而存储、更新和检索到数据库以及来自数据库的数据。
在某些实施例中,数据库130中的一个或多个还可以由应用程序使用来存储应用程序数据。由应用程序使用的数据库可以是不同类型的数据库,例如键值存储库,对象存储库或由文件系统支持的常规存储库。
图1的系统100可以以各种方式配置和操作,以使得能够应用根据本公开所描述的各种方法和装置。
图2示出了根据本公开的实施例的用于检测障碍物的方法的示意性的流程图。
如图2所示,在步骤S202中,可以获取当前图像,其中当前图像可以包括表示位于预定平面上的至少一个障碍物的至少一个障碍物对象。
在一些实施例中,当前图像可以是由路侧设备采集的道路的监控图像。在一些实现方式中,当前图像可以是由路侧设备采集的一张照片。在另一些实现方式中,当前图像也可以是由路侧设备采集的视频中的一个视频帧。
利用路侧设备采集的监控图像可以监控道路上的障碍物的位置。在一些实施例中,预定平面可以是地平面。即,当前图像中的障碍物位于地面上。
在一些实施例中,可以利用单目相机获取当前图像。
在一般情况下,利用单目相机获取的图像来确定图像中的对象在三维的世界坐标系中的位置是一个欠约束问题。在没有其他约束的情况下,图像中的对象的像素坐标对应于世界坐标系中的一条射线。即,三维的世界坐标系中处于这条射线上的所有点在相机获取的图像中的像素坐标都是相同的。然而,如果图像中能够预先标定用于表示特定平面的方程,则可以利用单目相机确定图像中位于该特定平面上的对象在世界坐标系中的位置。
在车联网的应用场景中,由于所拍摄的图像一般是道路图像,因此,可以对图像中的地平面进行实现标定,得到相机坐标系下的地平面方程Ax+By+Cz+D=0,其中A、B、C、D是预先标定的系数,x、y、z是相机坐标系中的三个维度的自变量。
在已知相机坐标系下的地平面方程的情况下,通过计算像素点的像素坐标对应的射线与地平面方程的交点,即可获得该像素点在地平面上的位置。
在步骤S204中,可以基于预定平面上的多个参考点在当前图像中的当前坐标和多个参考点在模板图像中对应参考点的模板坐标,确定当前图像和模板图像之间的变换参数。其中,多个参考点所在的平面与障碍物所在的预定平面是同一平面。
在一些实施例中,可以在路侧设备投入使用之前获取路侧设备在原始外参的状态下拍摄的图像作为模板图像。可以确定在拍摄模板图像时路侧设备的原始外参(即离线外参)。在路侧设备投入使用后,可以基于离线外参对路侧设备拍摄的图像进行处理以确定图像中的障碍物的三维位置。
由于外界环境的影响,用于采集图像的路侧设备可能会发生抖动或永久移动。例如,当有大风吹过或有重型车辆经过时,路侧设备的相机的外参可能发生变化,但地平面方程仍然是基于离线确定的相机的原始外参来标定的。在这种情况下,利用基于相机的原始外参标定的地平面方程确定的图像中的障碍物对象在世界坐标系中的位置的精度会出现下降。
为了校正由于路侧设备的抖动或移动对障碍物位置检测的影响,可以基于模板图像和当前图像之间的图像变化确定当前图像和模板图像之间的变换参数。当前图像和模板图像之间的变换参数能够反映在采集当前图像时的当前相机外参相对于采集模板图像时的原始相机外参发生的变化。利用这样的变换参数,无需专门确定外参变化的具体值本身,可以将路侧设备以当前外参采集的当前图像中的像素坐标变换成利用离线外参采集的图像中各像素点的对应坐标。
在步骤S206中,可以利用步骤S204中确定的变换参数和当前图像中障碍物的像素坐标确定障碍物在世界坐标系下的位置。
利用步骤S204中确定的变换参数,可以对当前图像中的障碍物的像素坐标进行坐标变换,以得到在利用离线外参采集的模板图像中障碍物的对应像素坐标。
利用本公开的提供的方法,可以利用图像中的多个参考点确定路侧设备获取的当前图像和路侧设备在离线外参下获取的模板图像之间的变换,从而可以方便地对外界环境导致的路侧设备的外参变化所导致的误差进行校正,以消除外参实际上发生变化但不在相机中重新进行外参标定对所获取的图像中障碍物的位置检测带来的不利影响。
图3中示出了根据本公开的实施例的用于确定当前图像和模板图像之间的变换参数(例如上述的步骤S204)的示意性的流程图。利用图3中示出的方法,可以基于模板坐标得到参考点的当前坐标,而不需要知道相机的外参变化,从而可以通过图像处理的方式校正相机外参的变化所导致的误差。
在步骤S302中,基于所述模板图像和所述当前图像,并且基于模板图像中对应参考点的模板坐标,可以确定当前图像中多个参考点的当前坐标。
在车联网系统中,路侧设备采集的模板图像中的多个参考点可以是路面上的标志线(如车道线、停止线或转向标志线)上的点。例如,参考点可以是车道线、停止线或转向标志线的角点。这里所说的角点可以指的是道路上用于表示车道线、停止线或转向标志线的图形中包含的线段的交点。
可以理解的是,在道路上存在用于指示车道或行车规则的车道线、停止线、转向标志线的图形。这样的标志线的图形在实际的使用场景下一般是固定的。因此,可以利用地面上的标志线的图形来确定参考点。
本领域技术人员可以理解,在将本公开提供的方法应用于其他场景中时,也可以根据实际情况将模板图像中其他固定图案上的点作为参考点。
可以利用当前图像中的参考点相对于模板图像中的对应参考点的变化来确定当前图像和模板图像之间的变换参数。在一些实施例中,可以利用光流跟踪方法确定当前图像中的各个参考点相对于模板图像的对应参考点的第一偏移量。基于参考点在模板图像中的模板坐标和第一偏移量,可以确定参考点的当前坐标。利用光流跟踪的方法可以方便地确定当前图像中参考点的位置。
光流跟踪法可以用于跟踪图像中的点的运动。其中,光流可以是目标、场景或相机在两帧图像间运动时造成的目标的运动。光流可以反映一段时间间隔内由于运动形成的图像变化,从而确定图像点上的运动方向和运动速率。
利用光流跟踪法,可以确定当前图像中多个参考点相对于模板图像中对应参考点的运动,并可以确定多个参考点从模板图像中的对应位置运动到当前图像中的位置的第一偏移量。在已知对应参考点在模板图像中的模板坐标的情况下,可以利用对应参考点的模板坐标加上由第一偏移量确定的运动矢量得到参考点在当前图像中的当前坐标。
在步骤S304中,可以基于多个参考点的当前坐标和对应参考点的模板坐标之间的变换确定当前图像和模板图像之间的变换参数。其中,变换参数可以用于将当前图像中的多个参考点所在的平面变换成模板图像中对应参考点所在的平面。
当前图像和模板图像之间参考点的位置差异是由外界环境影响导致的相机外参变化产生的。也就是说,由于世界坐标系中的相机发生了旋转和/或平移,导致图像中参考点的位置发生了变化。因此,可以基于坐标变换的方式计算参考点所在的平面的变换参数作为当前图像和模板图像之间的变换参数。
在一些实施例中,变换参数可以是单应矩阵。其中,单应矩阵可以用于描述图像采集设备的旋转或平面之间的变换关系。在根据本公开的实施例中,参考点位于地面上。因此,可以利用参考点的模板坐标和地面坐标计算用于当前图像中的地平面和模板图像中的地平面的变换关系。在一些实现方式中,单应变换参数可以是一个8自由度的3*3维度的单应矩阵。考虑到参考点的坐标可以表示为包含两个自变量的二维像素坐标,因此,在将模板图像中的参考点和当前图像中的对应参考点看作是一对匹配点的情况下,可以利用至少4个匹配点对计算单应矩阵。在一些示例中,可以使用多于4对匹配点计算单应矩阵。在这种情况下,计算单应矩阵的系数的过程被转换为一个求解超定方程组的过程,可以利用超定方程组的最小二乘解确定单应矩阵的系数。计算过程中利用的匹配点对的数量越多,则计算得到的单应矩阵的准确定越高。
图4示出了根据本公开的实施例的基于多个参考点的当前坐标和对应参考点的模板坐标确定当前图像和模板图像之间的变换参数(例如上述的步骤S304)的示意性的流程图。利用图4中示出的方法可以剔除误差较大的参考点,以提高变换参数的准确性。
在一些情况下,由于所拍摄的道路图像中存在移动的行人和车辆,因此可能会对模板图像中确定的一部分参考点造成遮挡。在这种情况下,利用光流跟踪方法确定的当前图像中的参考点的坐标可能不够准确。因此,在一些实施例中,利用多个参考点的当前坐标以及对应参考点的模板坐标形成的匹配点对计算的单应矩阵的系数不直接确定为当前图像和模板图像之间的变换参数。可以利用图4中示出的方法对多个参考点进行筛选以得到适合用于确定上述变换参数的多个参考点的子集。
如图4所示,在步骤S401中,可以利用多个参考点的当前坐标和模板坐标确定候选变换参数。
在一些实施例中,以变换参数是单应矩阵为例,可以利用多个参考点的当前坐标以及对应参考点的模板坐标形成的匹配点对计算单应矩阵中的系数作为候选变换参数。
在步骤S402中,可以利用候选变换参数对多个参考点的当前坐标进行坐标变换,以得到多个参考点的第一变换坐标。
在理想情况下,如果用于计算候选变换参数的匹配点对的坐标是准确的,利用候选变换参数对多个参考点的当前坐标进行坐标变换得到的第一变换坐标应该与模板图像中对应参考点的模板坐标是相同的。然而,如果利用光流跟踪方法确定的参考点在当前图像中的当前坐标存在较大误差,那么步骤S402中得到的参考点的第一变换坐标与模板坐标之间也将存在较大的误差。
在步骤S403中,可以确定多个参考点的第一变换坐标相对于对应的模板坐标的重投影误差。
在步骤S404中,可以利用步骤S403中确定的重投影误差确定多个参考点的第一子集,其中第一子集中的参考点具有小于误差阈值的重投影误差。
在步骤S405中,可以利用第一子集中的参考点的当前坐标和第一子集中的参考点在模板图像中的对应参考点的模板坐标确定变换参数。
利用结合图4描述的过程,可以利用候选变换参数对参考点的当前坐标进行变换,以比较利用候选变换参数得到的模板图像中参考点的坐标和预先标定的模板坐标之间的差异,并剔除差异较大的参考点。可以利用差异较小的参考点重新计算当前图像和模板图像之间的变换参数。
图5示出了根据本公开的实施例的基于多个参考点的当前坐标和对应参考点的模板坐标确定当前图像和模板图像之间的变换参数(例如上述的步骤S304)的另一种示意性的流程图。利用图5中示出的方法可以剔除误差较大的参考点,以提高变换参数的准确性。
在步骤S501中,对于多个参考点中的每个参考点,可以利用当前图像中以该参考点为中心当前图片块和模板图像中以该参考点的对应参考点为中心的模板图片块之间的相似度,确定该参考点和该参考点的对应参考点之间的第二偏移量。
在一些实施例中,当前图片块和模板图片块可以是长、宽均为101像素的图片块。可以通过计算当前图片块和模板图片块之间的相似度确定该参考点的第二偏移量。在一些实现方式中,可以通过计算当前图片块和模板图片块之间基于相位的相似度确定第二偏移量。本领域技术人员可以理解,也可以利用其他任何图像处理方法确定当前图片块和模板图片块之间的相似度,只要这样的相似度能够指示参考点的偏移量。
在步骤S502中,可以基于第一偏移量和第二偏移量确定多个参考点的第二子集,第二子集中的参考点的第一偏移量和第二偏移量之间的差异小于差异阈值。
利用步骤S501中确定的第二偏移量,可以进一步对第一子集中的参考点进行筛选。如果第一偏移量和第二偏移量之间的差异大于差异阈值,则可以认为该参考点的位置是不可信的。因此可以在计算变换参数时剔除这样的参考点。
在步骤S503中,可以利用第一子集中的参考点的当前坐标和第一子集中的参考点在模板图像中的对应参考点的模板坐标确定变换参数。
在一些实施例中,可以在利用图4中示出的方法得到第一子集的参考点后,对第一子集中的参考点执行图5中描述的步骤以得到第二子集。在这种情况下,第二子集可以是第一子集的子集。
图6示出了根据本公开的实施例的用于利用变换参数和当前图像中障碍物对象的像素坐标确定障碍物在世界坐标系下的位置(例如上述的步骤S206)的过程的示意性的流程图。由于障碍物和参考点位于同一平面,因此,利用参考点计算的变换参数,可以方便地将当前图像中的障碍物对象坐标变换到模板图像上,从而可以确定障碍物在世界坐标系中的三维坐标。
在步骤S602中,可以确定障碍物对象在当前图像中的第一坐标。
在一些实施例中,可以利用目标检测算法对当前图像进行处理,以识别当前图像中存在的表示障碍物的障碍物对象。在车联网的应用场景中,障碍物可以是行人或车辆。在一些实现方式中,可以利用目标检测算法识别出当前图像中存在的障碍物对象的目标框,并可以在目标框上确定指示障碍物对象的底面中心点坐标作为第一坐标。例如,可以基于障碍物的类型在目标框上确定指示障碍物对象的底面中心点坐标。在另一些实现方式中,可以训练用于实现目标检测算法的模型,使得模型能够学习到障碍物对象的底面中心点的位置,并利用模型输出的结果直接确定障碍物对象的底面中心点的位置。
在步骤S604中,可以基于变换参数对障碍物的第一坐标进行变换,以得到障碍物的第二坐标。
利用结合图1-图5中至少一个附图描述的方法确定的变换参数,可以将基于当前图像中障碍物对象的第一坐标确定障碍物对象在模板图像中的第二坐标。利用这种方法可以消除由于相机外参变化导致的图像中障碍物对象位置不准的问题。
在步骤S606中,可以基于障碍物对象的第二坐标确定障碍物在世界坐标系下的位置。
如前所述,在路侧设备投入使用之前,已经对模板图像中的地平面进行实现标定。因此,可以利用在相机坐标系中指示预定平面的方程,基于障碍物对象的第二坐标确定障碍物在相机坐标系下的位置。基于相机坐标系和世界坐标系的几何变换关系,可以基于障碍物在相机坐标系下的位置确定障碍物在世界坐标系下的位置。利用已知的预定平面的方程,可以提供预定平面上的障碍物的深度信息。
图7示出了根据本公开的实施例的图像中的参考点的示意图。如图7所示,可以将道路上的标志线上的点确定为参考点。例如,点701、702、703、705是车道线的角点,点704是转向标志线的角点。
尽管图7中仅示出了参考点701~705,然而,可以理解的是,本领域技术人员可以将图7中示出的标志线上更多的点确定为参考点。
图8A和图8B示出了障碍物检测的结果示意图。
图8A示出了在未经校正的情况下,利用两个路侧设备在相机存在抖动的情况下分别识别的道路上的障碍物。其中方框801和803对应于两个路侧设备分别检测到的实际道路上的相同的一辆车的检测位置,方框802和804对应于两个路侧设备分别检测到的实际道路上的相同的另一辆车的检测位置。由于相机的抖动未经校正,因此两个路侧设备采集的图像中检测到的障碍物(车辆)的位置是不同的。在这种情况下,综合两个路侧设备所获取的图像,可能会认为路口存在4台车辆,而这与实际情况是不符合的。
图8B示出了在经过校正的情况下,利用两个路侧设备在相机存在抖动的情况下识别的道路上的障碍物。由于已经对路侧设备的相机抖动进行了校正,因此两个路侧设备以不同的拍摄角度可以在相同的位置检测到车辆801和802。因此避免了由于相机抖动导致的检测误差。
图9示出了根据本公开的实施例的用于检测障碍物的装置的示意性框图。如图9所示,用于检测障碍物的装置900可以包括图像获取单元910、变换确定单元920以及障碍物位置确定单元930。
图像获取单元910可以配置成获取当前图像,其中当前图像中包括位于预定平面上的至少一个障碍物。变换确定单元920可以配置成基于预定平面上的多个参考点在当前图像中的当前坐标和多个参考点在模板图像中对应参考点的模板坐标,确定当前图像和模板图像之间的变换参数。障碍物位置确定单元930可以配置成利用变换参数和当前图像中障碍物的像素坐标确定障碍物在世界坐标系下的位置。
这里所说的用于检测障碍物的装置900的上述各单元910~930的操作分别与前面描述的步骤S202~S206的操作类似,在此不再加以赘述。
根据一些实施例,变换确定单元可以包括:坐标确定子单元,配置成基于模板图像和当前图像,并且基于模板图像中对应参考点的模板坐标,确定当前图像中多个参考点的当前坐标;以及参数确定单元,配置成基于多个参考点的当前坐标和对应参考点的模板坐标之间的变换确定当前图像和模板图像之间的变换参数。
根据一些实施例,坐标确定子单元可以包括:跟踪子单元,配置成利用光流跟踪方法确定当前图像中的参考点相对于模板图像的对应参考点的第一偏移量;以及偏移子单元,配置成基于参考点的第一偏移量和模板坐标,确定参考点的当前坐标。
根据一些实施例,参数确定单元可以包括:候选变换确定子单元,配置成利用多个参考点的当前坐标和模板坐标确定候选变换参数;变换子单元,配置成利用候选变换参数对多个参考点的当前坐标进行坐标变换,以得到多个参考点的第一变换坐标;误差确定子单元,配置成确定多个参考点的第一变换坐标相对于对应的模板坐标的重投影误差;筛选子单元,配置成确定多个参考点的第一子集,其中第一子集中的参考点具有小于误差阈值的重投影误差;以及变换参数确定子单元,配置成利用第一子集中的参考点的当前坐标和第一子集中的参考点在所述模板图像中的对应参考点的模板坐标确定所述变换参数。
根据一些实施例,参数确定单元可以包括:相似度确定子单元,配置成对于多个参考点中的每个参考点,利用当前图像中以该参考点为中心的当前图片块和模板图像中以该参考点的对应参考点为中心的模板图片块之间的相似度,确定该参考点和该参考点的对应参考点之间的第二偏移量;筛选子单元,配置成基于第一偏移量和第二偏移量确定多个参考点的第二子集,其中第二子集中的参考点的第一偏移量和第二偏移量之间的差异小于差异阈值;以及变换参数确定子单元,配置成利用第二子集中的参考点的当前坐标和第二子集中的参考点在模板图像中的对应参考点的模板坐标确定变换参数。
根据一些实施例,障碍物位置确定单元可以包括:第一坐标确定子单元,配置成确定障碍物对象在当前图像中的第一坐标;第二坐标确定子单元,配置成基于变换参数对障碍物对象的第一坐标进行变换,以得到障碍物对象的第二坐标;以及世界坐标确定子单元,配置成基于障碍物对象的第二坐标确定障碍物在世界坐标系下的位置。
利用本公开的提供的装置,可以利用图像中的多个参考点确定路侧设备获取的当前图像和路侧设备在离线外参下获取的模板图像之间的变换,从而可以方便地对外界环境导致的路侧设备的外参变化进行校正,以消除外参变化对所获取的图像中障碍物的位置检测带来的不利影响。
根据本公开的实施例,还提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行结合图1-图6所述的方法。
根据本公开的实施例,还提供了一种路侧设备,包括如前所述的电子设备。
根据本公开的实施例,还提供了一种云控平台,包括如前所述的电子设备。
根据本公开的实施例,还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行结合图1-图6所述的方法。
根据本公开的实施例,还提供了一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现结合图1-图6所述的方法。
参考图10,现将描述可以作为本公开的移动终端的电子设备1000的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图10所示,设备1000包括计算单元1001,其可以根据存储在只读存储器(ROM)1002中的计算机程序或者从存储单元1008加载到随机访问存储器(RAM)1003中的计算机程序,来执行各种适当的动作和处理。在RAM 1003中,还可存储设备1000操作所需的各种程序和数据。计算单元1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
设备1000中的多个部件连接至I/O接口1005,包括:输入单元1006、输出单元1007、存储单元1008以及通信单元1009。输入单元1006可以是能向设备1000输入信息的任何类型的设备,输入单元1006可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入,并且可以包括但不限于鼠标、键盘、触摸屏、轨迹板、轨迹球、操作杆、麦克风和/或遥控器。输出单元1007可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元1008可以包括但不限于磁盘、光盘。通信单元1009允许设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、1302.11设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算单元1001可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1001的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1001执行上文所描述的各个方法和处理,例如根据本公开的实施例的障碍物检测方法。例如,在一些实施例中,障碍物检测可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1002和/或通信单元1009而被载入和/或安装到设备1000上。当计算机程序加载到RAM 1003并由计算单元1001执行时,可以执行上文描述的方法的一个或多个步骤。备选地,在其他实施例中,计算单元1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行障碍物检测方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行、也可以顺序地或以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。