首页> 中国专利> 选择图像场景中彼此对应于托盘的垂直范围内的对象

选择图像场景中彼此对应于托盘的垂直范围内的对象

摘要

提供了一种用于识别灰度级图像中可能对应于一个或多个实际托盘的一个或多个评分的候选对象的方法。该方法可以包括:由计算机识别灰度级图像中的第一多个评分的候选对象;由计算机存储第一多个评分的候选对象的起始列表,其中该起始列表包括用于第一多个评分的候选对象中每一个的相应记录,每个记录都包括评分的候选对象在灰度级图像中的相应位置,以及代表灰度级图像中该评分的候选对象对应于实际托盘结构的可能性的相应合成对象得分;并且从起始列表中除去第一多个评分的候选对象中a)位于第一多个评分的候选对象中特定一个评分的候选对象的预定垂直距离内;及b)其相应的合成对象得分小于该特定一个评分的候选对象的合成对象得分的每一个候选对象。

著录项

  • 公开/公告号CN103889878A

    专利类型发明专利

  • 公开/公告日2014-06-25

    原文格式PDF

  • 申请/专利权人 克朗设备公司;

    申请/专利号CN201280051228.2

  • 申请日2012-10-16

  • 分类号B66F9/00(20060101);G06T7/20(20060101);

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人边海梅

  • 地址 美国俄亥俄州

  • 入库时间 2023-12-17 00:30:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-11-16

    授权

    授权

  • 2014-11-26

    实质审查的生效 IPC(主分类):B66F9/00 申请日:20121016

    实质审查的生效

  • 2014-06-25

    公开

    公开

说明书

技术领域

本发明一般而言涉及材料搬运车辆,并且更具体地说涉及用于成 像并定位要被该车辆拾起的托盘的系统。

背景技术

在典型的仓库或配送中心,托盘化的库存物品存储在与通常长而 平行延伸的通道每一侧对齐的货架或其它存储结构中。为了最大化可 用的空间,让几个存储结构垂直堆放是常见的,使得库存可以在升高 的高度存储。因此,检索和/或摆放库存的材料搬运车辆的操作人员 可能需要从车辆的操作位置向上看,以便识别用于检索或摆放库存的 叉子的正确高度和横向位置。

在增加的高度处定位叉架以便拾起或摆放托盘化的材料变得越来 越困难。可视角度变得更加困难。为了有效地执行必要的定位调整, 会需要大量的培训。即使具有足够的能力,正确定位也会花比材料搬 运车辆和操作人员的有效使用所期望的更多的时间。

发明内容

根据本发明的第一方面,提供了用于识别灰度级图像中可能对应 于一个或多个实际托盘的一个或多个评分的候选对象的方法。该方法 可以包括:由计算机识别灰度级图像中的第一多个评分的候选对象; 由计算机存储第一多个评分的候选对象的起始列表,其中该起始列表 包括用于第一多个评分的候选对象中每一个的相应记录,每个记录都 包括评分的候选对象在灰度级图像中的相应位置,以及代表灰度级图 像中该评分的候选对象对应于实际托盘结构的可能性的相应合成对象 得分;并且从起始列表中除去第一多个评分的候选对象中a)位于第 一多个评分的候选对象中特定一个评分的候选对象的预定垂直距离内; 及b)其相应的合成对象得分小于该特定一个评分的候选对象的合成 对象得分的每一个候选对象。

从起始列表中除去可以包括:从起始列表中剩余的第一多个评分 的候选对象中选择具有最大合成得分的评分的候选对象作为特定一个 评分的候选对象;把该特定一个评分的候选对象添加到临时子列表; 识别起始列表中剩余的第一多个评分的候选对象中位于该特定一个评 分的候选对象的相应位置的预定垂直距离内的所有其它候选对象;从 起始列表删除该特定一个评分的候选对象,并且从起始列表删除位于 该特定一个评分的候选对象的相应位置的预定垂直距离内的那些所识 别出的评分的候选对象。

从列表中除去可以对一个或多个不同的特定一个评分的候选对象 重复,直到起始列表为空。

该方法还可以包括由计算机通过把更新列表设置成等于所述临时 子列表来创建用于第二多个评分的候选对象的更新列表,其中更新列 表包括用于第二多个评分的候选对象中每一个的相应记录。

用于第一多个评分的候选对象中每一个的相应记录可以包括与该 评分的候选对象关联的中心纵梁的相应属性,其中这种相应属性包括: 相应左下角的相应的x-坐标值xLLC;相应右下角的相应的x-坐标值 xLRC;从原点到以相应预定的角度通过相应左下角所画线的正 交距离的相应正交距离值ρBPBL;并且其中相应预定的角度与 该评分的候选对象的相应底部托盘板线关联并且是相对于水平线测量 的。

该评分的候选对象的相应位置可以具有估计为等于的x-坐 标xLC和估计为等于ρBPBL的y-坐标yLC

如果满足以下不等式,则第一多个评分的候选对象中另一个候选 对象可以位于该特定评分的候选对象相应位置的预定垂直距离内:

其中:

ρBPBL是与该特定评分的候选对象关联的相应正交距离值;

Vs是预定的像素个数;

是与该特定评分的候选对象关联的相应预定的角度;

xLC是第一多个评分的候选对象中另一个候选对象的相应位置的 相应x坐标;及

yLC是第一多个评分的候选对象中该另一个候选对象的相应位置 的相应y坐标。

预定的像素个数可以是大约50。

根据本发明的第二方面,提供了用于识别灰度级图像中可能对应 于一个或多个实际托盘的一个或多个评分的候选对象的系统。该系统 可以包括:处理器,配置为执行可访问存储器中的指令;对象识别器 部件,配置为识别灰度级图像中的第一多个评分的候选对象;存储设 备,与处理器耦合并且配置为存储第一多个评分的候选对象的起始列 表,其中该起始列表包括用于第一多个评分的候选对象中每一个的相 应记录,每个记录都包括评分的候选对象在灰度级图像中的相应位置, 以及代表灰度级图像中该评分的候选对象对应于实际托盘结构的可能 性的相应合成对象得分;以及对象分析器部件,配置为从起始列表中 除去第一多个评分的候选对象中a)位于第一多个评分的候选对象中 特定一个评分的候选对象的预定垂直距离内;及b)其相应的合成对 象得分小于该特定一个评分的候选对象的合成对象得分的每一个候选 对象。

为了从起始列表中除去第一多个评分的候选对象中的每一个,对 象分析器部件还可以配置为执行多个操作,包括:从起始列表中剩余 的第一多个评分的候选对象中选择具有最大合成得分的评分的候选对 象作为特定一个评分的候选对象;把该特定一个评分的候选对象添加 到临时子列表;识别起始列表中剩余的第一多个评分的候选对象中位 于该特定一个评分的候选对象的相应位置的预定垂直距离内的所有其 它候选对象;从起始列表删除该特定一个评分的候选对象,并且从起 始列表删除位于该特定一个评分的候选对象的相应位置的预定垂直距 离内的那些所识别出的评分的候选对象。

对象分析器部件可以配置为对一个或多个不同的特定一个评分的 候选对象重复这多个操作,直到起始列表为空。

该系统还可以包括列表更新部件,配置为通过把更新列表设置成 等于所述临时子列表来创建用于第二多个评分的候选对象的更新列表, 其中更新列表包括用于第二多个评分的候选对象中每一个的相应记录。

用于第一多个评分的候选对象中每一个的相应记录可以包括与该 评分的候选对象关联的中心纵梁的相应属性,其中这种相应属性包括: 相应左下角的相应的x-坐标值xLLC;相应右下角的相应的x-坐标值 xLRC;从原点到以相应预定的角度通过相应左下角所画线的正 交距离的相应正交距离值ρBPBL;并且其中相应预定的角度与 该评分的候选对象的相应底部托盘板线关联并且是相对于水平线测量 的。

该评分的候选对象的相应位置可以具有估计为等于的x-坐 标xLC和估计为等于ρBPBL的y-坐标yLC

如果满足以下不等式,则第一多个评分的候选对象中另一个候选 对象可以位于该特定评分的候选对象相应位置的预定垂直距离内:

其中:

ρBPBL是与该特定评分的候选对象关联的相应正交距离值;

Vs是预定的像素个数;

是与该特定评分的候选对象关联的相应预定的角度;

xLC是第一多个评分的候选对象中另一个候选对象的相应位置的 相应x坐标;及

yLC是第一多个评分的候选对象中该另一个候选对象的相应位置 的相应y坐标。

预定的像素个数可以是大约50。

根据本发明的第三方面,提供了用于识别灰度级图像中可能对应 于一个或多个实际托盘的一个或多个评分的候选对象的计算机程序产 品。该计算机程序产品可以包括其中包含计算机可读程序代码的计算 机可读存储介质。该计算机可读程序代码可以包括:配置为识别灰度 级图像中的第一多个评分的候选对象的计算机可读程序代码;配置为 存储第一多个评分的候选对象的起始列表的计算机可读程序代码,其 中该起始列表包括用于第一多个评分的候选对象中每一个的相应记录, 每个记录都包括评分的候选对象在灰度级图像中的相应位置,以及代 表灰度级图像中评分的候选对象对应于实际托盘结构的可能性的相应 合成对象得分;以及配置为从起始列表中除去第一多个评分的候选对 象中a)位于第一多个评分的候选对象中特定一个评分的候选对象的 预定垂直距离内;及b)其相应的合成对象得分小于该特定一个评分 的候选对象的合成对象得分的每一个候选对象的计算机可读程序代码。

配置为从起始列表除去第一多个评分的候选对象中每一个的计算 机可读程序代码可以包括:配置为执行多个操作的计算机可读程序代 码,包括:从起始列表中剩余的第一多个评分的候选对象中选择具有 最大合成得分的评分的候选对象作为特定一个评分的候选对象;把该 特定一个评分的候选对象添加到临时子列表;识别起始列表中剩余的 第一多个评分的候选对象中位于该特定一个评分的候选对象的相应位 置的预定垂直距离内的所有其它候选对象;从起始列表删除该特定一 个评分的候选对象,并且从起始列表删除位于该特定一个评分的候选 对象的相应位置的预定垂直距离内的那些所识别出的评分的候选对象。

配置为从起始列表除去第一多个评分的候选对象中每一个的计算 机可读程序代码可以包括配置为对一个或多个不同的特定一个评分的 候选对象重复这多个操作,直到起始列表为空的计算机可读程序代码。

该计算机程序产品还可以包括配置为通过把更新列表设置成等于 所述临时子列表来创建用于第二多个评分的候选对象的更新列表的计 算机可读程序代码,其中更新列表包括用于第二多个评分的候选对象 中每一个的相应记录。

用于第一多个评分的候选对象中每一个的相应记录可以包括与该 评分的候选对象关联的中心纵梁的相应属性,其中这种相应属性包括: 相应左下角的相应的x-坐标值xLLC;相应右下角的相应的x-坐标值 xLRC;从原点到以相应预定的角度通过相应左下角所画线的正 交距离的相应正交距离值ρBPBL;并且其中相应预定的角度与 该评分的候选对象的相应底部托盘板线关联并且是相对于水平线测量 的。

该评分的候选对象的相应位置可以具有估计为等于的x-坐 标xLC和估计为等于ρBPBL的y-坐标yLC

如果满足以下不等式,则第一多个评分的候选对象中另一个候选 对象可以位于该特定评分的候选对象相应位置的预定垂直距离内:

其中:

ρBPBL是与该特定评分的候选对象关联的相应正交距离值;

Vs是预定的像素个数;

是与该特定评分的候选对象关联的相应预定的角度;

xLC是第一多个评分的候选对象中另一个候选对象的相应位置的 相应x坐标;及

yLC是第一多个评分的候选对象中该另一个候选对象的相应位置 的相应y坐标。

预定的像素个数可以是大约50。

附图说明

图1是本发明基于图像的检测系统可以结合在其中的材料搬运车 辆的侧视图;

图2是构成图1中所说明的车辆的叉架装置(fork carriage  apparatus)的透视图;

图3是托盘的前视图;

图4是说明由根据本发明的图像分析计算机实现的步骤的流程图;

图5是说明由根据本发明的图像分析计算机为了识别可能的托盘 角落而实现的步骤的流程图;

图6、7、6B和7A说明了第一、第二、第三和第四角落模板;

图6A说明了位于水平和垂直交叉相关结果之上的第一角落模板;

图6C-6E说明了用于定位左下角图像中最大像素值的例子;

图6F说明了从较高分辨率图像产生较低分辨率图像的例子;

图6G说明了为了潜在的左下角的位置而被进一步分析的中等水 平图像的一部分;

图8是说明由根据本发明的图像分析计算机为了确定第一Ro图 像和可选的第二Ro图像而实现的步骤的流程图;

图9说明了用于计算水平梯度图像中的像素值的例子;

图10说明了用于计算垂直梯度图像中的像素值的例子;

图11A-11D说明了包括至少一个窗口的左Ro图像的部分;

图12A、12B、13A和13B是说明由根据本发明一种实施例的图 像分析计算机为了从左Ro图像中的左下角开始跟踪水平和垂直线而 实现的步骤的流程图;

图14A和14B说明了包括至少一个窗口的左Ro图像的部分;

图14C和14D是说明根据本发明另一种实施例用于从左下角开 始跟踪水平和垂直线的步骤的流程图;

图14E是具有作为图14C流程图中对应步骤的备选方案的一些 步骤的流程图;

图15是说明由根据本发明的图像分析计算机为了确定多条可能 的线中哪条最有可能是经过预审合格的左下角的实际线而实现的步骤 的流程图;

图15A说明了穿过预审合格的左下角的两条可能线;及

图16A说明了规格化的灰度级图像,该图像说明了具有底部托 盘板200和中心纵梁208的托盘P;

图16B是对应于图16A中灰度级图像的水平交叉相关图像;

图16C是对应于图16A中灰度级图像的垂直交叉相关图像;

图16D是对应于图16A中灰度级图像的水平梯度图像;

图16E是对应于图16A中灰度级图像的垂直梯度图像;

图16F是对应于图16A中灰度级图像的第一Ro图像;

图16G是对应于图16A中灰度级图像的第二Ro图像;

图17是说明左下角和右下角的托盘一部分的视图;

图18说明了根据本发明的原理、用于评估托盘结构潜在的洞和 中心纵梁的几何框架;

图19A说明了根据本发明的原理、用于估计中心纵梁高度的几 何框架;

图19B说明了根据本发明的原理、用于评估中心纵梁可能的左 和右垂直边缘的几何框架;

图20A是说明由根据本发明的图像分析计算机为了分析中心纵 梁的可能左边缘而实现的步骤的流程图;

图20B说明了根据图20A的流程图分析的图像部分中像素的例 子;

图21A是说明由根据本发明的图像分析计算机为了确定潜在地 代表托盘各个部分的多个矩形的高度而实现的步骤的流程图;

图21B说明了图形解释图21A流程图操作各方面的几何框架;

图22A说明了有可能代表位于托盘中心纵梁左边的叉子开口的 第一矩形的例子;

图22B说明了有可能代表位于托盘中心纵梁右边的叉子开口的 第二矩形的例子;

图22C说明了有可能代表托盘中心纵梁的第三矩形的例子;

图23A是说明由根据本发明的图像分析计算机为了计算包括所 述第一、第二和第三矩形的像素而实现的步骤的流程图;

图23B说明了图形解释图23A流程图操作各方面的几何框架;

图23C是说明由根据本发明的图像分析计算机为了计算第一和 第二矩形的负像素的垂直投影而实现的步骤的流程图;

图23D是说明由根据本发明的图像分析计算机为了计算第三矩 形的至少一些负像素的垂直投影而实现的步骤的流程图;

图23E绘出了根据本发明的原理、用于维护图像帧中候选对象 的对象列表(Objectlist)的示例性算法的流程图;

图24A绘出了根据本发明的原理、用于从用于图像帧的 Objectlist中消除至少一些候选对象的示例性算法的流程图;

图24B绘出了根据本发明的原理、用于消除在彼此附近的一个 或多个候选对象的示例性算法的流程图;

图24C绘出了根据本发明的原理、用于消除在彼此垂直本地 (vertically local)的一个或多个候选对象的示例性算法的流程图;

图24D绘出了根据本发明的原理、具有候选对象的示例图像帧;

图25是根据本发明的原理、用于在不同的图像帧之间跟踪候选 对象的流程图;

图26A和26B绘出了根据本发明的原理、具有候选对象的前一 图像帧和下一个图像帧;

图27A说明了物理世界中其位置可以相对于多于一个参考帧来 计算的托盘;

图27B说明了用于把物理世界位置投影到图像平面上的针孔照 相机模型;

图27C说明了根据本发明的原理、具有不同像素位置的灰度级 图像;

图27D是说明由根据本发明的图像分析计算机为了识别离群数 据而实现的步骤的流程图;

图27E说明了根据本发明的原理、照相机坐标系统轴关于世界 坐标系统的相对旋转;

图27F说明了根据本发明的原理、物理世界中可以相对于多于 一个参考帧来计算的托盘位置;

图28是说明由根据本发明的图像分析计算机为了利用卡尔曼 (Kalman)滤波器预测状态变量而实现的步骤的流程图;

图29A-29F是说明根据本发明的原理、用于确定切口(cutout) 位置的流程图;及

图30说明了根据本发明的原理、可用于执行外在照相机校准的 多个托盘的图像投影配置。

具体实施方式

现在参考图1,图1说明了本发明可以结合在其中的叉车或车辆 10。车辆10包括包含操作人员隔间22的动力单元或主体20。车辆 10还包括桅杆(mast)组件30和叉架装置40,如图2中最好地示出 的。虽然本发明在本文中参考直立式平衡卡车来描述,但是对本领域 技术人员来说将很显然,本发明及本发明的变体可以更一般性地应用 于各种其它材料搬运车辆,包括包含单桅杆的驾驶者可达(rider  reach)叉车,如在美国专利申请公开No.2010/0065377中所描述的, 该申请的全部公开内容在此引入作为参考。本发明的实施例可以结合 在其中的车辆10的不同类型包括手动车辆、半自主车辆和自主车辆。

桅杆组件30包括第一、第二和第三桅杆焊件32、34和36,其 中第二焊件34套在第一焊件32中,而第三焊件36套在第二焊件34 中。第一焊件32固定地耦合到卡车主体20。第二或中间焊件34能 够相对于第一焊件32垂直移动。第三或内部焊件36能够相对于第一 和第二焊件32和34垂直移动。

为了实现第二焊件34相对于第一焊件32的移动,第一和第二提 升油缸(lift ram)/汽缸组件35(在图1中只说明了第一个组件)耦 合到第一和第二焊件32和34。链条35A(在图1中只说明了第一个 组件的链条)固定到第一和第二提升组件的汽缸及第三焊件36,并 且在耦合到对应的一个油缸的滑轮35B(在图1中只说明了第一个组 件的滑轮)之上延伸,使得第一和第二提升组件的油缸的移动实现第 三焊件36相对于第一和第二焊件32和34的移动。

叉架装置40耦合到第三焊件36,从而相对于第三级焊件36垂 直移动。叉架装置40还与第三焊件36一起相对于第一和第二焊件 32和34垂直移动。

在所说明的实施例中,叉架装置40包括第一和第二叉子42A和 42B安装到其的叉架机制44。叉架机制44安装到到达机制(reach  machanism)46,该到达机制46又安装到桅杆支架组件48。桅杆支 架组件48可移动地耦合到第三焊件36。到达机制46包括缩放或剪 刀结构46A,该结构实现叉架机制44以及第一和第二叉子42A和 42B朝着和远离桅杆支架组件48和第三焊件36的移动。

叉架机制44包括支架支撑结构44A和叉架框44B。叉子42A和 42B安装到叉架框44B。该叉架框44B耦合到支架支撑结构44A,用 于相对于支撑结构44A横向和枢轴移动。侧移活塞/汽缸单元44C安 装到支架支撑结构44A和叉架框44B,从而实现叉架框44B相对于 支架支撑结构44A的横向移动。

仅在图1中示出的倾斜活塞/汽缸单元44D固定地附连到支架支 撑结构44A并且与叉架框44B接触,用于实现叉架框44B相对于支 架支撑结构44A的枢轴移动。

站在隔间22中的操作人员可以经舵盘(tiller)12控制卡车10 行进的方向。操作人员还可以经多功能控制器14控制卡车10的行进 速度、叉架装置和桅杆组件的延伸,以及第一和第二叉子42A和 42B的倾斜和侧移。

根据本发明,提供了基于图像的托盘检测系统100,该系统用于 在叉架装置40被升高和降低时重复地捕捉图像,识别图像帧中可能 包括一个或多个托盘的一个或多个对象,确定这一个或多个对象中哪 一个最有可能包括托盘,在多个帧中跟踪这一个或多个对象以便确定 它们相对于叉架装置40的位置,并且生成并向位于车辆动力单元20 上的车辆计算机50发送托盘位置信息。

系统100包括耦合到叉架框44B的图像分析计算机110、耦合到 叉架框44B下部144B的光源120、耦合到叉架框44B下部144B的 成像照相机130以及位于操作人员隔间22中以便致动系统100的触 发器开关140。虽然有些安装位置可能比其它位置更加优选,但是成 像照相机和灯可以位于叉子上面或下面。期望照相机随叉子侧移,但 是不一定需要随叉子倾斜。不管照相机和灯如何安装,叉子都应当在 视场的底部,以便给出关于正在接近的托盘的最大预警。在所说明的 实施例中,成像照相机130和灯120在叉子的下面,见图1。计算机 110可以位于卡车上任何位置。还有可能零件110、120和130可以 组合到单个包装中,包括智能照相机。在所说明的实施例中,光源 120包括近红外光源,这可以是例如一个或多个在叉子42A和42B 移动时开启或者只在获得图像时才“脉动”开启的发光二极管 (LED)。图像分析计算机110可以利用有线电缆或者无线地向车辆 计算机50传送托盘识别和位置信息,使得车辆计算机50可以准确地 在垂直和横向方向定位叉子42A和42B,如分别由Y轴和X轴定义 的,见图1。

车辆和图像分析计算机50和110可以包括接收输入数据、通过 计算机指令处理那种数据并且生成输出数据的任何种类的设备。这种 计算机可以是手持式设备、膝上型或笔记本计算机、台式计算机、微 型计算机、数字信号处理器(DSP)、大型机、服务器、手机、个人 数字助理、其它可编程计算机设备,或者其任意组合。这种计算机还 可以利用可编程的逻辑设备来实现,诸如现场可编程门阵列 (FPGA),或者作为替代,实现为专用集成电路(ASIC)或类似的 设备。术语“计算机”也要涵盖上述设备中两个或更多个的组合,例 如,两个或更多个微型计算机。车辆和图像分析计算机50和110可 以无线地或者硬连线地彼此连接。还预期计算机50和110可以组合 成作为单个计算机。因此,本发明的各方面可以完全作为硬件、完全 作为软件(包括固件、驻留软件、微代码等)或者以组合的软件和硬件 实现来实现,本文一般称为“电路”、“模块”、“部件”或“系统”。此 外,本发明的各方面还可以采取在一种或多种计算机可读介质中体现的 计算机程序产品的形式,该计算机可读介质中包含计算机可读程序代码。

当操作人员希望拾起一个托盘P时,操作人员操纵车辆10,使得 它直接定位在货架R上要拾起的期望托盘P的前面并在X方向与其大 体横向对准,见图1。然后,操作人员经多功能控制器14的致动在Y 方向垂直地升高叉子42A和42B至高于应当被忽略的最后一个托盘P 的位置。在叉架装置40持续垂直移动的时候,图像分析计算机110使 成像照相机130拍摄图像帧,诸如以10-30fps(帧/秒)的速率。如以 下将更具体讨论的,图像分析计算机110分析图像,识别图像帧中的一 个或多个对象,确定这一个或多个对象中哪一个最有可能包括托盘,在 多个图像帧中跟踪这一个或多个对象,确定对象相对于世界坐标原点的 位置并且生成并向车辆计算机50传送托盘位置信息。图像分析计算机 110还可以无线地向车辆计算机50传送托盘位置信息,使得车辆计算机 50可以准确地在垂直和横向方向定位叉子42A和42B,从而使得叉子 42A和42B直接位于托盘中开口的前面。其后,操作人员只需要使叉架 装置朝着托盘移动,使得叉子进入托盘开口。

在图3中,说明了具有底部和顶部托盘板200和202、第一和第二 外部纵梁204以及中心纵梁208的托盘P。板200、202及纵梁204、 206和208定义第一和第二叉子接纳开口210和212。托盘板200和202 以及中心纵梁208还定义左下角214、右下角216、左上角218和右上 角220。左下角214在本文中也称为中心纵梁208的左下角,而右下角 216在本文中也称为中心纵梁208的右下角。

为了在成像照相机130拍摄的每个图像帧中识别一个或多个对象并 且确定这一个或多个对象中哪一个最有可能包括托盘,假设照相机定向 成或者向上或者直接向前看,或者在叉子的上面或者在叉子的下面,图 像分析计算机110实现至少以下过程:识别灰度级图像中一个或多个托 盘P的可能角落,见图4的过程230;确定包括从原点到对应灰度级图 像中一个或多个可能托盘上一条或多条可能线的正交距离的第一和可选 的第二Ro图像,见图4的过程232;尝试从第三组可能的左下角中每 个可能的左下角跟踪水平和垂直线,以定义一组预审合格的左下角,见 图4的过程234;对于每个预审合格的左下角,确定多条可能的线中哪 一条最有可能是经过预审合格的左下角的实际线,见图4的过程236; 并且尝试为找出实际线的每个预审合格的左下角识别一组右下角,见图 4的过程238。还预期成像照相机可以位于叉子42A、42B上面,朝下 而不是朝上看,当照相机位于叉子42A、42B下面时,朝上看。在这种 实施例中,计算机110可以尝试从第三组可能的左上角中每个可能的左 上角跟踪水平和垂直线,以定义一组预审合格的左上角,并且为每个预 审合格的左上角确定多条可能的线中哪一条最有可能是经过预审合格的 左上角的实际线。计算机110还可以尝试定位与每个左上角关联的第三 组可能的右上角。

现在将参考图5描述用于识别图像中一个或多个托盘P的可能角落 的过程230。在所说明的实施例中,定义从成像照相机130接收到的每 个图像帧的数据包括灰度级数据。图像分析计算机110规格化灰度级数 据,使其成为零均值数据,见图5中的步骤240。规格化的灰度级图像 的创建可以通过计算灰度级图像中所有像素的均值,然后从每个个别的 像素值减去那个均值来实现。因此,对应于托盘结构的规格化灰度级图 像中的像素趋于具有正像素值,而规格化灰度级图像中的其它像素趋于 具有负像素值。下文中所使用的术语“灰度级数据”和“灰度级图像” 分别指“规格化的灰度级数据”和“规格化的灰度级图像”。然后,图 像分析计算机110利用第一步进-边缘模板确定一组水平交叉相关结果, 即水平交叉相关图像,见步骤242,在所说明的实施例中该第一步进-边 缘模板包括:

T(x)=-1,-1,-1,-1,-1,-1,+1,+1,+1,+1,+1,+1

其中“-1”对应于开放区域,而“+1”对应于托盘上的结构。

利用第一步进-边缘模板T(x)和规格化的灰度级图像数据,图像分 析计算机110根据以下单维规格化交叉相关公式确定水平交叉相关结果:

NCC(x)=ΣW(x)(fx-fx)T(x)ΣW(x)(fx-fx)2ΣW(x)T2(x)

其中:

W(x)=第一步进-边缘模板的维度限制,即在所说明的实施例中是 12;

fx=灰度级图像中单个点的灰度级强度值;

T(x)=第一步进-边缘模板。

水平交叉相关图像具有与其对应灰度级图像相同数量的像素,使得 在灰度级图像和水平交叉相关图像中的像素位置之间存在一对一的对应 性。水平交叉相关图像提供关于灰度级图像的一个区域与第一步进-边 缘模板相似的信息,其中第一步进-边缘模板水平定位在该图像区域之 上。利用具有-m至+n之间值的规格化灰度级图像数据,水平交叉相关 图像中的每个像素都具有-1和+1之间的值,其中具有值-1的像素对应 于模板和目标在其上定位的灰度级像素之间的完美失配,而具有值+1 的像素对应于模板和目标在其上定位的灰度级像素之间的完美匹配。由 此,在+1附近或等于+1的正水平交叉相关值对应于开放区域和相邻托 盘结构之间的垂直界面,即开放区域在左边而托盘结构在右边,其中开 放区域和托盘结构之间的界面在Y或垂直方向延伸。

图16A说明了规格化的灰度级图像,该图像说明了具有底部托盘板 200和中心纵梁208的托盘P。图16B是对应于图16A中灰度级图像的 水平交叉相关图像。在图16B中,区域1010具有正像素值而区域1020 具有负像素值。区域1012具有在+1附近或等于+1的高幅值正值,使得 它们可以对应于灰度级图像中开放区域与托盘的垂直朝向边缘之间的过 渡。由此,区域1012A对应于托盘开口210和中心纵梁208的左表面 208A之间的界面。

然后,图像分析计算机110利用第二步进-边缘模板确定一组垂直 交叉相关结果,即垂直交叉相关图像,见步骤244,在所说明的实施例 中该第二步进-边缘模板包括:

T(y)=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,+1,+1,+1,+1,+1,+1,+1,+1,+1, +1,+1,+1

其中“-1”对应于开放区域,而“+1”对应于托盘上的结构。

利用第二步进-边缘模板T(y)和图像灰度级数据,图像分析计算机 110根据以下单维规格化交叉相关公式确定垂直交叉相关结果:

NCC(y)=ΣW(y)(fy-fy)T(y)ΣW(y)(fy-fy)2ΣW(x)T2(y)

其中:

W(y)=该模板的维度限制,即在所说明的实施例中是24;

fy=灰度级图像中单个点的灰度级强度值;

T(y)=第二步进-边缘模板。

垂直交叉相关图像具有与其对应灰度级图像相同数量的像素,使得 在灰度级图像和垂直交叉相关图像中的像素位置之间存在一对一的对应 性。垂直交叉相关图像提供关于灰度级图像的一个区域与第二步进-边 缘模板相似的信息,其中第二步进-边缘模板垂直定位在该图像区域之 上,使得负模板值垂直定位在正模板值之上。利用具有-m至+n之间值 的规格化灰度级图像数据,垂直交叉相关图像中的每个像素都具有-1和 +1之间的值,其中具有值-1的像素对应于模板T(y)和模板在其上定位 的灰度级像素之间的完美失配,而具有值+1的像素对应于模板T(y)和 模板在其上定位的灰度级像素之间的完美匹配。由此,处于+1的正垂 直交叉相关值识别开放区域和相邻托盘结构之间的完美水平界面,即开 放区域在托盘结构之上,其中开放区域和托盘结构之间的水平界面在X 或水平方向延伸,而-1表示完全相反。

图16C是对应于图16A中灰度级图像的垂直交叉相关图像。在图 16C中,区域1030具有正像素值而区域1040具有负像素值。区域1032 具有高幅值正值,使得它们大体上对应于灰度级图像中开放区域与托盘 的水平朝向边缘之间的过渡。由此,区域1032A对应于开放区域和底部 托盘板200的上表面200A之间的界面。

如上所述,水平交叉相关图像和垂直交叉相关图像可以具有与规格 化灰度级图像相同数量的像素。这意味着对应的水平和垂直交叉相关值 是为灰度级图像中的每个像素计算的。作为替代,相应的交叉相关图像 可以按这样一种方式计算,使得每个这种图像都具有比规格化灰度级图 像更少的像素。

例如,成像照相机130可以配置为使得灰度级图像捕捉从基本上与 第二或左边叉子42B的外边缘成一条直线的第一个点水平地延伸到基本 上与第一或右边叉子42A的外边缘成一条直线的第二个点的视图。因而, 在灰度级图像中存在一个可以被描述为“在叉子42A和42B之间的” 内部区域。就是在叉子之间的这个区域中搜寻角落。

示例性的灰度级图像可以具有480列和752行的像素。如果用于这 个灰度级图像的原点定义为左上角像素位置,则最左边的一列像素具有 x坐标值“1”并且最右边的一列像素具有x坐标值“480”。类似地,在 垂直方向,最顶部的一行像素可以具有y坐标值“1”并且最底部的一 行像素可以具有y坐标值“752”。对于灰度级图像,x坐标的左极限可 以选择成对应于基本上与左边叉子42B的内边缘成一条直线的点;而x 坐标的右极限可以选择成对应于基本上与右边叉子42A的内边缘成一条 直线的点。灰度级图像中其x坐标在所述左和右极限之间的像素被认为 是“在叉子之间”。例如,左极限可以是“80”,而右极限可以是“400”, 但是,在不背离本发明范围的情况下,可以代替地选择其它值。

因而,在以上关于计算水平交叉相关图像和垂直交叉相关图像的描 述中,计算可以局限于仅位于叉子之间的那些像素,使得水平交叉相关 图像和垂直交叉相关图像中每个都具有比灰度级图像更少列的像素。

接下来,图像分析计算机110利用第一角落模板、水平交叉相关结 果和垂直交叉相关结果来确定对应于一个或多个托盘的第一组可能的第 一角落(即,左下角的图像)的像素值,见图5中的步骤246。在所说 明的实施例中,可能的第一角落包括一个或多个托盘的可能的左下角。 第一角落模板300由对应于托盘左下角的MxN窗口定义,在所说明的 实施例中是3x3窗口,见图6。

计算机110在所述水平或第一交叉相关结果集合或图像290以及所 述垂直或第二交叉相关结果集合或图像292之上同时滑动第一角落模板 300,从而为左下角图像确定像素值,见图6A。更具体而言,第一角落 模板300位于水平和垂直交叉相关之上,使得来自每个相关的所需值可 以被检索。因而,像素位置304在第一和第二交叉相关图像中相似定位 的像素之上移动。当模板像素位置304顺序地在第一交叉相关图像中的 每个像素以及第二交叉相关图像中相似定位的像素之上移动时,为左下 角图像定义用于那个像素位置的像素值ScoreLowerLeftCorner。在第一角落 模板300的每次放置过程中,计算机110把对应的水平交叉相关结果或 像素值,即在水平交叉相关图像中具有对应位置的像素值,放到外部垂 直列301的第一和第二像素301A和301B中,并且把对应的垂直交叉 相关结果或像素值,即在垂直交叉相关图像中具有对应位置的像素值, 放到外部水平行302的第一和第二像素302A和302B中,见图6。没有 值放到像素303中。然后,计算机110确定像素301A、301B、302A和 302B的最低或最小值,其中该最小值是模糊逻辑AND,并且把那个最 低或最小值分配给位于垂直和水平列301和302的交点的像素304,见 图6,像素304应当具有-1和+1之间的值。接近“-1”和“+1”的值指 示像素具有定义灰度级图像中托盘上的结构与开放区域之间或者反过来 的过渡的很大可能性。接近“0”的值指示像素具有规格化灰度级图像 的定义对应于连续托盘结构或连续开放区域的连续区域的很大可能性。 如以下所指出的,当图像分析计算机110尝试找出具有+1附近的值的 像素时,接近“0”的值通常被忽略。分配给像素304的值也被分配给 左下角图像中的对应像素位置,即来自像素304的值分配给左下角图像 中与第一和第二交叉相关图像每一个当中模板像素位置304在其上定位 的像素位置对应的像素位置。结果产生的左下角图像中的像素定义对应 于第一组可能的第一或左下角的第一组像素。在一个实施例中,左下角 图像中第一组像素的个数等于灰度级图像、水平交叉相关图像和垂直交 叉相关图像中每一个当中的像素个数。作为替代,类似于以上关于交叉 相关图像所描述的技术,左下角图像中像素值的确定可以局限于仅叉子 之间(即,如上所述,左极限和右极限之间)的那些像素位置。在这种 情况下,左下角图像、垂直交叉相关图像和水平交叉相关图像都将具有 相同数量的像素,但是这个数量将小于灰度级图像中的像素数量。

对于落在水平和垂直交叉相关结果或图像290和292的边界外面的 垂直列第一和第二像素301A和301B以及水平列第一和第二像素302A 和302B中的一个或多个,计算机110通过在那些像素中每一个当中放 置0来“填满(pad out)”水平和垂直交叉相关结果或图像290和292。 由此,在图6A所说明的例子中,0放在像素301A和302A中。

为了减少第一角落像素的数量,图像分析计算机110比较第一组像 素中每个像素的值与第一阈值,诸如在所说明的实施例中是0.5,见图5 中的步骤248。该第一组中其值小于第一阈值的所有像素都被消除,即 用于每个被消除的像素的值都变成0。所有剩余的像素,即其值等于或 大于第一阈值的那些像素,定义对应于第二组可能的第一角落的第二组 像素。其值小于0.5的像素被认为不可能是第一角落,因为接近+1的像 素指示左边开放区域和右边托盘结构之间的垂直界面或者上部开放区域 和下部托盘结构之间的水平界面。

为了进一步减少第一角落像素的数量,图像分析计算机110在第二 组像素上递归地滑动局部最大值定位窗口,例如,MxM窗口,其中M 等于或大于3,并且在窗口的每次放置从第二组像素消除除具有最大值 的像素之外的所有像素。更具体而言,最大值定位窗口的行为是就好像 它被顺序移动,使得最大值定位窗口的中心像素位于第二组像素中的每 个像素之上。在最大值定位窗口的每次定位过程中,除具有最大值的像 素之外的所有像素都被消除(即,设置成“0”)。在窗口已经在第二组 像素中的所有像素之上顺序移动之后,剩余的像素定义对应于第三组可 能的第一角落的第三组像素,见图5中的步骤250。但是,在实践当中, 完全相同的结果可以利用少得多的计算复杂性获得。

图6C-6E说明了用于移动5×5窗口以便例如识别第二组像素值具 有最大值的像素的有效方法的顺序。在图6C中,仅仅绘出了包括第二 组像素的大图像的一部分。特别地,图6C的图像部分702是11列×6 行的像素,其中每个像素都具有如前所述利用3×3角落模板确定的值, 其中一些具有大于第一阈值0.5的值。图6C-6E包括图像部分702的一 系列“快照”,以说明,为了有效地定位最大值像素,5×5的窗口如何 迭代移动。图像部分702的每个快照对应于移动5×5窗口704的迭代 步进;步进号位于左列706中。

首先,如第一个快照中所绘出的,5×5窗口704放在图像部分702 的左上角中。图像部分702的左上角可以把其x坐标位置放在对应于灰 度级图像最左边的列的位置。但是,如果图像分析计算机110对左下角 图像的处理局限于“叉子之间的”那些像素,则图像部分702的左上角 的x坐标位置由用于x坐标的左极限的值(例如,80)来确定。评估了 25个像素,确定在位置(2,2)的具有值0.95的像素是最大值像素。5 ×5的窗口704中所有其它像素的值都设置成零。保留最大值像素的位 置和值,以备后用。

然后,5×5窗口704向右移动一个像素,如第二个快照中所示出的。 5×5窗口704的四个最左边的列708具有,如果存在的话,除最大值之 后全都为零的像素。因而,在“步进2”中,最右边的列710中的5个 值进行比较,以确定是否有任何一个大于先前识别出的最大值,其中假 定先前识别出的最大值在5×5窗口704的界限内。在这第二个快照中, 先前识别出的最大值在窗口704的界限内。由此,最右边的列710中的 5个值与0.95,即先前识别出的最大值,进行比较。没有必要考虑四个 最左边的列708中剩余的19个像素的值。在这种情况下,最右边的列 710中没有像素大于0.95。因为最大值的位置(例如,像素(2,2))位于 5×5窗口704的跨度内,所以列710中的所有像素都设置成零并且最大 值像素的值和位置保持相同。

在第三个快照中,5×5窗口704再次向右移动一列。最右边的列 710当前放置中的像素不对照先前识别出的最大值进行评估,因为它不 再处于位于5×5窗口704中。在这个快照中,最右边的列710中的像 素仅彼此之间进行比较。在这些条件下,位于位置(7,1)的像素变成具 有值0.8的新最大值像素。

当5×5窗口704再次向右移动一个像素时,第四个快照发生。在 这种情况下,最右边的列的当前放置中没有像素大于当前的最大值。因 为当前的最大值像素也在5×5窗口704的边界内,所以最大值像素位 置和像素值保持不变。另外,最右边的列中的所有像素都设置成零。

第五和第六步进发生,以便产生在图6D的第五和第六个快照中示 出的5×5窗口704。在第六步进中,最右边的列与图像部分702的列 10对准。在这一列中,在位置(10,5)存在大于当前最大值“0.8”的像 素并且当前最大值仍然位于5×5窗口704的边界内(例如,像素(7,1))。 在这些条件下,发生以下变化:之前的最大值像素位置(7,1)设置成零, 当前的最大像素值被识别为“1”并且当前的最大像素值位置被识别为 (10,5)。

在下一次迭代中,5×5窗口704位于图像部分702最右边的部分。 最终,5×5窗口704将到达最右边的列710与完整图像最右边的列对准 的点。一旦发生这种情况,移动窗口704的下一次迭代就将产生图6D 底部快照中所示的窗口放置。换句话说,当到达图像最右边的边缘时, 5×5窗口704返回到图像最左边的边缘但是向下偏移一行。如果图像分 析计算机110对左下角图像的处理局限于“叉子之间的”那些像素,则 图像部分702最右边的列的x坐标位置由用于x坐标的右极限的值(例 如,400)确定。

当放置5×5窗口704时,如图6D底部快照中所示,使得其最左边 的列与图像最左边的列对准(这可以由用于x坐标的左极限(例如,80) 来确定),所关心的像素不是窗口704最右边的列,而是最底部的行712。 再调用(recall)最初保存的位于位置(2,2)的最大值“0.95”,最底部 行712中的像素与其进行比较,看是否有任何一个像素大于那个最大值, 其中假定先前的最大值像素位于5×5窗口704的当前边界内。在这种 情况下,不存在大于“0.95”的像素,这将使最底部行712中的所有像 素都被设置成零。因而,最大值仍然是位于位置(2,2)的“0.95”,而 且这个信息再次保存,使得它可以在5×5窗口704一旦再次返回图像 最左边的列时使用。

在下一次迭代中,5×5窗口704向右移动一个像素并且焦点返回到 最右边的列710中的像素。这些像素与当前的最大值和像素位置进行比 较,以确定什么像素可能需要修改。窗口704的移动像前面一样继续, 直到5×5窗口到达图像最底部和最右边的像素。在那个时候,存在定 义第三组可能的第一角落的像素矩阵,该矩阵具有与左下角图像相同的 维度,并且具有非零值的每个像素都具有代表该像素对应于规格化灰度 级图像中托盘结构的可能的左下角的置信得分的值。

接下来,图像分析计算机110利用第二角落模板、水平交叉相关结 果和垂直交叉相关结果确定对应于一个或多个托盘的第一组可能的第二 角落(即,右下角的图像)的像素值,见图5中的步骤252。在所说明 的实施例中,可能的第二角落包括右下角。第二角落模板310由对应于 托盘右下角的SxT窗口定义,在所说明的例子中是3x3窗口,见图7。

计算机110在所述水平交叉相关结果集合以及所述垂直交叉相关结 果集合之上同时滑动第二角落模板310,从而为右下角图像定义像素值, ScoreLowerRightCorner。更具体而言,第二角落模板310位于水平和垂直交 叉相关之上,使得来自每个相关的所需值可以被检索。因而,像素位置 312C在第一和第二交叉相关图像中相似定位的像素之上顺序移动,见 图7。当模板像素位置312C顺序地在第一交叉相关图像中的每个像素 以及第二交叉相关图像中相似定位的像素之上移动时,为右下角图像定 义用于那个像素位置的像素值。在第二角落模板310的每次放置过程中, 计算机110把对应的水平交叉相关结果或像素值,即在水平交叉相关图 像中具有对应位置的像素值,放到中心垂直列311的第一和第二像素 311A和311B中,并且把对应的垂直交叉相关结果或像素值,即在垂直 交叉相关图像中具有对应位置的像素值,放到外部水平行312的第一和 第二像素312A和312B中。计算机110还使添加到第一和第二像素 311A和311B的值求反(negate)。水平交叉相关图像中接近-1的值对 应于左边的托盘结构和右边的开放区域之间的界面。通过使第一和第二 像素311A和311B中的值求反,水平交叉相关图像中的高幅值负值被 转换成高幅值正值。由此,左边的托盘结构和右边的开放区域之间的垂 直过渡由该高幅值的正值定义,这在以如下所讨论的方式找出第五和第 六组像素时是有利的。没有值放到像素313中。然后,计算机110确定 像素311A、311B、312A和312B的最低或最小值,其中该最小值是模 糊逻辑AND,并且把那个最低或最小值分配给位于水平行312的像素 312C,见图7。像素312C中的结果值应当具有-1和+1之间的值。接近 “-1”和“+1”的值指示像素具有定义灰度级图像中开放区域与托盘上 的结构之间或者反过来的过渡的很大可能性。接近“0”的值指示像素 具有定义规格化灰度级图像的对应于连续托盘结构或连续开放区域的连 续区域的很大可能性。在一种实施例中,分配给像素312C的值也分配 给位于右下角图像中对应的像素位置。作为替代,类似于以上关于左下 角图像所描述的技术,右下角图像中像素值的确定可以局限于仅叉子之 间(即,如上所述,左极限和右极限之间)的那些像素位置。在这种情 况下,右下角图像、垂直交叉相关图像和水平交叉相关图像将全都具有 相同数量的像素,但是这个数量将小于灰度级图像中像素的数量。结果 产生的右下角图像中的像素定义对应于第一组可能的第二或右下角的第 四组像素。右下角图像中第四组像素的数量等于灰度级图像、水平交叉 相关图像和垂直交叉相关图像中每一个当中的像素数量。

图像分析计算机110比较第四组像素中每个像素的值与第二阈值, 诸如0.5,见图5中的步骤254。所有其值小于该第二阈值的可能的第二 角落像素都被消除,即用于每个被消除的第二角落像素的值都变成0。 所有剩余的第二角落像素,即其值等于或大于第二阈值的那些像素,定 义对应于第二组可能的第二角落的第五组像素。其值小于0.5的像素被 认为不可能是第一角落,因为接近+1的像素指示左边托盘结构和右边 开放区域之间的垂直界面或者上部开放区域和下部托盘结构之间的水平 界面。

图像分析计算机110递归地在第五组像素之上滑动局部最大值定位 窗口,例如MxM窗口,其中M等于或大于3,并且在窗口的每次放置 消除除具有最大值的像素之外的所有像素,使得定义对应于第三组可能 的第二角落的第六组像素,见图5中的步骤256。更具体而言,最大值 定位窗口顺序移动,使得最大值定位窗口的中心像素位于第五组像素中 的每个像素之上。在最大值定位窗口的每次定位过程中,第五组像素中 除具有最大值的像素之外的所有像素都被消除。剩余的像素定义对应于 第三组可能的第二角落的第六组像素,以上关于图6C-6E讨论的确定对 应于第三组可能的第一角落的第三组像素的方法可以用于定义对应于第 三组第二角落的第六组像素。

如以上所指出的,在进一步预期的实施例中,成像照相机可以位于 叉子42A、42B之上,朝下看而不是朝上或向前看。在这种实施例中, 计算机110可以尝试定位多个可能的左上角和多个可能的右上角,而不 是定位可能的左下角和右下角。

图像分析计算机110利用第三角落模板500、水平交叉相关结果和 垂直交叉相关结果确定对应于一个或多个托盘的第一组可能的左上角的 像素值,见图6B。第三角落模板500在所说明的实施例中由对应于托 盘左上角的3x3窗口定义。

计算机110在所述水平交叉相关结果集合以及所述垂直交叉相关结 果集合之上同时滑动第三角落模板500,从而为左上角图像定义像素值。 更具体而言,第三角落模板500位于水平和垂直交叉相关之上,使得来 自每个相关的所需值可以被检索。因而,像素位置501在第一和第二交 叉相关图像中相似定位的像素之上顺序移动,见图6B。当模板像素位 置501顺序地在第一交叉相关图像中的每个像素以及第二交叉相关图像 中相似定位的像素之上移动时,为左上角图像定义用于那个像素位置的 像素值。在第三角落模板500的每次放置过程中,计算机110把对应的 水平交叉相关结果或像素值,即在水平交叉相关图像中具有对应位置的 像素值,放到外部垂直列504的第一和第二像素503A和503B中,并 且把对应的垂直交叉相关结果或像素值,即在垂直交叉相关图像中具有 对应位置的像素值,放到中间水平行506的第一和第二像素505A和 505B中。计算机110还使添加到第一和第二像素505A和505B的值求 反。然后,计算机110确定像素503A、503B、505A和505B的最低或 最小值,并且把那个最低或最小值分配给垂直行504的像素501,见图 6B。像素501中的结果值应当具有-1和+1之间的值。结果左上角图像 中的像素定义对应于第一组可能的左上角的第一组像素。

图像分析计算机110比较第一组左上角像素中每个像素的值与第三 阈值,诸如0.5。所有其值小于该第三阈值的可能的左上角像素都被消 除,即用于每个被消除的左上角像素的值都变成0。所有剩余的左上角 像素,即其值等于或大于第三阈值的那些像素,定义对应于第二组可能 的左上角的第二组像素。

图像分析计算机110递归地在第二组左上角像素之上滑动局部最大 值定位窗口,例如MxM窗口,其中M等于或大于3,并且在窗口的每 次放置消除除具有最大值的像素之外的所有像素,使得定义第三组左上 角像素。

图像分析计算机110利用第四角落模板520、水平交叉相关结果和 垂直交叉相关结果确定对应于一个或多个托盘的第一组可能的右上角的 像素值,见图7A。第四角落模板520在所说明的实施例中由对应于托 盘右上角3x3的窗口定义。

计算机110在所述水平交叉相关结果集合以及所述垂直交叉相关结 果集合之上同时滑动第四角落模板520,从而为右上角图像定义像素值。 更具体而言,第四角落模板520位于水平和垂直交叉相关之上,使得来 自每个相关的所需值可以被检索。因而,像素位置521在第一和第二交 叉相关图像中相似定位的像素之上顺序移动,见图7A。当模板像素位 置521顺序地在第一交叉相关图像中的每个像素以及第二交叉相关图像 中相似定位的像素之上移动时,为右上角图像定义用于那个像素位置的 像素值。在第四角落模板窗口520的每次放置过程中,计算机110把对 应的水平交叉相关结果或像素值,即在水平交叉相关图像中具有对应位 置的像素值,放到外部垂直列524的第一和第二像素523A和523B中, 并且把对应的垂直交叉相关结果或像素值,即在垂直交叉相关图像中具 有对应位置的像素值,放到中间水平行526的第一和第二像素525A和 525B中。计算机110还使添加到垂直列524和水平行526中的第一和 第二像素523A、523B和525A、525B的值求反。然后,计算机110确 定像素523A、523B、525A和525B的最低或最小值,并且把那个最低 或最小绝对值分配给垂直行524的像素521,见图7A。结果右上角图像 中的像素定义对应于第一组可能的右上角的第一组像素。

图像分析计算机110比较第一组右上角像素中每个像素的值与第四 阈值,诸如0.5。所有其值小于该第四阈值的可能的右上角像素都被消 除,即用于每个被消除的右上角像素的值都变成0。所有剩余的右上角 像素,即其值等于或大于第四阈值的那些像素,定义对应于第二组可能 的右上角的第二组像素。

图像分析计算机110递归地在第二组右上角像素之上滑动局部最大 值定位窗口,例如MxM窗口,其中M等于或大于3,并且在窗口的每 次放置消除除具有最大值的像素之外的所有像素,使得定义第三组右上 角像素。

在以上对不同图像分析和图像操纵步骤的描述当中,存在在步进过 程中所考虑和使用的像素列局限于被认为“在叉子之间的”那些像素列 的情况。以类似的方式,在这些步进中的一些当中所考虑和使用的像素 行的个数也可以减少。例如,如果灰度级图像具有752行像素,则不是 所有这些像素行都需要对前面所描述的所有图像分析和操纵步骤使用和 /或考虑。

作为一个例子,只有500行像素可以使用,而其它的252行像素被 忽略。如果叉架装置40向上移动,则只有灰度级图像顶部的500行像 素可以用于上述角落发现和类似步骤。相反,如果叉架装置40向下行 进,则图像底部的500行像素可以被认为是与分析相关的。因而,车辆 计算机50可以向图像分析计算机110指示叉架装置40行进的方向。利 用这种信息,图像分析计算机110可以确定要为各种图像分析和操纵步 骤使用的像素行的垂直跨度。

以上所述的角落发现过程涉及可以是例如480(列)x752(行)像 素的规格化的灰度级图像,或者,作为替代,涉及可以是灰度级图像中 例如321(列)x752(行)像素或者甚至321(列)x500(行)像素的 有限的图像区域。因为对于每个像素,所述计算当中许多都执行一次, 或者有可能两次,所以依赖于所使用的图像分析计算机110的类型,计 算负担可能相当高。在尝试识别托盘对象时用于评估和分析规格化灰度 级图像的计算步骤可以通过使用多种技术来减少。特别地,图像金字塔 的概念可以用于减少在识别托盘对象的过程的特定步骤被分析的图像中 的像素数量。

例如,如果规格化的灰度级图像包括480x752像素并且被认为是图 像金字塔的基本图像,则可以定义具有较粗分辨率的中间层图像,并且 可以定义具有甚至更粗分辨率的顶层图像。例如,可以通过使用2x2窗 口以便把基本图像的四个像素求平均来创建低通和次采样的中间层图像, 以便给中间层图像中的一个像素生成像素值。参考图6F,说明了基本 图像720以及2x2窗口724用于在基本图像720的一个区域中选择4个 像素。窗口724中这四个像素的值可以求平均并且那个值被放在中间层 图像722的像素726中。其结果是创建了具有基本图像1/4像素数量的 中间层图像722。这个相同的过程可以对中间层图像722执行,以创建 图像金字塔的顶层图像。这个顶层图像将具有基本图像的1/16像素数 量。利用上述对基本图像的示例尺寸,中间层图像将是240x376像素, 而顶层图像将是120x188像素。

前面所述用于创建垂直交叉相关图像和水平交叉相关图像的过程可 以应用到具有减少的像素数量的顶层图像,以便减少定位第一组可能的 左或右角落的计算负担。如前所述,第一步进-边缘模板T(x)具有12个 元素的尺寸,而第二步进-边缘模板T(y)具有24个元素的尺寸。在把这 些各个模板应用到顶层图像时,它们的大小可以调整,使得每个模板具 有6个元素。因而:

T(x)top-level=-1,-1,-1,+1,+1,+1

T(y)top-level=-1,-1,-1,+1,+1,+1

利用这些模板,水平交叉相关图像和垂直交叉相关图像如前面所描 述的那样生成,使得结果产生的图像每个都具有与顶层图像相同数量的 像素。第一角落模板300如前面一样在垂直和水平交叉相关图像之上滑 动,以便为顶层左下角图像计算每个像素值。如前面一样,顶层左下角 图像中保持非零值的像素的数量可以通过把其值小于阈值(例如,0.5) 的任何像素归零并且利用5x5或其它尺寸的窗口识别局部最大值像素以 归零其它像素来减少。

在顶层左下角图像中保留的像素(即,非零像素)代表可能对应于 规格化灰度级图像中托盘左下角的一组像素。来自顶层左下角图像的这 些像素位置中每一个都被进一步分析,以便更具体地确定左下角的可能 位置。

首先,顶层图像中的每个像素位置都变换成中间层图像中的对应像 素位置。虽然较低分辨率图像中的一个像素位置对应于较高分辨率图像 中布置在2x2矩阵中的四个不同像素位置,但是,由于2x2平均不是完 美的,仍然有假象,因此定义更大的6x6搜索区域。在较低分辨率图像 (例如,顶层图像)中定义的一个像素位置允许计算6x6搜索区域的36 个像素的位置。例如,假设如前所述的像素坐标系统,金字塔下一层中 6x6的搜索区域的左上角可以根据下式变换:

xhigher-res=(xlower-res-1)*2-2

yhigher-res=(ylower-res-1)*2-2

如果使用图6F的图像部分,则较低分辨率图像中的像素位置 (53,53)变换成较高分辨率图像中的像素位置(102,102),这意味着较 高分辨率图像中的6x6搜索区域723包括向右向下的36个像素,并且 包括像素(102,102)。

顶层左下角图像中每个可能的左下角位置可以变换成中间层图像中 的36像素搜索区域。图6G说明了中间层图像中的任意36像素搜索区 域732。

集合732中的这36个像素将用于再一次创建水平和垂直交叉相关 图像,应用角落模板300,然后只在该6x6区域上保留最大值角落。由 于角落模板的形状(见图6),需要集合732左边两个附加的列736用于 垂直相关,并且需要集合732上面两个附加的行734用于水平相关。

如前面一样,水平步进-边缘模板应用到适当的像素,以生成水平 交叉相关图像,并且垂直步进-边缘模板应用到适当的像素,以生成垂 直交叉相关图像。在把这些各个模板应用到中间层图像的像素时,它们 的大小可以被调整,使得每个模板具有12个元素。因而:

T(x)mid-level=-1,-1,-1,-1,-1,-1,+1,+1,+1,+1,+1,+1

T(y)mid-level=-1,-1,-1,-1,-1,-1,+1,+1,+1,+1,+1,+1.

由于图6角落模板302构建的方式,不是图6G的所有60个像素 都既需要计算水平交叉相关值又需要计算垂直交叉相关值。例如,对于 734的两行中的像素位置,垂直交叉相关值是不必要的并且来自最右边 的列738中像素的垂直交叉相关值也不使用。类似地,对于最底部的行 740或两列736中的像素,水平交叉相关值是不必要的。因而,有42个 利用以上模板T(x)mid-level生成的水平交叉相关值和42个利用以上模板 T(y)mid-level生成的垂直交叉相关值。水平和垂直交叉相关值以与前面相同 的方式使用,如关于图6所描述的,以便为图6G的集合732的36个 像素位置计算左下角值。

不是利用滑动窗口技术在36个像素中定义多于一个局部最大值, 而是从这36个像素中选择具有最大值的一个像素并且忽略所有其它像 素。中间层图像中识别出的像素位置对应于基本图像中隐含地参考基本 图像的4个像素的一个像素位置。

以上关于从顶层图像到中间层图像变换所述的步骤重复,但是现在 是用于把一个像素位置从中间层图像变换到基本图像。利用与上述完全 相同的步骤,来自中间层图像的单个像素位置用于识别基本图像中可能 对应于左下角的单个像素位置。可以实现的一个变化是,当基于基本图 像像素计算水平和垂直交叉相关图像时,可以使用原始的步进-边缘模 板T(x)和T(y)。

因而,在顶层图像中识别出可能的左下角位置。这个像素位置用于 在中间层图像中选择像素的子集。这个像素子集被进一步分析,以识别 基本图像的一个像素位置作进一步的分析。

上述过程对顶层左下角图像中首先识别出的每个可能的左下角重复。 其结果是规格化的灰度级图像中可能对应于托盘左下角并且等效于并且 代替第三组可能的第一角落使用的一组一个或多个像素位置。此外,对 于这些位置当中的每一个,以下讨论的左下角得分,ScoreLowerLeftCorner, 已经在图6掩码的应用过程中计算出来并保留。

以上确定可能的托盘左下角的描述涉及使用具有480x752像素维度 的规格化灰度级图像中的所有像素。如前面所指出的,可以有为x坐标 值定义的左极限和右极限,使得只有在灰度级图像被认为“在叉子之间 的”区域中的像素才在这种确定中使用。类似地,也可以有为y坐标值 定义的上极限和下极限,使得只有在灰度级图像顶部或底部附近区域中 的像素才在这种确定中使用。

在有些情况下,成像照相机130可以包括电荷耦合设备(CCD)或 者互补金属氧化物半导体(CMOS)照相机。这种照相机可以具有执行 像素装仓(binning)的能力。在CCD照相机中,当光落到每个像素上 时,为那个像素位置累计电荷。为一个像素所累积的电荷量对应于那个 像素的值并且在显示结果产生的图像时由彩色或灰度级表示。利用像素 装仓,CCD照相机可以组合为多个像素累积的电荷值,以达到用于一 组像素的单个像素值。虽然装仓允许对光增加的灵敏度,但是结果产生 的图像的分辨率减小了。

装仓通常被称为2x2或4x4装仓,并且这是指仓尺寸的水平和垂直 维度。例如,2x2装仓包括4个像素的方形分组。在本发明的实施例中, 具有480x752像素的CCD照相机可以与2x2像素装仓一起使用,例如, 以获得尺寸为240(列)x376(行)像素的图像。这些图像可以与以上 关于把一个或多个模板应用到垂直和水平交叉相关图像以便识别灰度级 图像中托盘的可能左下角和其它属性所述的技术一起使用。利用图像金 字塔进行分析的技术也可以与这些具有较少像素的图像一起使用。但是, 在金字塔中只具有两个不同的图像尺寸可能是有利的。例如,基本图像 的尺寸可以是240x376像素,而顶层图像的尺寸可以是120x188。

但是,当利用具有较少像素的图像时,以上所述的技术的有些方面 可能需要修改。例如,如果使用240x376像素的图像尺寸,则被认为 “在叉子之间的”列可以定义为具有不同的左极限值和不同的右极限值。 而且,用于所考虑的图像行的上极限和下极限值也可以不同。例如,对 于较小的图像尺寸,左极限可以是40,而右极限可以是200。因而,只 有位于列40至200中的像素将被认为“在叉子之间”。而且,如果叉架 装置40向上行进,则只有图像顶部的250行可以在分析过程中考虑。 相反,如果叉架装置40向下行进,则只有图像底部的250行可以在分 析过程中考虑。

可以使用类似的过程,但是利用图7的适当掩码,来识别规格化的 灰度级图像中一组可能的右下角位置,连同对应的右下角得分, ScoreLowerRightCorner,如下讨论。

现在将参考图8来描述用于确定第一或左Ro图像和第二或右Ro 图像的过程232,其中第一或左Ro图像提供对应灰度级图像中从原点 到一个或多个可能托盘上的一条或多条可能的左边垂直线和一条或多条 可能的水平线的正交距离,而第二或右Ro图像提供对应灰度级图像中 从原点到一个或多个可能托盘上的一条或多条可能的右边垂直线和一条 或多条可能的水平线的正交距离。虽然左和右Ro图像都可以包括对应 于更多或更少水平线离原点的偏移量的像素,但是第一Ro图像还可以 包括对应于左边垂直线,即定义左边开放区域和右边托盘结构之间垂直 界面的线,离原点的偏移量的像素,这些像素具有大于0的值。第二 Ro图像还可以包括对应于右边垂直线,即定义左边托盘结构和右边开 放区域之间垂直界面的线,离原点的偏移量的像素,这些像素具有大于 0的值。

首先,通过用第一卷积内核卷积来自给定图像帧的灰度级图像,图 像分析计算机110确定水平梯度图像,见图8中的步骤260。这第一卷 积内核G在所说明的实施例中包括:

G=0.0854,0.3686,0.8578,0.9079,0,-0.9079,-0.8578,-0.3686,- 0.0854,其中G作为高斯函数的一阶导数来计算,其展开值选择成削弱 图像噪声。例如,选择σ=2的展开值削弱了灰度级图像中的噪声。以下 所示的简化高斯函数的一个例子是用展开值的平方去除负的索引x的平 方的指数。然后,这个简化的高斯函数被修改,以产生梯度内核G(x), 使得该内核的峰值为+1并且其最小值为-1。

因而,从以下简单的高斯公式开始

SimplifiedGaussian(x)=exp(-x2σ2)

在x上的一阶导数计算为:

dSimjplifiedGaussian(x)dx=-2xσ2exp(-x2σ2)

这个导函数的峰值发生在

±σ2

并且这个导函数在这些点的幅值为

2σexp(0.5)

通过用这个幅值去除导函数,该导函数可以被修改成使得其最大值 为+1而其最小值为-1。执行除法生成用于梯度内核G(x)的公式

G(x)=-2xσexp(0.5-x2σ2)

计算机110通过利用第一滑动窗口SW1,见图9,评估下面的卷积 公式来确定水平梯度图像,该滑动窗口具有等于第一卷积内核G的元 素个数的水平相邻单元数,其中第一滑动窗口SW1定位成使得每个单 元都对应于沿规格化灰度级图像特定一行的一部分的相应的像素位置。 用于为水平梯度图像的每个像素计算值的卷积公式包括:

g(k)=Σj(u(j)*v(k-j))

其中:

j=灰度级图像中特定的像素列位置,其中,对于卷积公式,j的值 在特定行部分中的第一个像素列位置和该特定行部分中的最后一个像素 列位置之间变动;

u(j)=具有j列位置的规格化灰度级图像中特定行部分中的像素值;

k=第一滑动窗口在其上居中的规格化灰度级图像的像素列位置;

(k-j)=用于第一卷积内核的索引值,当j以增加的方式变化时,这 个索引值从对应于第一卷积内核的最后一个元素的最高索引值到对应于 第一卷积内核的第一个元素的最低索引值变动;及

v(k-j)=第一卷积内核位于索引值(k-j)的特定元素的值。

参考图9,提供了以上卷积公式如何被评估以便找出水平梯度图像 中的列100、行1像素值的例子。滑动窗口SW1示为在规格化灰度级图 像中的列位置100居中并且定位成使得该滑动窗口的每个单元都对应于 沿规格化灰度级图像特定行,即图9例子中的行1,一部分,即图9例 子中的像素列位置96-104,的相应像素位置。由此,滑动窗口SW1具 有从96延伸到104的像素列位置值。当卷积公式被评估以找出列100、 行1像素值时,滑动窗口SW1向右偏移一个像素,使得它将具有从97 延伸到105的像素列位置值。在图9所说明的例子中,计算出用于水平 梯度图像中的列100、行1像素的值等于0.257。

水平梯度图像将具有与对应灰度级图像相同数量的像素,使得在灰 度级图像和水平梯度图像中的像素位置之间存在一对一的对应性。水平 梯度图像中的像素测量当在灰度级图像中水平移动时并且被开放区域和 托盘结构之间的垂直界面造成的灰度级图像中对应位置的强度的变化。 例如,如果8位用于代表每个像素值,则水平梯度图像中的像素可以具 有从大约-27到大约+27的值。依赖于被分配来代表像素值的位数,可能 的最小值和最大值的范围当然也将变化。接近零的值对应于连续区域, 即连续的托盘结构或开放区域;左边托盘结构与右边开放区域之间的垂 直界面将导致比零小得多的梯度值,而左边开放区域与右边托盘结构之 间的垂直界面将导致比零大得多的梯度值。在图16D中,示出了对应于 图16A中灰度级图像的水平梯度图像。在图16D中,第一区域1100对 应于接近0的像素值,第二区域1102对应于比零小得多的像素值,第 三区域1104对应于比零大得多的像素值,而第四区域1106对应于比零 大很多(substantially greater than zero)的像素值。

接下来,通过用第二卷积内核卷积来自给定图像帧的灰度级图像, 图像分析计算机110确定垂直梯度图像,见图8中的步骤262,在所说 明的实施例中,第二卷积内核与第一卷积内核相同。如以上所指出的, 第一卷积内核G包括:

G=0.0854,0.3686,0.8578,0.9079,0,-0.9079,-0.8578,-0.3686,- 0.0854

计算机110通过利用第二滑动窗口评估下面的卷积公式来确定垂直 梯度图像,该滑动窗口具有等于第二卷积内核的元素个数的垂直相邻单 元数,其中第二滑动窗口定位成使得每个单元都对应于沿规格化灰度级 图像特定一列的一部分的相应的像素位置。用于为垂直梯度图像的每个 像素计算值的卷积公式包括:

g(d)=Σc(u(c)*v(d-c))

其中:

c=灰度级图像中特定的像素行位置,其中,对于卷积公式,c的值 在特定列部分中的第一个像素行位置和该特定列部分中的最后一个像素 行位置之间变动;

u(c)=具有c行位置的规格化灰度级图像中特定列部分中的像素值;

d=第二滑动窗口在其上居中的规格化灰度级图像的像素行位置;

(d-c)=用于第二卷积内核的索引值,当c以增加的方式变化时,这 个索引值从对应于第二卷积内核的最后一个元素的最高索引值到对应于 第二卷积内核的第一个元素的最低索引值变动;及

v(d-c)=所述第二卷积内核位于索引值(d-c)的特定元素的值。

参考图10,提供了以上卷积公式如何被评估以找出垂直梯度图像中 的列1、行7像素值的例子。滑动窗口SW2示为在规格化灰度级图像中 的行位置7居中并且定位成使得该滑动窗口的每个单元都对应于沿规格 化灰度级图像特定列,即图10例子中的列1,一部分,即图10例子中 的像素行位置3-11,的相应像素位置。由此,滑动窗口SW2具有从3 延伸到11的像素行位置值。当卷积公式被评估以便找出列1、行8像素 值时,滑动窗口SW2向下偏移一个像素,使得它将具有从4延伸到12 的像素行位置值。在图10所说明的例子中,计算出用于垂直梯度图像 中的列1、行7像素的值等于-1.23。

垂直梯度图像将具有与对应灰度级图像相同数量的像素,使得在灰 度级图像和垂直梯度图像中的像素位置之间存在一对一的对应性。垂直 梯度图像中的像素测量当在灰度级图像中垂直地从上向下移动时并且被 开放区域和托盘结构之间的水平界面的灰度级图像中对应位置的强度的 变化。例如,如果8位用于代表每个像素值,则垂直梯度图像中的像素 可以具有从大约-27到大约+27的值。接近零的值对应于连续区域,即连 续的托盘结构或开放区域;上面托盘结构与下面开放区域之间的水平界 面将导致比零小得多的梯度值,而上面开放区域与下面托盘结构之间的 水平界面将导致比零大得多的梯度值。在图16E中,示出了对应于图 16A中灰度级图像的垂直梯度图像。在图16E中,第一区域1120对应 于接近0的像素值,第二区域1122对应于比零小得多的像素值,第三 区域1124对应于比零大得多的像素值,而第四区域1126对应于比零大 很多(substantially greater than zero)的像素值。

在确定水平和垂直梯度图像时,将存在如下情况:在图像边缘附近, 滑动窗口将具有不与图像像素重叠的一个或多个单元,因为这些单元落 在了图像像素范围的外面。在这些情况下,当计算卷积公式时,这些图 像像素的值将被视为等于零,以便最小化这些不存在的像素对卷积计算 的影响。

在确定水平和垂直梯度图像之后,图像分析计算机110确定第一 Ro图像,ρleft,该图像提供像素中从(对应于照相机图像的)规格化灰 度级图像上的原点到代表灰度级图像中一个或多个可能托盘的一条或多 条可能水平线和左边垂直线的正交距离,见图8的步骤264。第一Ro 图像是由图像分析计算机110通过评估以下公式来确定的:

ρleft(x,y)=xgx+ygygx2+gy2

其中:

x=水平方向中的梯度像素行位置;

y=垂直方向中的梯度像素列位置;

gx=来自于对应于像素位置(x,y)的水平梯度图像的梯度像素值; 及

gy=来自于对应于像素位置(x,y)的垂直梯度图像的梯度像素值。

在一个像素的gx和gy都等于零的特定情况下,Ro图像像素值设置 成零。

第一Ro图像将具有与对应灰度级图像相同数量的像素,使得在灰 度级图像和第一Ro图像中的像素位置之间存在一对一的对应性。第一 Ro图像中像素值的范围可以基于灰度级图像的维度而变化,在所说明 的实施例中,灰度级图像的维度是480像素x752像素。由此,第一Ro 图像像素可以具有从大约-800到大约+800的值,其中第一Ro图像像素 定义从规格化灰度级图像上的原点到一条或多条可能的水平线和左边垂 直线的正交距离。定义左边开放区域和右边托盘结构之间界面的垂直线 或者定义上面开放区域和下面托盘结构之间界面的水平线将在第一Ro 图像中由正像素值表示。定义左边托盘结构和右边开放区域之间界面的 垂直线或者定义下面开放区域和上面托盘结构之间界面的水平线将在第 一Ro图像中由负值表示。

在图16F中的是对应于图16A中灰度级图像的第一Ro图像。在图 16F中,第一区域1110对应于负像素值,而第二区域1112对应于正像 素值。第二区域1112的第一个区1112A对应于中心纵梁208的左表面 208A,而第二区域1112的第二个区1112B对应于底部托盘板200的上 表面200A。图16F说明,第一,或左,Ro图像像素在这些像素位置在 中心纵梁208的左垂直表面208A或底部托盘板200的上水平表面200A 之上时将具有正值。但是,第一Ro图像中的其它像素也可以具有正值 但不必位于中心纵梁的左垂直表面或底部托盘板的上水平表面之上。

接下来,图像分析计算机110可以确定第二Ro图像,ρright,该图 像提供像素中从(对应于照相机图像的)规格化灰度级图像上的原点到 代表灰度级图像中一个或多个可能托盘的一条或多条可能水平线和右边 垂直线的正交距离,见图8的步骤266。第二Ro图像是由图像分析计 算机110通过评估以下公式来确定的:

ρright(x,y)=-xgx+ygygx2+gy2

其中:

x=水平方向中的梯度像素行位置;

y=垂直方向中的梯度像素列位置;

gx=来自于对应于像素位置(x,y)的水平梯度图像的梯度像素值; 及

gy=来自于对应于像素位置(x,y)的垂直梯度图像的梯度像素值。

类似于第一Ro图像,如果一个像素的gx和gy都等于零,则这个公 式的值设置成零。

第二Ro图像将具有与对应灰度级图像相同数量的像素。第二Ro 图像中像素值的范围可以基于灰度级图像的维度而变化,在所说明的实 施例中,灰度级图像的维度是480像素x752像素。由此,像素可以具 有从大约-800到大约+800的值。定义左边托盘结构和右边开放区域之 间界面的垂直线或者定义上面开放区域和下面托盘结构之间界面的水平 线将在第二Ro图像中由正像素值表示。定义左边开放区域和右边托盘 结构之间界面的垂直线或者定义下面开放区域和上面托盘结构之间界面 的水平线将在第二Ro图像中由负像素值表示。

在图16G中,说明了对应于图16A中灰度级图像的第二Ro图像。 在图16G中,第一区域1120对应于负像素值,而第二区域1122对应于 正像素值。第二区域1122的第一个区1122A对应于中心纵梁208的右 表面208B,而第二区域1122的第二个区1122B对应于底部托盘板200 的上表面200A。图16G说明,第二,或右,Ro图像像素在这些像素位 置在中心纵梁208的右垂直表面208B或底部托盘板200的上水平表面 200A之上时将具有正值。但是,第二Ro图像中的其它像素也可以具有 正值但不必位于中心纵梁的右垂直表面或底部托盘板的上水平表面之上。

Ro图像中单个像素的分析没有明确地揭示那个像素是在托盘的左 (或右)垂直表面上还是上水平表面上。实际上,托盘结构和开口之间 的界面在Ro图像中是通过具有基本上相同像素值的相邻像素串特征化 的,其中那个值是从图像原点到那个界面的正交距离。因而,具有几乎 相同正Ro值并且在Ro图像中从(x1,y1)拉伸到(x2,y2)的这种像素 串代表灰度级图像中也在(x1,y1)和(x2,y2)之间拉伸的可能的托盘 线或边缘。对于基本上垂直延伸的托盘边缘,x2可以等于x1,而对于基 本水平的边缘,y2可以等于y1。此外,共享相同Ro值的像素串越长, 该像素串越有可能代表托盘的实际边缘。理想地,共享相同Ro值的像 素将彼此直接相邻;但是,在具有噪声和其它缺陷的真实图像中,“相 邻”可以包括彼此在某个最小距离内(例如,±5像素)的像素,而不 是仅仅彼此直接相邻的像素。

根据本发明第一种实施例对于来自第三组左下角的每个左下角的可 选的资格预审测试是由过程234定义的,这个过程尝试从第三组第一可 能的角落中每个识别出的角落即可能的左下角跟踪水平和垂直线。现在 将参考图11A、11B、12A、12B、13A和13B描述过程234。如果水平 和垂直线能够从可能的左下角被跟踪,则那个角落被认为是预审合格的。 如果水平和垂直线不能从可能的左下角被跟踪,则那个角落被取消资格 /被忽略。被跟踪的水平线可以对应于底部托盘板200的上表面200A, 而被跟踪的垂直线可以对应于托盘中心纵梁208的左表面208A,见图3。

示例第一或左Ro图像的一部分在图11A中说明,该部分包括在对 应于图像列178、行214的像素位置示出的可能的第一或左下角LLC。

现在将参考图12A和12B中所说明的过程描述用于尝试跟踪水平 线的过程。

在图像分析计算机110在第一Ro图像中从第三组左下角识别出一 个可能的左下角时,见步骤322,它在第一Ro图像中包括包含可能左 下角LLC的图像行的至少一部分的多个图像行的至少一部分上放置 JxK窗口323,见图12A中的步骤324。更具体而言,窗口323在包括 左下角LLC的行部分上居中,列包括定义窗口323中最右边列的左下 角。在所说明的实施例中,JxK窗口323包括10x7窗口,见图11A。

然后,图像分析计算机110为窗口323中的每一行计算平均像素值, 见步骤326。在图11A中,窗口323包括行211A-217A。窗口行211A- 217A定义了图11A中第一Ro图像的图像行211-217的部分。用于每个 窗口行211A-217A的平均像素值或行均值在图11A中提供。例如,窗 口行211A具有217.50012的平均像素值或行均值。

然后,计算机110确定窗口323中哪个窗口行211A-217A具有最接 近被认为包括在被跟踪线(被跟踪的线在本文中也被称为“轨迹”)当 中的当前像素位置行YT的Y坐标值的平均像素值,见步骤328。在图 11A中,位于第一Ro图像列178、行214的左下角LLC定义被跟踪的 线的起点,并且由此是被认为包括在窗口323中被跟踪线当中的当前像 素位置。为了找出具有最接近当前像素位置行YT,在所说明的例子中 是214,的平均像素值的窗口行,计算机110首先利用下式确定当前像 素位置行YT和用于每个窗口行211A-217A的行均值之差的绝对值|D|:

公式1:|D|=|YT-行均值|

用于每个窗口行211A-217A的|D|值在图11A中提供。然后,计算 机110识别具有当前像素位置行YT及其行均值之差的最小绝对值的窗 口行211A-217A。对于图11A中所说明的窗口323,窗口行214A具有 当前像素位置行YT及其行均值之差的最小绝对值|D|=0.01399,这是窗 口323中所有窗口行211A-217A的差值的最小绝对值|D|,见图11A。 具有差值的最小绝对值|D|的窗口行被定义为“最近的窗口行”;由此, 在图11A的窗口323中,窗口行214A被定义为最近的窗口行。

然后,图像分析计算机110通过求解以下公式决定最近的窗口行是 否在托盘P之上,见步骤330:

公式2:

其中:YNWR=JxK窗口中包括最近窗口行的图像行的Y坐标值; 及

行均值(NWR)=JxK窗口中最近窗口行中的像素值的平均。

在所说明的例子中,公式2示为在图11A中求解为真,即最近窗口 行214A在托盘P之上。如果最近窗口行214A在托盘之上,则假设当 前像素位置,即位于图像列178、行214的可能的左下角LLC,也在托 盘P之上。然后,计算机110决定当前像素位置(列178、行214)要 作为构成被跟踪的水平线,即可能的底部托盘板的一个像素包括,并且 把水平线计数递增1,见步骤334。然后,计算机110检查,以确定该 计数是否等于预定义的计数,例如在所说明的实施例中是100,见步骤 336。如果是,则计算机110得出水平线已经从左下角LLC被跟踪的结 论,见步骤338。然后,计算机110转到图13A中的步骤370,这将在 以下讨论,见步骤340。

如果在步骤336中该计数小于100,则计算机110把窗口323水平 向左步进一个像素,在与包含先前确定为最近窗口行的图像行共线的一 个新窗口行,在图11A和11B中所说明的例子当中是行214,上居中步 进的窗口323A,并返回到步骤326,见步骤342。

在图11B中,步进的窗口323A示为在行214上居中。窗口323A 包括窗口行211B-217B。步进的窗口323A中的当前像素位置是在窗口 323A中的中心窗口行,即窗口行214B,最右边的像素。由此,被认为 包括在被跟踪线中的当前像素位置是位于图像列177、行214的像素。 用于步进的窗口323A中每个窗口行211B-217B的平均像素值在图11B 中提供。窗口行211B具有最接近行214的Y坐标值的平均像素值,其 中行214是当前轨迹位置的行。由此,窗口行211B是步进的窗口323A 中最近的窗口行。公式2示为在图11B中求解为真。如图11B中所示, 求解以上的公式2确定当前像素位置,即位于图像列177、行214的像 素,位于托盘P之上。然后,计算机110确定当前像素位置(列177、 行214)应当作为被跟踪的水平线,即可能的底部托盘板,的一个像素 包括,并且把水平线计数递增1,见步骤334。然后,计算机110转到 步骤336。

如果在步骤330中确定窗口323中最近的行不在托盘之上,则图像 分析计算机110在窗口323中最近的行214A之上使LxM窗口323B居 中,见步骤350,其中LxM窗口323B比JxK窗口323大,以方便, 如果可能的话,托盘的捕捉。在所说明的实施例,LxM窗口323B包括 10x9窗口。然后,计算机110为LxM窗口323B中的每一行计算像素 值的平均,见步骤352,并且确定LxM窗口323B中哪一行具有最接近 被认为包括在被跟踪线当中的当前像素位置的Y坐标值的平均像素值, 这条被跟踪的线包括窗口323中心行的最右边像素(窗口323B的中心 行与窗口323中最近的行214A相同),见步骤354。LxM窗口中具有 最接近当前像素位置的Y坐标的平均像素值的行被定义为“最近的行”, 并且计算机110利用以上列出的公式2确定LxM窗口323B中最近的行 是否在托盘之上(其中,在评估公式2时,使用LxM窗口,而不是 JxK窗口),见步骤356。如果LxM窗口323B中最近的行被确定为在 托盘之上,则计算机110把水平线计数设置成等于1,把非水平线计数 设置成等于零,然后前进到步骤342,见步骤358。如果LxM窗口中最 近的行被确定为不在托盘之上,则非水平线计数递增1,见步骤360。 然后,计算机110确定非水平线计数是否等于20,见步骤362。如果是, 则该左下角被取消资格。如果非水平线计数小于20,则LxM窗口从前 一个LxM窗口居中到最近的行之上,见步骤366,并且计算机返回步 骤352。

来自图11A的示例第一或左Ro图像的另一部分在图11C中说明, 这部分包括在对应于图像列178、行214的像素位置示出的可能的第一 或左下角LLC。

现在将参考图13A和13B中所说明的过程步骤描述用于尝试跟踪 垂直线的过程。在图像分析计算机110已经跟踪从可能的左下角LLC 开始的水平线之后,见步骤338和340,它在第一Ro图像中包括包含 可能左下角LLC的图像列的至少一部分的多个图像列的至少一部分上 放置PxQ窗口371,见步骤370以及图11C。更具体而言,窗口371在 包括左下角LLC的列部分上居中,行包括定义窗口371中最下面的行 的左下角。在所说明的实施例中,PxQ窗口371包括5x6窗口。

然后,图像分析计算机110为窗口371中的每一列计算平均像素值, 见步骤372。在图11C中,窗口371包括列176A-180A。窗口列176A- 180A定义了图11C中图像列176-180的部分。用于每个窗口列176A- 180A的平均像素值或列均值在图11C中提供。例如,窗口列178A具 有221.2977的平均像素值或列均值。

然后,计算机110确定窗口371中哪个窗口列176A-180A具有最接 近被认为包括在被跟踪线当中的当前像素位置的列XT的X坐标值的平 均像素值,见步骤374。在图11C中,位于第一Ro图像列178、行214 的左下角LLC定义被跟踪的线的起点,并且由此是被认为包括在窗口 371中被跟踪线当中的当前像素位置。为了找出具有最接近当前像素位 置列XT,在所说明的例子中是214,的平均像素值的窗口列,计算机 110首先利用下式确定当前像素位置列XT和用于每个窗口列176A-180A 的列均值之差的绝对值|D|:

公式3:|D|=|XT-列均值|

用于每个窗口列176A-180A的|D|值在图11C中提供。然后,计算 机110识别具有当前像素位置列XT及其列均值之差的最小绝对值的窗 口列176A-180A。对于图11C中所说明的窗口371,窗口列178A具有 当前像素位置列XT及其列均值之差的最小绝对值|D|=43.29768,这是窗 口371中所有窗口列176A-180A的差值的最小绝对值|D|,见图11C。 具有差值的最小绝对值|D|的窗口列被定义为“最近的窗口列”;由此, 在图11C的窗口371中,窗口列178A被定义为最近的窗口列。

然后,图像分析计算机110通过求解以下公式4决定最近的窗口列 是否在托盘P之上,见步骤330:

其中:XNWC=Ro图像中包括来自PxQ窗口的最近列的列的X坐 标值;及

列均值(NWC)=PxQ窗口中最近窗口列中的像素值的平均值。

在所说明的例子中,公式4示为在图11A中求解为真,即最近窗口 列178A在托盘P之上。如果最近窗口列178A在托盘之上,则假设当 前像素位置,即位于图像列178、行214的可能的左下角LLC,也在托 盘P之上。然后,计算机110决定最近窗口列178A中的当前像素位置 (列178、行214)要作为构成被跟踪的水平线,即托盘中心纵梁208 的可能左表面208A,的一个像素包括,并且把垂直线或纵梁计数递增1, 见步骤380。然后,计算机110检查,以确定该纵梁计数是否等于预定 义的计数,例如在所说明的实施例中是15,见步骤382。如果是,则计 算机110得出垂直线已经从左下角LLC开始被跟踪的结论,见步骤384。 然后,计算机110验证了从其开始跟踪水平和垂直线的左下角LLC,见 图13A中的步骤386。

如果在步骤382中该计数小于15,则计算机110把窗口371垂直向 上步进一个像素,在与包含先前确定为最近窗口列的图像列共线的一个 新窗口列,在图11C和11D中所说明的例子当中是列178A,上居中步 进的窗口371A,并返回到步骤372。

在图11D中,步进的窗口371A示为在列178上居中。窗口371A 包括窗口行176B-180B。步进的窗口371A中被认为包括在被跟踪线中 的当前像素位置是在窗口371A中的中心窗口列,即窗口列178B,最底 部的像素。由此,被认为包括在被跟踪线中的当前像素位置是位于图像 列178、行213的像素。用于步进的窗口371A中每个窗口列176B- 180B的平均像素值在图11D中提供。窗口列176B具有最接近列178的 X坐标值的平均像素值,其中列178是当前轨迹位置的列。由此,窗口 列176B是步进的窗口371A中最近的窗口列。公式4示为在图11D中 求解为真。如图11D中所示,求解公式4确定当前像素位置,即位于图 像列178、行213的像素,位于托盘P之上。因而,计算机110确定当 前像素位置(列178、行213)是被跟踪的垂直线,即托盘中心纵梁208 的可能的左表面208A,的一个像素,并且把垂直线计数递增1,见步骤 380。然后,计算机110转到步骤382。

如果在步骤376中确定窗口371中一个最近的列不在托盘之上,则 图像分析计算机110在窗口371中最近的列178A之上居中RxS窗口 371B,见步骤390,以方便,如果可能的话,托盘的捕捉,其中RxS窗 口371B比PxQ窗口371大,见图11C。在所说明的实施例中,RxS窗 口371B包括7x6窗口。然后,计算机110为RxS窗口371B中的每一 列计算像素值的平均,见步骤392,确定RxS窗口371B中哪一列具有 最接近被认为包括在轨迹当中的当前像素位置的X坐标值的平均像素值, 这条轨迹包括窗口371B中心列的最下面像素(窗口371B的中心列与 窗口371中最近的列178A相同),见步骤394,该列被定义为“最近的 列”,并且利用公式4确定RxS窗口371B中最近的列是否在托盘之上 (其中,在评估公式4时,使用RxS窗口,而不是PxQ窗口),见步骤 396。如果RxS窗口371B中最近的列被确定为在托盘之上,则计算机 110把纵梁计数设置成等于1,把非垂直线计数设置成等于零,然后前 进到步骤388,见步骤398。如果RxS窗口中最近的列被确定为不在托 盘之上,则非垂直线计数递增1,见步骤400。然后,计算机110确定 非垂直线计数是否等于20,见步骤402。如果是,则该左下角被取消资 格。如果非垂直线计数小于20,则RxS窗口从前一个RxS窗口居中到 最近的列之上,见步骤406,并且计算机返回步骤392。

现在将参考图14A-14D描述根据本发明第二种实施例对每个左下 角的资格预审测试。资格预审测试涉及尝试从每个可能的左下角开始跟 踪水平线和垂直线。这种测试还使用来自Ro图像的像素值并且,尤其 是,来自第一Ro图像的像素值。如果水平和垂直线可以从可能的左下 角跟踪,则那个角落被认为是预审合格的。如果水平和垂直线不能从可 能的左下角跟踪,则那个角落被取消资格/被忽略。被跟踪的水平线可 以对应于底部托盘板200的上表面200A,而被跟踪的垂直线可以对应 于托盘中心纵梁208的左表面208A,见图3。

示例第一或左Ro图像的一部分在图14A中说明。现在将参考图 14C中所说明的过程步骤描述用于尝试跟踪水平线的过程。

在图像分析计算机110从第一Ro图像中的第三组左下角识别出一 个可能的左下角之后,见步骤602,它向左移动预定数量的像素,见步 骤604。例如,向左移动大约5个像素对于增加在起始轨迹位置之上利 用开口而不是托盘结构开始尝试跟踪的可能性是有利的。图像分析计算 机110在第一Ro图像中多个图像行的至少一部分之上定位NxO窗口 639,见图14C中的步骤606。关于图14A,可能的左下角被识别为在 像素位置x=237,y=124,这也可以被称为XLLC=237和YLLC=124。如 所提到的,在步骤604中从该x坐标减去例如5个像素,以便初始化用 于所尝试轨迹的起始位置650。因而,用于示例尝试轨迹的起始位置 650是(232,124),见图14A。NxO窗口639定位成使得在像素位置 (232,124)之上竖直居中,并且水平定位成使得最右边的列覆盖像素位 置(232,124)。在图14A的例子中,NxO窗口639是13x8窗口,或矩 阵,并且,通过其定位,窗口639有6行在像素位置(232,124)之上并 且有6行在其下面。而且,窗口639有7列在像素位置(232,124)左边。 虽然13x8窗口作为例子示出,但是,在不背离本发明范围的情况下, 其它尺寸的窗口也可以使用。因而,NxO窗口639在y方向从行118延 伸到行130并且在x方向从列225延伸到列232。每一行也通过索引值 k,646来引用,如图16A中所示出的。该索引值分配成使得NxO窗口 639最上面的一行处于k=1并且NxO窗口639最下面的一行处于k=13 (在这个例子中)。

如以下所解释的,在跟踪方法的每一步当中,为所尝试跟踪方法的 后续步骤计算新的坐标(xnew,ynew),以找出被跟踪的水平线的另一个点。 当为后续步骤定位NxO窗口时,该窗口在ynew上垂直居中并且水平定 位成使得最右边的列在xnew之上。

在步骤608中,图像分析计算机110为NxO窗口639的每一行计 算平均值W(k)(示为列652)。该平均值是利用来自第一Ro图像的像 素值计算的。然后,在步骤610,图像分析计算机110,从k=1开始, 确定满足三个不同测试的第一行:

1.W(k+1)>0(示为列656);

2.MEAN(W(1:k))<0

其中

3.|YLLC–MEAN(W(k+1:13))|≤YLLC(示为列660)

其中

如果窗口639的所有行都被测试并且图像分析计算机110在步骤 612中确定没有找到满足以上约束的行,则可能的左下角被丢弃并且该 过程对这个特定的可能的左下角停止。在图14A的示例窗口639中,找 到了成功的行,并且列662指示满足以上约束的第一个k值是k=4(示 为列664)。在步骤614,图像分析计算机110使用这个k值来识别在确 定如何为所尝试跟踪的下一步定位NxO窗口639时所使用的坐标。特 别地,在步骤614,图像分析计算机110基于xnew=xcurrent-1计算新的x 坐标。对于图14A的例子,xnew=231。在步骤614,图像分析计算机还 基于ynew=ycurrent+k-6计算新的y坐标(示为列666)。对于图14A的例 子,ynew=122。

如果图像分析计算机110在步骤616确定,对于被跟踪线的前100 个点/像素,步骤610的约束已经成功满足,则水平线已经从可能的左 下角成功地被跟踪。用于水平轨迹的处理停止并且继续到图16D中所示 的垂直跟踪技术。如果少于100个点/像素,或者某个其它预定的点/像 素数,被成功测试,则利用新的x和y坐标(xnew,ynew)用步骤606继 续跟踪,以适当地定位NxO窗口。

在图14C过程的描述中,步骤610提供了三叉齿测试(prone test), 来确定将在步骤614中用于在其下一个位置定位NxO窗口639的行值 “k”。作为一种备选方案,图14E中所说明的不太严格而且比较简单的 测试可以用于确定值“k”。在图像分析计算机110在步骤608中为NxO 窗口639的每一行计算出平均值W(k)(示为列652)之后。图像分析计 算机110,代替步骤610的测试,可以作为替代地在步骤610’中确定哪 个平均值W(k)最小化|W(k)-YLLC|并且随后在步骤612’中确定以下不等 式是否对那一行k成立:|YLLC–W(k)|≤YLLC。如果该不等式不为真, 则图像分析计算机110丢弃(237,124)作为可能的左下角;如果该不 等式为真,则根据步骤614计算新的坐标。

利用图14E的备选的、更简单的测试,具有W(k)=147.489988的 k=6的行满足步骤610’的测试。即k值等于“6”的行具有等于 “147.489988”的平均值并且把|W(k)-YLLC|的值最小化成等于 “23.58999”。此外,步骤612’的不等式也被这个W(k)值满足(即, |124-147.489988|小于或等于124)。

如前面一样,在步骤614,图像分析计算机110使用识别出的k值 来识别在确定为所尝试跟踪的下一步定位NxO窗口639时使用的坐标。 特别地,在步骤614,图像分析计算机110基于xnew=xcurrent-1计算新的 x坐标。对于图14A的例子,xnew=231。在步骤614,图像分析计算机 还基于ynew=ycurrent+k-6计算新的y坐标。对于图14A的例子,当使用 图14E被备选的、更简单的测试时,ynew=124。

如果水平线从可能的左下角成功地被跟踪,则也尝试从那个可能的 左下角跟踪垂直线。

示例第一或左Ro图像的一部分在图14B中说明。现在将参考图 14D中所说明的过程步骤描述用于尝试跟踪垂直线的过程。在步骤618, 图像分析计算机110识别可能的左下角678为具有坐标(237,124)这 使得x坐标XLLC等于237。

图像分析计算机110在第一Ro图像中多个图像列的至少一部分之 上定位VxW窗口667,见图14D中的步骤620。如前面所提到的,基 于可能的左下角的坐标,用于示例尝试轨迹的起始位置678是(237, 124)。VxW窗口667定位成使得其在像素位置(237,124)上水平居中 并且垂直定位成使得最下面的行覆盖像素位置(237,124)。在图14B中 的例子中,VxW窗口667是4x13窗口,或矩阵,并且,通过其定位, 窗口667有6列在像素位置(237,124)右边并且有6列在其左边。而且, 窗口667有3行在像素位置(237,124)上面。虽然4x13窗口作为例子 示出,但是,在不背离本发明范围的情况下,其它尺寸的窗口也可以使 用。因而,VxW窗口667在y方向从行121延伸到行124并且在x方 向从列231延伸到列243。每一列也通过索引值k,676来引用,如图 14B中所示出的。该索引值分配成使得VxW窗口667最左边的一列处 于k=1并且VxW窗口667最右边的一列处于k=13(在这个例子中)。

如以下所解释的,在跟踪方法的每一步当中,为所尝试跟踪方法的 后续步骤计算新的坐标(xnew,ynew)。当为后续步骤定位VxW窗口时, 该窗口在xnew上水平居中并且垂直定位成使得最底部的行在ynew之上。

在步骤622,图像分析计算机110为VxW窗口667的每一列计算 平均值W(k)(示为行675)。该平均值是利用来自第一Ro图像的像素 值计算的。然后,在步骤624,图像分析计算机110确定哪个平均值 W(k)最小化|W(k)-XLLC|并且,在步骤626,确定对那一行k是否满足 以下不等式:|XLLC–W(k)|≤1.5XLLC。如果该不等式不为真,则图像 分析计算机在步骤628中丢弃(237,124)作为可能的左下角。

在图14B中的例子中,k值等于“5”的列具有等于“234.5113”的 平均值681并且把|W(k)-XLLC|的值680最小化成等于“2.4887”。如通 过答案684所指示的,图像分析计算机在步骤626中确定不等式的左手 侧(即,|237-234.5113|)小于或等于1.5x237(即,355.5)。因而,在步 骤630,图像分析计算机110计算新的x坐标和y坐标。具体而言,图 像分析计算机110基于ynew=ycurrent-1计算新的y坐标。对于图14B的例 子,ynew=123。在步骤630,图像分析计算机还基于xnew=xcurrent+k-6计 算新的x坐标。对于图14B的例子,xnew=236。

如果图像分析计算机110在步骤632中确定,对于被跟踪线的前10 个点/像素,步骤626的约束已经成功满足,则垂直线已经从可能的左 下角成功地被跟踪,该可能的左下角现在被认为是预审合格的可能的左 下角。如果少于10个点/像素,或者某个其它预定的点/像素数,被成功 测试,则利用新的x和y坐标(xnew,ynew)用步骤620继续跟踪,以适 当地定位PxQ窗口。

在过程234完成之后,使得尝试从第三组可能的第一角落中每个识 别出的角落画出/跟踪水平线及可能还有垂直线,从而定义一组预审合 格的左下角,图像分析计算机110实现过程236。由此,对于每个预审 合格的左下角,计算机110确定多条可能线中哪一条最有可能是经过预 审合格的左下角的实际线。过程236将参考图15来讨论。

以上所述涉及不同Ro图像和线跟踪算法的计算可以通过考虑灰度 级图像中的所有像素位置的值来受益。因而,由图像分析计算机110执 行的那些特定图像分析步骤不一定局限于只对“叉子之间的”像素位置 执行。但是,一旦所有预审合格的左下角都已经识别出来,那组像素位 置就可以通过丢弃不位于“叉子之间的”任何预审合格的左下角来修剪。 因而,在这样一种实施例中,以上所述的附加分析和处理技术不对其x 坐标位置在用于x坐标的左极限和右极限(例如,分别是80和400)外 面的任何预审合格的左下角执行。

图像分析计算机110在第一Ro图像中定义其中一个预审合格的左 下角的位置,见步骤410。然后,计算机110定义延伸通过那个预审合 格的左下角LLC的多条可能的线,在所说明的实施例中是61条线,其 中每条线关于第一Ro图像中的水平轴处于对应的角度其中该角度 的范围以0.5度的增量从-15度到+15度,见图15中的步骤412。在图 15A说明了经过在像素位置列20、行14的预审合格的左下角LLC的 两条线L1和L2。剩余59条可能的线没有在图15A中说明。线L1处于 角度而线L2处于角度如以下所指出的,计算机 110确定多条可能的线中哪一条最有可能是经过托盘的预审合格的左下 角的实际线,见步骤414。

为了定义经过给定预审合格的左下角LLC的多条可能线中的每一 条,计算机110为多条线中相应朝向一个角度的每一条线求解以下公式, 从而计算从Ro图像的原点到该线的正交距离

公式5:

其中:

(xPalletCorner,yPalletCorner)=Ro图像中用于托盘的预审合格的左下角的坐 标。

在所说明的实施例中,公式被评估61次,61条可能的线当中 每条线一次。在图15A中,说明了ρ(10)和ρ(-10)。

在为可能的线计算出之后,计算机110利用计算出的值为 那条线定义点(例如,像素位置)。依赖于图像的尺寸,每条可能的线 可以通过组合来自多条子线的点来定义。多条子线可以被认为“加厚” 可能的线,使得足够数量的像素可以包括在可能线的评估当中。例如, 如果图像尺寸是480x752,则两条子线可以用于定义可能的线。作为替 代,如果图像尺寸是240x376,则可能的线可以只通过一条子线来定义。 因而,可能的线根据下式通过一组子线{L}来定义:

{L}={(1,y1+k)to(M,y2+k)},其中

k=0,1,2,…,(Ny-1),

Ny=用于定义可能的线的子线的条数;及

其中

并且

假定:

TOL1=凭经验确定的固定值(在所说明的实施例中等于0.5);

M=Ro图像的每一行当中水平像素的数量(在所说明的实施例中是 480或240像素);及

y1=如果可能线沿着角度延伸到最左边的图像像素列x=1,可能 线左端点的y或者垂直坐标;及

y2=如果可能线沿着角度延伸到最右边的图像像素列x=M,可能 线右端点的y或者垂直坐标。

如所提到的,对于240x376尺寸的图像,Ny可以等于“1”,而对于 480x752尺寸的图像,Ny可以等于“2”。如果Ny=“1”,则子线集合{L} 可以只具有单条子线LA,该子线具有左端点(1,y1)和右端点(M,y2)。 只有这条子线上的点在评估可能的线时使用。但是,如果使用较大的图 像尺寸(例如,480x752),则每条可能的线通过组合来自第一条子线 LA和第二条子线LB的点来定义,以便获得足够数量的点。根据以上公 式,从0到1变动的值k以及用于这两条子线LA和LB的相应端点计算 为使得:

用于第一条子线LA的端点包括:

(1,y1)和(M,y2);及

用于第二条子线LB的端点包括:

(1,y1+1)和(M,y2+1)。

然后,计算机110生成用于第一条子线LA的端点之间的第一中间 点以及用于第二条子线LB的端点之间的中间点(如果第二条子线LB存 在的话)。用于第一和第二条子线LA和LB的相应中间点是利用布氏 (Bresenham)线算法确定的。如本领域普通技术人员众所周知的,布 氏线算法确定像素化的显示中哪些点应当被选择,以便形成对两个给定 点之间的直线的相当准确的近似。在实践中,该算法可以有效地通过为 算法的每个递增步进计算误差值来实现,其中该误差值代表线上位于点 x的实际y值的小数部分。相应地,那个误差值用于确定是增加y坐标 值或者让它保持不变。因为,每个步进的误差值是前一误差值和线的斜 率的很容易计算的函数,所以实现该算法的计算成本可以最小化。以下 伪代码利用每条子线的相应斜率在-1和+1之间的约束有效地计算子线 上的中间点;因而该伪代码既可以用于正斜率的线也可以用于负斜率的 线。

但是,本领域普通技术人员将认识到,在不背离本发明范围的情况下, 如果斜率在范围-1到+1范围之外的一条线上的点需要被计算,则以上 伪代码也可以容易地修改成执行这种计算。

接下来,计算机110为每条可能的线上的每个点评估以下表达式, 即为对应于每条可能的线的每条子线(LA、LB、…)上的每个点评估这 个表达式:

公式6:

其中:

(X,Y)=可能的线上的一个点;

ρleft(X,Y)=来自第一Ro图像该可能的线上点X,Y的值

TOL2=凭经验确定的固定值(在所说明的实施例中等于0.15)。

相应的计数器,可以与具有角度的可能 线关联,并且可以在每次公式6的表达式对具有角度的可能线上的一 个点X,Y为真时递增。因而,存在61个计数器,每个计数器具有相应 的值。如以上所提到的,在有些情况下,为了获得足够数量的点,多于 一条子线可以与一个计数器关联。在关于所有61条可能的线的所有点 都利用公式6评估之后,计算机110把具有最大计数值的线识别为最有 可能是经过预审合格的托盘左下角LLC的实际线的线,在下文中称为 底部托盘板线。根据以下公式,基于61个计数器的最大值,给底部托 盘板线分配一个置信得分,ScoreBaseboardLine

其中:

M=Ro图像每一行中水平像素的数量(在所说明的实施例中是480 或240个像素);及

Ny=用于定义每条可能的线的子线的条数。

一旦计算机110识别出最有可能是经过预审合格的托盘左下角LLC 的实际线的线,这条线就被假设代表与这个特定的预审合格的托盘左下 角LLC关联的底部或下部托盘板200的可能上表面200A。然后,预审 合格的左下角LLC以及底部托盘板的可能上表面的位置可以在过程 238中使用,如以上所指出的,该过程尝试识别对应于预审合格的左下 角的一组可能的右下角。这组可能的右下角将关于预审合格的左下角和 对应的底部托盘板上表面满足某些标准,如下:

1)对应的右下角将有可能位于预审合格的左下角LLC的某个水平 范围内。由此,计算机110检查如由第三组可能的第二角落定义的所有 可能的右下角,并且丢弃靠近预审合格的左下角LLC超过最小水平距 离(xmin)或者远离预审合格的左下角LLC超过最大水平距离(xmax) 的那些可能的右下角。特定的xmin和xmax值是以“像素”测量的,并且 依赖于可视化的中心托盘纵梁尺寸的范围以及货架R离车辆10有多远。 对于典型的从大约50英寸到大约60英寸的货架到车辆距离以及由木头 或聚合物材料制成的其中心纵梁宽度W从大约2英寸到大约12英寸的 托盘,xmin可以等于5像素而xmax可以等于150像素,其中视场是480 像素x752像素,见图17。

2)对应的右下角将有可能位于从预审合格的左下角LLC定义垂直 范围+/-Ytol的某个垂直距离,或歪斜(skew),内。因而,计算机110 丢弃落在如由+/-Ytol定义的垂直歪斜之外的任何可能的右下角,其中+/- Ytol可可以以等于+/-10像素,见图17。

3)实际右下角将有可能位于离底部托盘板线的某个垂直距离范围 内。因而,计算机110丢弃底部托盘板线之上落在距离,+Hmax,之外 或者在底部托盘板线下面延伸超过距离-Hmax的任何可能的右下角。例 如,+Hmax可以等于底部托盘板上表面之上4个像素,而-Hmax可以等 于底部托盘板线之下4个像素,见图17。

与定位可能的右下角相关联的位置标准可以根据图像尺寸来调整。 例如,以上所提供的值可能适用于尺寸为480x752像素的图像。但是, 对于尺寸为240x376像素的图像,该值可以被调整,使得每个都大致为 以上提供的示例值的一半。例如,垂直歪斜可以等于+/-5像素,用于+ Hmax的值可以等于底部托盘板表面之上2个像素,而用于-Hmax的值可 以等于底部托盘板线之下2个像素。类似地,xmin可以等于2个像素而 xmax可以等于50至75个像素之间。

单个预审合格的左下角LLC和对应的底部托盘板线可以与一个或 多个可能的右下角配对,从而定义一个或多个候选对象。“候选对象” 在本文中也称为“可能的托盘对象”。

在以上提到的进一步的实施例中,其中成像照相机位于叉子42A、 42B之上,向下看,一个或多个可能的右上角与每个预审合格的左上角 配对,其中关于对右上角的找寻的限制与对右下角的那些限制类似。

对于包括预审合格的左下角LLC、对应的底部托盘板线以及对应 的可能的右下角的每个候选对象,图像分析计算机110尝试识别上部托 盘板202上的点与预审合格的左下角LLC之间的距离,使得托盘洞或 叉子接纳开口位于其间。利用第一Ro图像,图像分析计算机110从预 审合格的左下角LLC水平向左步进预定数量的像素(例如,10个像素) 并且向上移动,直到像素从正到负到正过渡。向左步进确保向上的穿行 发生在其中在起点之上存在开口而不是仅仅是托盘结构的区域内。正- 负-正的过渡估计上部托盘板202上相对于底部托盘板200的上表面 200A的潜在点的位置,其中上部托盘板202上该点和底部托盘板200 的上表面200A之间的距离是上部托盘板202的下表面202A和底部托 盘板200的上表面200A之间距离的粗略估计,见图3。此外,估计从 底部托盘板上表面到上部托盘板202上可能点的距离的另一种方法是由 计算机110通过从预审合格的左下角LLC向上移动一直到遇到第一Ro 图像中的负像素值来执行的。当在到达上部托盘板202之前正垂直序列 终止时(诸如由于噪声或照明变化)或者在正垂直序列一到达上部托盘 板202就终止时遇到负像素。这两个估计的最大值被选择作为从预审合 格的左下角到上部托盘板202上点的距离的确定。

然后,从预审合格的左下角/底部托盘板200的上表面200A到上部 托盘板202上的点的距离可以用于粗略地估计可能的左上角和可能的右 上角的位置。可能的左上角假设与预审合格的左下角对准并且在其之上 等于从预审合格的左下角到上部托盘板202上的点的距离的距离。可能 的右上角假设与预审合格的右下角对准并且在其之上等于从预审合格的 左下角到上部托盘板202上的点的距离的距离。

对于包括预审合格的左下角214、对应的底部托盘板线(即,底部 托盘板200的可能的上表面200A)和对应的可能的右下角的每个候选 对象,并且对于其估计出对应左上和右上角的位置,可以根据以下所述 的方法来计算可能的左和右垂直纵梁边缘或线。但是,以下进一步给出 一种不明确地计算左和右纵梁边缘两者的备选方法。

对于潜在的左垂直纵梁线,根据以下公式(7a和7b)计算正交距 离ρ1desired和角度

公式7a:

公式7b:

其中:

PLowerLeft(y)=用于预审合格的左下角的Y坐标;

PUpperLeft(y)=用于估计出的左上角的Y坐标;

PLowerLeft(x)=用于预审合格的左下角的X坐标;

PUpperLeft(x)=用于估计出的左上角的X坐标;及

ρ1desired=从规格化的灰度级图像上原点到经过预审合格的左下角和 左上角的垂直线的正交距离。

对于潜在的右边垂直纵梁线,根据以下公式(8a和8b)计算正交 距离ρ2desired和角度

公式8a:

公式8b:

其中:

Φ2=水平线和潜在的右纵梁线之间的角度,其中潜在的右纵梁线从 右下角延伸到估计出的右上角;

PLowerRight(y)=用于右下角的Y坐标;

PUpperRight(y)=用于估计出的右上角的Y坐标;

PLowerRight(x)=用于右下角的X坐标;

PUpperRight(x)=用于估计出的右上角的X坐标;及

ρ2desired=从规格化的灰度级图像上原点到经过右下角和右上角的垂 直线的正交距离。

图19A说明了使用以上公式来计算代表潜在的左纵梁线和潜在的右 纵梁线的值。图19A不代表前面讨论过的任何图像(例如,灰度级图像、 Ro图像等)的实际像素值,而是提供帮助理解用于公式7a、7b、8a和 8b的几何结构的框架。但是,与早先讨论过的图的一个相关性是图 19A中不同点的(x,y)坐标,以及原点,确实对应于灰度级图像的坐 标系统和原点。预审合格的左下角位于图19A中的点1906并且早先估 计出的对应的左上角位置位于点1908。估计出的左上角假设水平地与预 审合格的左下角位于一条线上,使得它们具有完全相同的X坐标,但是 在图19A中示为离预审合格的左下角稍有偏移。潜在的纵梁线1912在 两个角落1906、1908之间延伸。潜在的左纵梁线1912可以通过一对值 (ρ1desired,θ)来特征化,其中,如图19A中所示,ρ1desired由代表线1912 离原点1914的正交距离的线1914指定,而角度θ由作为线1904相对 于x轴1916的角度的角度1902指定。参数由角度1910指定并且是 由潜在的左纵梁线1912和水平线1918构成的角度。因为所 以正交距离ρ1desired可以根据以上公式7b来确定。虽然描述图19A的以 上讨论涉及潜在的左纵梁线,但是类似的方法可以在为潜在的右纵梁线 求解公式8a和8b时使用。

用利用以上公式7a计算出的角度(1910),然后可以利用来自第 一Ro图像中与预审合格的左下角垂直共线并且向上延伸到估计出的左 上角的像素值来确定定义来自第一Ro图像的预审合格的左下角之上的 左垂直线的第一组像素是否匹配计算出的正交距离ρ1desired。利用这些像 素,计算代表与灰度级图像中潜在的左垂直纵梁线是真正托盘纵梁左边 缘的可能性相关的值的得分值Scoreleft。用于计算这个得分值Scoreleft的 一种方法参考图20A和图20B提供。图20A绘出了用于给用于预审合 格的左下角的潜在左纵梁打分的流程图,而图20B绘出了来自第一Ro 图像位于预审合格的左下角附近的像素区域。对于预审合格的左下角 2030,见图20B,所计算出的垂直线代表纵梁的可能的左垂直边缘,并 且因此,使用来自第一或左Ro图像的值。例如,在预审合格的左下角 之上选择一组Ro图像值;这个集合可以局限于诸如十个像素的最大像 素数量。换句话说,对于预审合格的左下角,要从左Ro图像选择的像 素数量在步骤2002中利用公式9a来确定:

hleft=min(PLowerLeft(y)-PUpperLeft(y),10)

根据以上公式,两个值中的一个用于确定要选择的像素数量;或者 是以像素为单位的纵梁的高度(即,PLowerLeft(y)–PUpperLeft(y))或者是 10个像素,选其中较小的一个。因而,在步骤2004中,像素的集合 2032,见图20B,从左Ro图像中选择,其中该像素集合在集合中具有 hleft个成员。每个成员都是具有(x,y)坐标和像素值的像素。作为一个 例子,如果预审合格的左下角2030位于(x,225)并且估计出的左上角 2036位于(x,219),则hleft=6,并且所选定的像素集合2032的成员在 图20B中利用斜条标记示出。

图像分析计算机110在步骤2006中为随后的计算步骤初始化累加 器A1和索引值i。根据图20A流程图的一个特定例子的索引值i从1到 hleft变化并且用于唯一地指定像素集合2032的各个成员。涉及像素集合 2032中的像素值的计算不依赖于方向,而且因此,最小索引值可以指集 合2032最上面的像素2036并且在朝着集合2032最下面的像素2034向 下移动集合时增加。但是,在不影响以下所述的计算的情况下,索引值 可以颠倒过来。索引值i由图像分析计算机110在步骤2008测试并且, 如果该索引值指示在集合2032中还有更多的像素要评估,则过程移到 步骤2010。在步骤2010,图像分析计算机110确定以下不等式是否为 真:

|ρ(xi,yi)-ρ1desired|≤TOL4*ρ1desired

其中:

i=指向第一像素集合2032的各个成员的索引值;

ρ(xi,yi)=取自第一Ro图像中直接位于预审合格的左下角2030之上 的第一像素集合2032的第i个像素的值;

ρ1desired=以上关于公式7b计算出的、从规格化的灰度级图像上的原 点到经过预审合格的左下角和左上角的线的正交距离;及

TOL4=凭经验确定的值(在所说明的实施例中等于0.5)。

如果在步骤2010中该不等式对于特定的、加索引的像素为真,则 在步骤2014中对这个像素集合2032累加器A1递增,并且在步骤2012 中该索引值递增,然后以步骤2008开始重复这些步骤。如果在步骤 2010中该不等式不为真,则在步骤2012中索引值递增,然后以步骤 2008开始重复这些步骤。一旦图像分析计算机110在步骤2008中确定 像素集合2032的所有成员都已经评估过了,就在步骤2016中计算左垂 直线得分值,这个值代表选定的像素2032是否位于代表实际纵梁左边 缘的预审合格的左下角2030之上的置信等级。对于给定的线,该左垂 直线得分值是相应累加器仓计数A1与选定的像素总计数之比:

公式9b:Scoreleft=A1hleft

与图20A类似的过程也可以用于确定右垂直线得分值。用利用以上 公式8a计算出的角度然后可以通过利用来自第二或右Ro图像中 从可能的右下角之上向上延伸到估计出的右上角的像素值来确定定义来 自第二或右Ro图像的可能右下角之上的右垂直线的第二组像素是否匹 配计算出的正交距离ρ2desired。对于可能的右下角,所计算出的垂直线代 表纵梁的可能的右垂直边缘,并且因此,使用来自第二或右Ro图像的 值。例如,选择在可能的右下角之上的一组Ro图像值;这个集合可以 局限于诸如十个像素的最大像素数量。换句话说,在可能的右下角之上, 要从右Ro图像选择的像素数量是:

公式10a:hright=min(PLowerRight(y)-PUpperRight(y),10)

因而,在可能的右下角开始,选择位于可能的右下角之上的hright个像素。

如果以下表达式对于来自第二组像素的一个像素为真,则第二累加 器仓A2递增1:

|ρ(xj,yj)-ρ2desired|≤TOL4*ρ2desired

其中:

j=指向第二像素集合的各个成员的索引值;

ρ(xj,yj)=取自第二Ro图像中直接位于右下角之上的第二像素集合 的第j个像素的值;

ρ2desired=以上关于公式8b计算出的、从规格化的灰度级图像上的 原点到经过可能的右下角和右上角的线的正交距离;及

TOL4=凭经验确定的值(在所说明的实施例中等于0.5)。

计算右垂直线得分值,这个值代表位于右下角之上的选定像素是否 代表实际的纵梁右边缘的置信等级。对于特定的线,该右垂直线得分值 是相应累加器仓计数A2与选定的像素总计数之比:

公式10b:Scoreright=A2hright

如果其左或右得分小于阈值,在优选实施例中是0.1,或者Scoreleft和Scoreright之和小于第二阈值,在优选实施例中是0.5,则潜在地被认为 包括中心纵梁的候选对象被拒绝。

如以上所提到的,还预期评估可能的纵梁的备选方法。图19B提供 了在描述这种备选实施例时有帮助的几何框架。如前面一样,识别预审 合格的左下角1926和底部托盘板线1930。如上所述,这些可能的托盘 对象特征用于确定可能的右下角1936、估计的左上角1928和估计的右 上角1938。特别地,如以上所定义的,以下的值是通过利用如下假设确 定的:a)预审合格的左下角1926和估计的左上角1928具有相同的x 坐标;及b)可能的右下角1936和估计的右上角1938具有相同的x坐 标:

PLowerLeft(y)=用于预审合格的左下角1926的Y坐标值;

PUpperLeft(y)=用于估计的左上角1928的Y坐标值;

PLowerLeft(x)=用于预审合格的左下角1926的X坐标值;

PUpperLeft(x)=用于估计的左上角1928的X坐标值;

PLowerRight(y)=用于可能的右下角1936的Y坐标值;

PUpperRight(y)=用于估计的右上角1938的Y坐标值;

PLowerRight(x)=用于可能的右下角1936的X坐标值;及

PUpperRight(x)=用于估计的右上角1938的X坐标值。

利用这些坐标值连同上述水平梯度图像的像素值,可以计算备选的 Scoreleft和Scoreright,而不是早先描述的那些。特别地,备选的Scoreleft值 可以根据下式计算:

Scoreleft=1PLowerLeft(y)-PUpperLeft(y)Σk=1(PLowerLeft(y)-PUpperLeft(y))gx(PLowerLeft(x),(PLowerLeft(y)-k))

其中:

PLowerLeft(y)=用于预审合格的左下角的Y坐标值;

PUpperLeft(y)=用于估计的左上角的Y坐标值;

PLowerLeft(x)=用于预审合格的左下角的X坐标值;

k=用于求和的索引值,其中k从1到PLowerLeft(y)-PUpperLeft(y)的最 大值变化;及

gx(PLowerLeft(x),(PLowerLeft(y)-k))=水平梯度图像中用于x坐标为 PLowerLeft(x)且y坐标为(PLowerLeft(y)-k)的像素的像素值。

如果其左纵梁得分Scoreleft小于阈值,则潜在地被认为包括中心纵梁 的候选对象被拒绝。例如,在这种备选实施例中,用于备选的Scoreleft的 阈值可以是5.0。

此外,备选的Scoreright也可以计算并结合备选的Scoreleft值一起用于 确定是否拒绝一个候选对象。特别地,备选的Scoreright值可以根据下式 计算:

Scoreright=1PLowerRight(y)-PUpperRight(y)Σk=1(PLowerRight(y)-PUpperRight(y))gx(PLowerRight(x),(PLowerRight(y)-k))

其中:

PLowerRight(y)=用于可能的右下角的Y坐标值;

PUpperRight(y)=用于估计的右上角的Y坐标值;

PLowerRight(x)=用于可能的右下角的X坐标值;

k=用于求和的索引值,其中k从1到PLowerRight(y)-PUpperRight(y)的 最大值变化;及

gx(PLowerRight(x),(PLowerRight(y)-k))=水平梯度图像中用于x坐标为 PLowerRight(x)且y坐标为(PLowerRight(y)-k)的像素的像素值。

如前面一样,如果其右纵梁得分Scoreright小于阈值,则潜在地被认 为包括中心纵梁的候选对象被拒绝。例如,在这种备选实施例中,用于 备选的Scoreright的阈值可以与用于备选的Scoreleft的左垂直纵梁相同(例 如,5.0)。如果或者Scoreright或者Scoreleft低于相应的阈值,或者它们的 和低于某个其它阈值,则候选对象可以被拒绝作进一步的考虑。

此外,如果其热度太高,则潜在地被认为包括中心纵梁的候选对象 可以被删除。在图19B中,可能是中心纵梁的像素区域通过预审合格的 左下角1926、可能的右下角1936、估计的右上角1938和估计的左上角 1928来定义。如果规格化的灰度级图像中用于这个像素区域的像素值的 方差(variance)大于预定的阈值,则这个候选对象可以被拒绝。一个 例子是通过成像天花板灯产生的对象。天花板灯可以发射近红外线照明 并且在昏暗的背景上显示为非常明亮的不规则区域,从而给出高热度级 别。预定的热度阈值可以例如是大约1200。

用于这个潜在的中心纵梁区域的方差Hvar可以根据下式计算:

Hvar=1kΣi=1k(GSPV(pixel(i))-GSPV)2

其中:

k=由角落1926、1928、1936和1938界定的区域中的像素个数;

i=由角落1926、1928、1936和1938界定的区域中唯一地指向k 个像素之一的索引值;

GSPV(pixel(i))=规格化灰度级图像中由角落1926、1928、1936和 1938界定的区域中k个像素中一个特定像素(即,pixel(i))的灰度级 像素值(GSPV);及

另一个标准涉及可以是候选对象的中心纵梁的区域的对象区域。如 果由角落1926、1928、1936和1938界定的区域包括少于50个像素, 则该候选对象可以被拒绝。

托盘对象可以分别由第一、第二和第三矩形1802、1804和1810定 义,如图18中所示出的,其中第一和第二矩形1802、1804可以对应于 图3中所说明的托盘P的第一和第二叉子接纳开口210和212的至少一 部分,而第三矩形1810可以对应于托盘P的中心纵梁。给定中心纵梁 估计的左上角和估计的右上角,矩形1802、1804和1810的高度h可以 利用以下在图21A中所绘出的过程来计算。图21B提供了帮助理解用 于图21A过程计算的几何结构的框架。

图像分析计算机110在步骤2101中检索先前计算出或确定的多个 值。术语“检索”不意味着传送(convey)任何特定的存储/检索设备、 方法或协议,而仅仅是这些值可以由图像分析计算机110在进行附加计 算的时候访问。检索出的值中有一些是用于估计的左上角和估计的右上 角的坐标,其中用于左上角的Y值和用于右上角的Y值是通过确定从 预审合格的左下角/底部托盘板的上表面200A到上部托盘板202上的点 的距离来找出的,然后这个距离从用于预审合格的左下角和可能的右上 角的每个Y值中减去(减去这个距离是因为当点在第一Ro图像中向上 移动时y坐标值减小)。其它值包括定义经过预审合格的左下角的底部 托盘板线LBPB的参数

在步骤2103中,图像分析计算机110根据以下公式计算值h:

公式11:

ρBPBL=从规格化的灰度级图像上的原点到经过预审合格的左下角的 底部托盘板线LBPB的正交距离;

yUpperLeft=用于估计的左上角的Y坐标值;

yupperRight=用于估计的右上角的Y坐标值;

xUpperLeft=用于估计的左上角的X坐标值;及

xUpperRight=用于估计的右上角的X坐标值。

参考图21B,图21A的过程可以更容易地理解。绘出了预审合格的 左下角2106、估计的左上角2108和估计的右上角2110。早先计算出的 并且经过左下角2106的底部托盘板线2102离原点O具有根据以上公 式5计算出的正交距离ρBPBL,并且相对于水平线构成角度2104。 那个相同的角度可以用于画经过估计的左上角2108的第一条线 2112和经过估计的右上角2110的第二条线(未示出)。如果估计的左上 角2108适当地与估计的右上角2110对准,则同一条线可以经过这两个 角落。但是,更有可能可能画出两条不同的线。这两条线中每一条都将 具有相应离原点O的正交距离。公式11使用这些相应的正交距离来确 定这两条可能的线当中哪一条更接近原点O并且对h产生更高的值。

在图21B中,选择了左上角2108,这仅仅是作为例子,因为它产 生了离原点O具有更小正交距离并且且对h产生更高值的线2112。因 而,画通过估计的左上角2108的线2112并且,其到原点的正交距离可 以通过下式表示

因而,从公式11找出的h是在到底部托盘板线2102的正交距离 ρBPBL和到上部线2112的正交距离ρTPBL之间的差。在做出公式11中的 决定时,图像分析计算机110可以在比较这两个值之前,把这两个值中 的每一个取整到最接近的相应的整数,或者可以比较原始值,然后仅取 整最大值来确定h。

如前面关于图18所提到的,托盘对象可以分别由第一、第二和第 三矩形1802、1804和1810来定义,这三个矩形可以代表托盘的第一和 第二叉子接纳开口及垂直、中心纵梁的至少一部分。

第一矩形1802可以定义为使得它沿着底部托盘板线LBPB1805向预 审合格的左下角1806的左边延伸至多200个像素并且与线1805正交地 在y之上延伸h个像素。如以上所指出的,第一矩形1802潜在地代表 在托盘中心纵梁左边第一叉子接纳开口210的一部分。而且,第二矩形 1804可以定义为使得它沿着线1825向可能的右下角1808的右边延伸至 多200个像素,这个可能的右下角1808包括具有预审合格的左下角 1806的候选对象,并且与线1825正交地在y之上延伸h个像素。线 1825可以或者可以不经过预审合格的左下角1806;但是,它关于x轴 以相同的角度定向。第二矩形1804潜在地代表在托盘中心纵梁 (对应于第三矩形1810)右边第二叉子接纳开口211的一部分。第三矩 形1810从预审合格的左下角1806水平地延伸到候选对象的可能的右下 角1808并且正交地在y之上延伸h个像素,以潜在地代表托盘中心纵 梁。

第一矩形1802和第二矩形1804的宽度可以依赖图像的尺寸、预审 合格的左下角的x坐标值XLLC以及可能的右下角的x坐标值XLRC而变。 对于尺寸为480x752像素的图像,第一和第二矩形1802、1804相应的 最大宽度可以是200像素。对于尺寸为240x376像素的图像,第一和第 二矩形1802、1804相应的最大宽度可以是100像素。但是,候选对象 可以具有在图像中定位成使得图像区域的边缘在其中一个角落的200像 素(或100像素)内的预审合格的左下角和可能的右下角。在这种情况 下,矩形(例如,1802、1804)的宽度可能必须小于200像素(或者, 如果照相机进行2x2装仓的话,100像素)。因而,如以下更详细解释的, 计算leftWidth值并且计算rightWidth值,来确定第一矩形1802和第二矩 形1804相应的宽度。

例如,如果预审合格的左下角1806位于位置(145,250),可能的 右下角1808位于位置(155,252),则每个矩形的宽度是相应计算出的 值,h=10,而角度然后这三个矩形1802、1804和1810中每 一个的所有角落1801、1821、1803、1815、1806、1808、1809、1811、 1823、1813、1817和1807都可以计算。如以下更完整描述的,规格化 的灰度级图像中构成不同矩形1802、1804和1810的像素的值然后可以 用于计算代表这些矩形实际对应于托盘洞和中心纵梁的置信度 (CONFIDENCE)的值。

虽然矩形1802、1804和1810的精确界定可以被计算并用于产生这 种置信值,但是,作为替代,可以作出一些简化下述一些计算步骤的假 设和近似。特别地,矩形1802、1804和1810中每一个都可以通过相应 的平行四边形来近似,其中每个平行四边形都由h行像素构造,其中每 行像素都与底部托盘板线1805平行。因而,作为本文中所使用的术语, “矩形”也要涵盖“平行四边形”。如前面所解释过的,快速画线算法, 诸如布氏算法,可以用于在已知经一条线的两个端点时识别要包括在该 线上的中间像素。

图23A提供了可以用于构造近似矩形1802、1804和1810的相应平 行四边形的一种示例过程的流程图。图22A说明了对应于第一矩形 1802的平行四边形。一般而言,平行四边形是通过以下步骤构造的:a) 确定在两个下边角落之间所画的第一条线的像素,b)识别下一条线的 两个端点,c)识别要在包括在这下一条线当中的像素,及d)对h条 线重复这些步骤。最终,一个特定平行四边形的所有像素将都识别出来 并且,如果期望的话,可以逻辑地分组到h个不同的线中。

如图22A中所示出的,利用第一矩形1802的下边角落1801和 1821、计算出的h值以及角度可以利用图23A的过程构造近似 第一矩形1802的平行四边形2202。图23A的过程可以与三个平行四边 形中任何一个一起使用,但是以下的示例讨论碰巧涉及对应于第一矩形 1802的第一平行四边形2202。

在步骤2302,根据下式计算左端点(即,平行四边形2202的第一 条线的左下角1801)的x坐标x11

见图18,

并且根据下式计算右端点(即,平行四边形2202的第一条线的右 下角1802)的x坐标x12

x12=XLLC–1

在以上的公式中,下标中的第一个数字指对应于该平行四边形的矩 形,而下标中的第二个数字指用于平行四边形中特定线的端点。例如, “x12”指对应于第一矩形1802的平行四边形2202的当前线的第二(即, 右)端点的x坐标。但是,如以下关于相应端点的y坐标更完全描述的, 每个平行四边形都包括h个不同的线。因此,另一个索引值r可以添加 到下标中,来区分h条线中哪个特定的线在公式中被使用。这个索引值 r的范围从r=0到r=h-1,其中r=0指平行四边形最底部的线。因而,可 以执行把r的值初始化成等于零的初始步骤2301。利用这个下标惯例, 见图18,用于三个平行四边形中每一个当中的第一条线的端点的x坐标 可以根据以下来计算:

x12r=XLLC–1

x21r=XLRC+1

x31r=XLLC

x32r=XLRC

其中,对于第一条线,r=0;及

并且imageWidth是图像中像素列的个数。

在以上的例子中,预审合格的左下角1806位于位置(145,250), 而可能的右下角1808位于位置(155,252),并且角度如果 图像尺寸假设为是240x376像素,则根据以上公式,leftWidth=100且 rightWidth=100。在图像尺寸为480x752像素的备选例子中,以上公式 提供leftWidth=146且rightWidth=200。根据以上计算,平行四边形2202 的右下角1821与第一矩形1802的右下角1821处于相同的x坐标x12, 并且被选择作为在预审合格的左下角1806左边的一个像素。平行四边 形2202的左下角1801与矩形1802的左下角1801处于相同的x坐标 x11,并且沿着底部托盘板线1805位于预审合格的左下角1806左边 leftWidth个像素。

接下来,图像分析计算机110可以为这两个端点计算y坐标,分别 是y11和y12。例如,用于左下角1801的y坐标可以从用于到处于已知 角度经过已知点(x11,y11)的线的正交距离ρline的公式来计算:

求解点的y坐标给出公式:

但是,如所提到的,图23A的过程自动化对h条不同的线计算端 点。因此,在步骤2306,图像分析计算机110使用整数,从0到h-1变 化的索引值“r”,来参考平行四边形2202中每条个别的线。图23B说 明了为第一平行四边形2202计算的h-1条线中的3条。最底部的线是 底部托盘板线1805并且对应于r=0。朝上的下一条线,线2301,对应 于r=1并且离原点具有等于(ρBPBL–r)的正交距离。存在这些线中计算 的h个,其中,最后一条线,线2303,对应于r=h-1并且离原点具有等 于(ρBPBL–h+1)的正交距离。

因而,对于这些线中的任意一条(例如,r=0至r=h-1),左端点的 y坐标(即,y11r)和右端点的y坐标(即,y12r)可以由图像分析计算 机110在步骤2308中根据下式计算:

利用当前已知的线的两个端点的两个坐标,图像分析计算机110可以在 步骤2310中利用传统的画线算法,诸如布氏算法,识别要包括在这两 个端点之间的当前线中的中间像素位置。识别出要包括在一条线中的像 素位置随后用于提取规格化的灰度级图像中那些位置的像素值。如以下 所描述的,这些像素值用于为对应于三个矩形1802、1804和1810的三 个平行四边形中每一个生成相应的垂直投影。

在步骤2312中,图像分析计算机110确定是所有h条线都已经计 算过了还是还有剩下的。如果还有剩下的,则在步骤2302和2304中计 算新的x坐标并且在步骤2306中递增r索引值。在步骤2302和2304 中设置新x坐标值的时候,作出平行四边形的边(side)在y方向正交 的近似。因而,对于h条线中的每一条,x11r和x12r都是相同的,并且 步骤2302和2304只需要在图23A的算法第一次执行时计算这些值。

总之,用于第一平行四边形2202的h条线中每一条线的相应的第 一和第二端点坐标根据下式计算:

x12r=XLLC–1;

其中:

XLLC=底部托盘板线,LBPB,通过其的预审合格的左下角的x坐标, 及

r=唯一地指第一平行四边形2202、第二平行四边形2220和第三 平行四边形2240中每一个当中相应h条线中一条的索引值,其值从0 到(h-1)变化,其中r=0指h条线中最底部的一条。

而且,用于第二平行四边形2220的h条线中每一条的相应的第一 和第二端点根据下式计算:

x21r=XLRC+1;

其中:

XLRC=可能的中心纵梁的可能的右下角的x坐标,及

r=唯一地指第一平行四边形2202、第二平行四边形2220和第三 平行四边形2240中每一个当中相应h条线中一条的索引值,其值从0 到(h-1)变化,其中r=0指h条线中最底部的一条。

最后,对于第三个平行四边形,根据下式计算h条线中每一条的相 应的第一和第二端点:

x31r=XLLC;

x32r=XLRC;

图23A的过程突出了如何计算这h条线。但是,要计算h条线的 原因涉及在步骤2310中计算的垂直投影。这个步骤的细节在图23C的 流程图中说明。图23C的过程在已经计算出用于平行四边形2202的一 个特定线的两个端点时开始。基于这两个端点,快速画线算法可以用于 确定哪些中间像素要包括在特定的线中。

在步骤2350中,图像分析计算机110在左端点开始其第一次迭代 (即,i=1)。如以上更详细描述的,快速画线算法,诸如布氏算法,在 后续的迭代中,在x方向步进一个像素,每次迭代利用线的斜率以确定 用于算法的那次特定迭代的y坐标值。因而,在步骤2352中,图像分 析计算机110确定在算法的第i次迭代用于特定线r的当前像素位置的 x坐标和y坐标。在步骤2354中确定规格化的灰度级图像中处于那个像 素位置的像素值。

在示例平行四边形2202中,平行四边形的每一条线(即,每个不 同的“r”值)在x方向横跨leftCount个像素,其中并且,因此,要执行leftCount次迭代来确定 每一条线的中间像素。相应的累加器Yi用于为算法2310的leftCount 次不同迭代中的每一次迭代构造负像素的垂直投影。由此,在所说明的 实施例中,leftCount累加器定义为对应于为平行四边形的h条线中每 一条执行的leftCount次迭代。每个累加器还对应于h条线中每一条当 中leftCount个像素值每一个相应的X坐标。

在步骤2356中,确定规格化的灰度级图像中处于刚在第i次迭代 中生成的像素位置的像素值是否为负。如果是,则在步骤2358中那个 像素值添加到累加器Yi。当不在托盘结构之上时,规格化的灰度级图像 中像素的值为负,而当在托盘结构之上时,趋于为正。图像分析计算机 110在步骤2360中递增索引计数i以及x坐标值。在步骤2362中,图 像分析计算机110确定是否所有leftCount次迭代都已经完成。如果没 有,则过程在步骤2352对线中下一个中间像素位置开始重复。

在图23C过程步骤结束时,用于特定线的中间像素值已经计算出来 并且用于为快速画线算法的每次迭代更新相应的累加器Yi。因为图23A 的全部过程对h条线重复,图23C的这个过程对h条线中的每一条重 复,并且因此,累加器Yi代表用于构造平行四边形2202的所有线的数 据。只有负像素累加到投影中。

描述如何计算累加器Yi中的值的另一种途径是根据下式在每个相 应的累加器Yi中累加和时考虑上述过程:

Yi=Σr=0r=h-1GSPVir

其中:

i=指向第一平行四边形2202的特定线中特定像素位置的相对x坐 标的索引值,其值从1到Q变化,其中i=1对应于特定线中最左边的像 素位置,而i=Q对应于特定线中最右边的像素位置;

r=唯一地指向第一平行四边形2202、第二平行四边形2220和第三 平行四边形2240中每一个当中相应h条线中一条的索引值,其值从0 到(h-1)变化,其中r=0指h条线中最底部的一条;及

GSPVir=规格化的灰度级图像中位于由第一平行四边形2202第r 条线中第i个位置指示的像素位置的像素的灰度级像素值(GSPV),其 中,如果GSPVir小于零,就把GSPVir添加到相应的累加器和Yi

回过头来参考图22A,示例平行四边形2202的角落具有相应的坐 标值:

左下角:(45,236)

右下角:(144,250)

左上角:(45,227)

右上角:(144,240)

在这个特定的例子中,平行四边形的每一条线(即,每个不同的 “r”值)都在x方向横跨100个像素,并且相应的累加器Yi用于为平 行四边形2202的100个不同列中每一列构造垂直投影。例如,对于底 部的线1805,快速画线算法从x=45步进到x=144并且在途中每一步计 算适当的y坐标值。在图22A的例子中,对每一条线突出算法的第96 步。对于线r=0,这第96步具有像素位置(140,247);对于线r=4,这 第96步具有像素位置(140,243);而对于线r=9,这第96步具有像素 位置(140,238)。

如果平行四边形2202覆盖到规格化的灰度级图像上,则累加器Y96可以看作来自规格化的灰度级图像的列x=140的负像素在平行四边形 2202用于那一列的y界限内的垂直投影。

如所提到的,图23A和图23B的过程是关于对应于第一矩形1802 的平行四边形2202描述的。但是,如图22B中所示的对应于第二矩形 1804的平行四边形2220可以类似地构造。而且,如图22C中所示的对 应于第三矩形1810的平行四边形2240可以类似地构造。

图22B的平行四边形2220基本上类似于第一平行四边形2202,因 为有rightCount个用于确定来自平行四边形2220的像素的垂直投影的 累加器2222。更一般地,虽然平行四边形2220的每一条线在x方向横 跨rightCount个像素,其中由 此指示有rightCount个累加器2222。但是,在其它例子中,leftCount 和rightCount的值可以不同,使得可以使用不同个数的累加器。图22C 的平行四边形2240对应于可能代表中心纵梁的第三矩形1810。因而, 这个平行四边形的宽度不是由rightWidth或leftWidth的值确定的,而 是由预审合格的左下角1806和可能的右下角1808的坐标确定的。

为了为“洞”生成得分,第一和第二平行四边形2202和2220被视 为一个单元。因而,计算用于第一和第二平行四边形2202和2220的一 个垂直投影并且计算单独的、用于第三平行四边形2240的第二垂直投 影。

如以上所提到的,当为这些区域计算垂直投影时,第一和第二平行 四边形2202和2220被视为单个单元。因而,根据图23A和图23C的 过程,计算Yi的200个值,两个平行四边形2202和2220的每一列一 个。非常像用于为第一平行四边形2202计算累加器值Yi的过程,也可 以为第二平行四边形2220计算累加器Yi的值。对于第二平行四边形 2220,负像素的累加器Yi中的值是通过根据下式在每个相应的累加器 Yi中累加和来计算的:

Yi=Σr=0r=h-1GSPVir

其中:

i=指向第二平行四边形2220的特定线中特定像素位置的相对x坐 标的索引值,其值从Q+1到Q+rightWidth变化,其中i=Q+1对应于特 定线中最左边的像素位置,而i=Q+rightWidth对应于特定线中最右边 的像素位置;

r=唯一地指向第一平行四边形2202、第二平行四边形2220和第三 平行四边形2240中每一个当中相应h条线中一条的索引值,其值从0 到(h-1)变化,其中r=0指h条线中最底部的一条;及

GSPVir=规格化的灰度级图像中位于由第二平行四边形2220第r 条线中第i个位置指示的像素位置的像素的灰度级像素值(GSPV),其 中,如果GSPVir小于零,就把GSPVir添加到相应的累加器和Yi

基于用于所计算出的第一和第二平行四边形2202和2220的Yi的 不同值,平均值可以根据公式12来确定:

Y=1NΣi=1NYi

其中N代表组合的两个平行四边形2202和2220中列的总数(例如,利 用前面例子的坐标,N=200)。这个平均值在为第三个平行四边形2240 确定得分时可以使用。

参考图22C,阴影像素代表第三个平行四边形2240。存在一个从1 到11变化(在这个例子中)的索引值j2270,以便唯一地识别平行四边 形2240中的每一列。对于每一列,根据图23D的过程计算值Zj2272, 这个值代表灰度级图像每一列中负像素值的一部分之和。

图23D的过程与图23C的过程相似。如上所述,图23C的过程应 用到第一和第二平行四边形2202和2220。图23D的过程以类似的方式 应用到第三个平行四边形2240。当用于平行四边形2240特定线的两个 端点(即,第三个平行四边形2240的第一条线的端点1806和1808)已 经计算出来时,该过程开始。基于这两个端点,快速画线算法可以用于 确定哪些中间像素要包括在该特定的线中。

在步骤2351,图像分析计算机110在平行四边形2240当前线(例 如,线r)上的左端点(即,j=1)开始。如以上更详细描述的,快速划 线算法,诸如布氏算法,在后续迭代中,在每次迭代在x方向步进一个 像素,利用线的斜率以确定用于图23D过程的那次特定迭代的y坐标值。 因而,在步骤2353中,图像分析计算机110为特定线r确定在该算法 的第j次迭代用于当前像素位置的x坐标和y坐标。在步骤2355中确 定规格化的灰度级图像中位于那个像素位置的像素的值。

在示例平行四边形2240中,平行四边形的每一条线(即,每个不 同的“r”值)从用于预审合格的左下角1806的x坐标XLLC横跨到用 于可能的右下角1808的x坐标值XLRC,并且因此,要执行(XLRC– XLLC)次迭代来确定每一条线的中间像素。相应的累加器Zj用于为图 23D过程的每次不同迭代(在图22C的例子中,有11次迭代)构造一 些负像素的垂直投影。由此,在所说明的实施例中,定义了对应于为平 行四边形2240的h条线中每一条线执行的11次迭代的11个累加器。 每个累加器还对应于h条线中每一条线的11个像素中一个的相应X坐 标值。

即使用于当前像素位置的像素值(在步骤2355中)为负,也没有 必要把它包括在特定累加器Zj中所计算的垂直投影中。只有那些具有 满足以下不等式的灰度级值的像素才被包括:

其中是根据公式12计算的,而h是根据公式11计算的。

因而,在步骤2357中,确定规格化的灰度级图像中位于刚在第j 次迭代中生成的像素位置的像素值是否满足以上不等式。如果满足,则 在步骤2359中那个像素值添加到累加器Zj。图像分析计算机110在步 骤2361中递增索引计数j以及x坐标值。在步骤2363中,图像分析计 算机110确定是否所有迭代都已经完成。如果没有,则该过程利用当前 线中的下一个中间像素位置在步骤2353开始重复。

在图23D过程步骤结束时,用于特定线的中间像素值已经计算出 来并且用于为快速画线算法的每次迭代更新相应的累加器Zj。图23D 的这个过程对h条线中的每一条重复,并且使得最终累加器Zj代表用 于构造平行四边形2240的所有线的数据。

合起来看,Zj的值是规格化的灰度级图像中对应于平行四边形 2240像素位置的负值像素的一部分的垂直投影。描述如何计算累加器 Zj中的值的另一种途径是根据下式在每个相应的累加器Zj中累加和时 考虑上述过程:

Zj=Σr=0r=h-1GSPVjr

其中:

j=指向第三平行四边形2240的特定线中特定像素位置的相对x坐 标的索引值,其值从1到s变化,其中j=1对应于特定线中最左边的像 素位置,而j=s对应于特定线中最右边的像素位置;

r=唯一地指向第一平行四边形2202、第二平行四边形2220和第三 平行四边形2240中每一个当中相应h条线中一条的索引值,其值从0 到(h-1)变化,其中r=0指h条线中最底部的一条;及

GSPVjr=规格化的灰度级图像中位于由第三平行四边形2240第r 条线中第j个位置指示的像素位置的像素的灰度级像素值(GSPV),其 中,如果GSPVjr小于或等于就把GSPVjr添加到相应的累加 器和Zj

然后,利用公式13为三个平行四边形计算合成的洞得分:

Scorehole=1-1NΣi=1N|Yi-Y||Yi+Y|-Z(Z+Y)

其中:Y=1NΣi=1NYi并且Z=1sΣj=1sZj

在以上计算中,s代表从预审合格的左下角到可能的右下角的列数, 而N代表组合的两个平行四边形2202和2220中总的列数。利用前面例 子的坐标,s=11且N=200。

如果或者或者的相应的平均值为零,则合成的洞得分设置成零; 否则就根据以上公式来计算合成的洞得分。公式13右侧中间的项对于 矩形洞处于最小值,并且Z投影的均值与Z均值和Y均值之和的比 (公式13中最右边的项)对于垂直纵梁处于最小值。因而,根据以上 公式,当第一和第二平行四边形2202和2220位于托盘洞之上并且第三 平行四边形2240位于托盘纵梁之上时,用于Scorehole的值更高。

对于其Scoreleft(和/或Scoreright,依赖于用于计算这些值的特定技术) 超过如上所述预定阈值的每个候选对象,利用以下公式确定合成的对象 得分:

Scoreobject=(ScoreLowerLeftCorner+ScoreLowerRightCorner)*ScoreBaseboardLine*Scorehole2

其中:

ScoreLowerleftCorner=从左下角图像中为对应于候选对象的预审合格的 左下角的像素位置计算出的值;

ScoreLowerRightCorner=从右下角图像中为对应于候选对象的可能右下角 的像素位置计算出的值;及

值“M”是Ro图像的以像素为单 位的宽度,而Ny是与每个计数器关联的子线的个数;及

ScoreHole=来自公式13的值。

以上描述用于识别灰度级图像中可以对应于与托盘关联的托盘的候 选对象,托盘可以特征化为具有隔开托盘P的两个洞或开口的一个中心 纵梁(例如,208)。本领域普通技术人员将认识到,即使存在不同的托 盘结构,类似的技术也可以使用。例如,有些托盘可以包括隔开两个洞 或开口的两个中心纵梁并且具有位于两个中心纵梁之间的一个中心洞或 开口。在这种情况下,每个中心纵梁将具有它自己的四个角落,这些角 落可以利用上述技术来识别。而且,公式13的Y和Z值可以修改成考 虑附加的中心矩形洞和附加的中心纵梁。因而,示例合成得分计算可以 不同,诸如像:

Scoreobject=(ScoreLowerLeftCorners+ScoreLowerRightCorners)*ScoreBaseboardLine*Scorehole4

有些托盘可以具有其一部分延伸到底部托盘板线前面的中心纵梁。 上述通用技术仍然可以使用但是可能需要对给公式6的61条线评分的 方式进行补偿。有些托盘可以具有在底部托盘板线和中心纵梁之间出现 的圆角,或者其它形状的角落,而不是前面关于图3的托盘P所讨论的 方角。同样可以使用上述通用技术,但是与掩码300和310(见图6和 7)那些不同的掩码结构可以提供有益的结果。可以有不包括下部托盘 板的几个托盘。在这种情况下,托盘位于其上的货架的顶部可以是用于 识别底部托盘板线的备选结构,而且与上述相同或相似的技术可以用于 识别并给各个候选对象打分。

图像中的已经为其确定了合成对象得分值“ScoreObject”的候选对象 在本文中被称为“评分的候选对象”并且定义图像中最有可能对应于实 际托盘的对象。评分的候选对象通常具有0到大约1.0之间的ScoreObject, 而实际对应于托盘的评分的候选对象对于任一图像尺寸通常都具有大于 0.5、接近1.0的ScoreObject。但是,虽然图像帧中实际上只有几个托盘, 但是会在图像帧中识别出大量这种评分的候选对象。因此,每个图像帧 中评分的候选对象的个数可以进一步减少,以降低对多个图像帧进行后 续分析的计算负担。

如以下更详细描述的,图像分析计算机110在不同的时刻获得一系 列图像帧。在每个图像帧中,都利用上述技术识别候选对象并打分。然 后,如果可能的话,就在图像帧之间跟踪这些评分的候选对象。为了实 现这种跟踪,图像分析计算机110维护关于来自前面或前一图像帧的现 有评分的候选对象以及最近获得的或者下一个图像帧中识别出的新的评 分的候选对象的信息。在最近获得的图像帧中,所识别出的“新的”评 分的候选对象可以包括在任何一个前面的图像帧中都没有识别出的一些 评分的候选对象,但是还可以包括可以匹配,或对应于,在早先图像帧 中先前识别出的现有评分的候选对象的评分的候选对象。

让图像分析计算机110维护这种信息的一种途径是维护所有评分的 候选对象的列表,使得对于每个评分的候选对象,都存储包含多个对应 对象特征的相应记录。对象特征可以包括,例如,作为离原点的正交距 离和对应底部托盘板线的离水平面的角度的参数对应的 合成对象得分值“ScoreObject”、用于对应中心纵梁的左下角的x-y坐标、 用于中心纵梁的其它三个角落的x-y坐标、用于与有可能分别对应于左 和右叉子接纳开口和中心纵梁的评分的候选对象所关联矩形1802、1804、 1810的x-y坐标(见图18)、如根据以上公式11计算出的矩形的高度h, 以及对应的个别分量得分值,诸如ScoreLowerRightCorner、ScoreLowerLeftCorner和 ScoreHoles。如以下更详细描述的,还有其它特征可以包括在每个记录中, 以帮助在不同图像帧之间跟踪评分的候选对象。

评分的候选对象的这个列表及其对应的记录,可以被称为对象列表 (Objectlist)。图像分析计算机110可以维护两个不同的Objectlist。可 以维护包括现有评分的候选对象的现有对象列表(ExistingObjectlist) 并且可以维护包括最近获得的图像帧中的评分的候选对象的新对象列表 (NewObjectlist)。图23E绘出了根据本发明原理用于维护Objectlist 的示例性过程的流程图。在步骤2370,图像分析计算机110维护 ExistingObjectlist,如以上所提到的,该列表包括用于被跟踪的、来自 前面一个或多个图像帧的现有评分的候选对象的相应记录。图像分析计 算机110在步骤2372中获得下一个图像帧或下一灰度级图像。此外, 图像分析计算机110还为这下一个图像帧中最终的评分的候选对象创建 NewObjectlist。利用上述技术,图像分析计算机在步骤2374中识别这 个新图像帧中评分的候选对象然后给其打分。在以下更完整描述的步骤 中,图像分析计算机110可以在步骤2376中从NewObjectlist修剪来自 NewObjectlist的评分的候选对象,以减少将被跟踪的评分的候选对象 的个数。在步骤2378中,修剪后的NewObjectlist中的评分的候选对象 可以与ExistingObjectlist中对应的对象匹配,或者尝试匹配。 ExistingObjectlist中有些评分的候选对象可能在NewObjectlist中没有 匹配,并且在步骤2380中有可能可以从ExistingObjectlist中被删除, 因此它们不再被跟踪。避免在第一次不匹配时删除评分的候选对象,而 是在删除该评分的候选对象之前等待或者两次或者三次后续不匹配的发 生可能是有益的。而且,NewObjectlist中有些评分的候选对象可能在 ExistingObjectlist中不具有对应的匹配对象;于是,这些评分的候选对 象将被添加到ExistingObjectlist。

依赖于评分的候选对象如何匹配,在步骤2382中, ExistingObjectlist中的记录可以被更新,以反映来自NewObjectlist的 新信息,以便提供将继续被跟踪到下一个图像帧中的评分的候选对象的 当前列表。而且,在步骤2384中,图像分析计算机110可以把 NewObjectlist中没有找到与ExistingObjectlist中现有对象匹配的新识 别出的对象添加到ExistingObjectlist中的对象。然后,过程控制返回步 骤2372,在那里获得下一个图像帧,并且可以创建新的NewObjectlist, 使得处理可以重复。

如以上关于图23E的步骤2376所提到的,如果期望的话,则图像 分析计算机110可以从NewObjectlist修剪一些评分的候选对象。特别 地,利用与每个评分的候选对象关联的对象特征,图像分析计算机110 可以从图像帧的NewObjectlist中消除不可能实际对应于托盘的一些评 分的候选对象。

图23E中所示的步骤示为顺序发生;但是,本领域普通技术人员将 认识到,在不背离本发明范围的情况下,有些步骤可以同时执行。例如, 没有必要等到在步骤2378中所有对象都匹配才开始在步骤2372中获得 下一个图像帧。

图24A绘出了用于从用于一个图像帧的NewObjectlist中消除至少 一些评分的候选对象的示例性算法的流程图。如以上所提到的,并且如 步骤2402中所示,图像分析计算机110维护用于当前被分析的图像帧 中评分的候选对象的NewObjectlist。利用用于每个评分的候选对象相 应合成对象得分ScoreObject,图像分析计算机110可以在步骤2404中消 除其ScoreObject值低于预定最小值的所有评分的候选对象。例如, ScoreObject得分低于0.3的所有评分的候选对象都可以从用于该图像帧的 NewObjectlist删除。

根据本发明的一个示例方面,灰度级图像的图形显示可以经车辆20 上的图像监控器(未示出)提供给车辆20的操作人员,其中该图形显 示可以由车辆计算机50来控制。在这个图形显示中,代表 ExistingObjectlist中评分的候选对象的信息可以覆盖到灰度级图像上。 例如,代表评分的候选对象的底部托盘板线的红线可以在灰度级图像上 相信是该底部托盘板线所在的地方可视地显示。类似地,代表用于评分 的候选对象的中心纵梁的信息也可以覆盖到图形显示中的灰度级图像上。 例如,可以显示两条垂直线,每条线代表纵梁相应的左垂直边缘和相应 的右垂直边缘。作为替代,可以显示对应于评分的候选对象的中心纵梁 的预审合格的左下角和可能的右下角的相应的圆形。图形覆盖的信息可 以是彩色的或者编码的,使得不同的评分的候选对象可以在图形显示中 很容易区分。为了减少显示器上视觉混乱的可能,图像分析计算机110 可以在ExistingObjectlist和NewObjectlist中维护其合成对象得分大于 大约0.3的评分的候选对象,但是只有ExistingObjectlist中合成对象得 分大于或等于大约0.5的评分的候选对象才被车辆计算机50显示。

除了在步骤2404中消除一些评分的候选对象,图像分析计算机110 还可以确定是否有与其它评分的候选对象太接近的评分的候选对象。换 句话说,两个托盘不能物理上占据相同的空间,这意味着,如果两个评 分的候选对象彼此接近超过托盘所允许的物理维度,则那些评分的候选 对象中至少一个将被消除。因而,在步骤2406中,图像分析计算机识 别并消除其ScoreObject值小于附近其它评分的候选对象的评分的候选对象。 例如,图像分析计算机110可以首先确定NewObjectlist中每个评分的 候选对象的位置,然后识别在彼此预定距离内的那些评分的候选对象。 彼此在这个预定距离内的评分的候选对象被认为在彼此附近。对于那些 被识别为在彼此附近的评分的候选对象,这些评分的候选对象中一些可 以从用于那个图像帧的NewObjectlist中被消除。图24B提供了可以实 现为实现步骤2406的过程的附加细节。

通过依赖用于每个评分的候选对象的相应的中心纵梁的维度,附加 的评分的候选对象也可以从NewObjectlist中被消除。虽然两个评分的 候选对象可以彼此远到使它们不被认为是在彼此附近,但是,基于它们 相应中心纵梁的垂直坐标,它们的共存仍然可能是不可能的。因而,无 论评分的候选对象的子集在水平方向的距离如何,如果其相应中心纵梁 的部分重叠坐标的特定垂直跨度,则该评分的候选对象的子集可以被认 为是彼此在垂直本地,或者就是是“本地”。关于那些被认为彼此在本 地的评分的候选对象,具有最大合成得分ScoreObject的评分的候选对象可 以在NewObjectlist保留,而其它评分的候选对象被删除。例如,给定 具有底部托盘板线以及与其它本地候选对象相比具有 最大值ScoreObject的特定评分的候选对象(例如,Object(m)),其中所有 其它本地候选对象都位于该底部托盘板线的预定数量的像素内,在步骤 2408中其它本地的候选对象可以从NewObjectlist中被消除。图24C提 供了可以实现为实现步骤2408的过程的附加细节。

因而,利用修剪步骤2404、2406和2408,用于图像帧的 NewObjectlist的尺寸可以减小,使得在本文所述的后续图像处理和分 析过程中更少的评分的后续对象包括在NewObjectlist中。

如所提到的,图24B提供了可以实现为实现步骤2406的过程的附 加细节,其中NewObjectlist中的评分的候选对象被进一步分析,以确 定是否有一个或多个评分的候选对象可以从用于该图像帧的 NewObjectlist中消除。首先,在步骤2410中,图像分析计算机110确 定NewObjectlist中是否存在任何还没有测试的评分的候选对象。在过 程2406的初次通程(pass),整个NewObjectlist都保持未测试,并且 每次迭代有另一个评分的候选对象被测试,直到最终所有评分的候选对 象都被测试。例如,NewObjectlist可以包括多个评分的候选对象(例 如,N个)并且每个对象可以唯一地通过范围在1到N的索引值k来引 用。换句话说,Object(k)可以用于唯一地表示包括在NewObjectlist中 的一个评分的候选对象。因此,如果存在任何还未测试的评分的候选对 象,则控制转到步骤2412;否则,控制转到步骤2422。

在步骤2412,图像分析计算机110从NewObjectlist选择其中一个 评分的候选对象,Object(k)。选择对象的一种直接途径是使用索引值k, 在过程2406的每次迭代过程中,该索引值k在步骤2420中递增,使得 对于每一步,被测试的特定评分的候选对象都可以被称为Object(k)。 在步骤2414,图像分析计算机110识别离Object(k)接近超过预定距离 的所有评分的候选对象。

为了实现在附近的对象的识别,可以首先确定每个评分的候选对象 的位置。如以上所提到的,存在与每个评分的候选对象关联的多个对象 特征,包括涉及候选对象的不同特征(例如,中心纵梁左下角、中心纵 梁右下角,等等)的多个不同的x-y坐标对。评分的候选对象, Object(k),的位置将是一组x-y坐标(xobject(k),yobject(k))。可以被认为对应 于评分的候选对象的参考的有益的一个点是评分的候选对象的中心纵梁 的下部中心。参考图24D,Object(k)2448通过绘制中心纵梁2454来说 明。中心纵梁2454包括预审合格的左下角2450和可能的右下角2452。 在第一Ro图像中经预审合格的左下角2450所画的底部托盘板线2456 具有离原点2400的正交距离ρk2460。用于评分的候选对象2448(以及 中心纵梁2454)的位置2458,即对象的下部中心点,的坐标可以从关 于该评分的候选对象的对象特征估计。例如,利用左下角的x坐标 XLLC2450和右下角的x坐标XLRC2452,x坐标值xobject(k)可以估计为等 于利用对于评分的候选对象2448的来自第一Ro图像的正交距 离ρk2460,坐标yobject(k)可以估计为等于ρk2460。因而,对于 NewObjectlist中的每个对象,可以确定对应的相应位置。这个“位置” 值可以是为用于一个图像帧的NewObjectlist中每个评分的候选对象存 储的其中一个对象特征。因而,当在NewObjectlist中识别出特定的评 分的候选对象时,这个对象特征,或属性,可以被检索并在图像帧的图 像分析和处理中使用。本领域普通技术人员将认识到,在不背离本发明 范围的情况下,评分的候选对象的“位置”可以由评分的候选对象中除 中心纵梁的下部中心之外的特征来定义。

一旦识别出用于每个评分的候选对象的相应位置,步骤2414就可 以识别离特定的评分的候选对象,Object(k),接近超过预定距离的所有 那些评分的候选对象。在二维的图像帧中,诸如在图24D中所绘出的, 两个点(xg,yg)和(xh,yh)之间的距离d可以根据 来计算。利用对距离的这个计算,图像分析计 算机110在步骤2414中把NewObjectlist中作为在Object(k)附近的所 有评分的候选对象确定为满足以下公式的那些评分的候选对象:

d(xobject(k)-xobject(i))2+(yobject(k)-yobject(i))2

其中:

k:NewObjectlist中要为其确定从Object(k)到所有其它评分的候选 对象的相应距离的特定的评分的候选对象,Object(k),的索引值;k从 1到N变化;

(xobject(k),yobject(k))是用于评分的候选对象Object(k)的x-y坐标对;

i:NewObjectlist中特定的评分的候选对象,Object(i),的索引值; 索引值i从1到N变化,除值k之外,使得可以确定所有其它评分的候 选对象离Object(k)的距离;

(xobject(i),yobject(i))是用于评分的候选对象Object(i)的x-y坐标对;及

d:评分的候选对象之间预定的可允许最小距离,其中彼此距离小 于或等于d的两个候选对象被认为在彼此附近。值d可以是例如50个 像素。

作为以上公式的结果,对于特定的评分的候选对象,Object(k),对 照NewObjectlist中所有其它评分的后续对象测试,图像分析计算机110 可以确定是否存在被确定为在Object(k)附近的任何评分的候选对象。

因为用于评分的候选对象的坐标值指像素位置,所以评分的候选对 象之间的距离指像素位置之间的距离。但是,像素位置之间的距离对应 于在灰度级图像中捕捉到的托盘结构,或者潜在的托盘结构,之间的物 理距离。考虑托盘的典型尺寸,或者已知的尺寸范围,以及灰度级图像 的对应比例,托盘结构之间的物理距离可以与灰度级图像的像素距离相 关联。如果两个(或更多个)评分的候选对象像素距离比两个不同托盘 物理上可能的更接近,例如,在使用大图像尺寸(例如,480x752像素) 时是50像素或者对于较小图像尺寸(例如,240x376像素)是25像素, 则那些候选对象中至少一个可以被消除作为可能的候选对象,因为它们 两者(或者所有)不能都对应于灰度级图像中的实际托盘结构。

因而,在步骤2416中,图像分析计算机110比较Object(k)的相应 ScoreObject与用于在步骤2414中识别出的所有在附近的对象的相应 ScoreObject值。如果Object(k)的得分小于在步骤2414中识别出的任一对 象的得分,则在步骤2418中Object(k)被放到列表中,用于将来删除。

在步骤2420中,图像分析计算机110递增k并且对NewObjectlist 的下一个评分的候选对象重复该测试过程。最终,在步骤2422中, NewObjectlist中所有评分的候选对象都被测试并且添加到用于删除的 列表的所有评分的候选对象随后都可以从NewObjectlist修剪掉。假设 在步骤2418中一个或多个评分的候选对象添加到了删除列表,则用于 NewObjectlist的索引值k现在从1到M变化,其中M<N。回过头来参 考图24D,示出了围住半径为d个像素且中心在Object(k)(即,评分 的候选对象2448)的位置2458的一个区域的圆形2446。对于在图24D 中绘出的剩余评分的候选对象(2466、2470、2472、2474、2486), Object(4)2486被认为是在Object(k)附近,因为其位置(x44)2488在 圆形2446内。假设Object(4)2486具有比Object(k)2448更高的 ScoreObject,则在步骤2418Object(k)添加到删除列表。

在真正的托盘具有最大托盘得分的假设下,灰度级图像不可能包括 在相对小的y像素值带内重叠的两个(或更多个)不同的托盘纵梁。因 而,如果两个(或更多个)评分的候选对象具有在灰度级图像的这个小 y像素值带内重叠的相应托盘纵梁,则这些评分的候选对象除一个之外 的所有其它都可以被消除。如之前描述过的,用于纵梁2454的下部中 心2458的y像素值可以通过以下来估计:经评分的候选对象2448的预 审合格的左下角2450画基本水平的线2456(例如,±15°),并且利用第 一Ro图像计算从原点2400到那条基本水平的线2456的正交距离。因 而,通过比较为每个评分的候选对象的每个相应的中心纵梁计算的相应 的正交距离,在相同的y像素值范围内具有纵梁的那些评分的候选对象 可以被识别为在彼此垂直本地,或者简单地说“本地”。

如以上所指出的,图24D提供了具有多个评分的候选对象2448、 2466、2470、2472、2474、2486的示例图像帧,每个候选对象都由对应 的相应的纵梁来表示。对于NewObjectlist中所有评分的候选对象,最 强或最高值的候选对象,即具有最高ScoreObject值的对象,例如 Object(m)2466可以被选择来计算定义所关心的带的y坐标值。 Object(m)包括对象特征ρm2471,即从原点到Object(m)的底部托盘板 线的正交距离。利用这个值,所关心的带的上部y像素值2462估计为 在ρm-Vs,而该带的下部y像素值2464估计为在ρm+Vs,其中Vs代表被 称为垂直跨度的预定数量的像素并且可以是例如大约50个像素。其相 应的中心纵梁碰巧也在这个带内的所有评分的候选对象可以被识别为要 消除,因为它们具有比Object(m)低的ScoreObject值。

因而,在y像素值的那个带内,具有那个带内所有评分的候选对象 中最大ScoreObject的一个评分的候选对象2466被选择保留在 NewObjectlist中,而在y像素值的那个带内的所有其它评分的候选对 象都从NewObjectlist中消除。

如前面所提到的,图24C提供了可以实现为实现过程2408的过程 的附加细节,其中该过程可以基于评分的候选对象相对于彼此的y坐标 值消除评分的候选对象。图24C的过程对评分的候选对象的 NewObjectlist开始,在图24A的步骤2406之后候选对象可能已经减少, 并且产生了一个新的、可能更小的评分的候选对象的列表,称为保留对 象列表(KeepObjectlist)。评分的候选对象的两个不同列表的使用仅仅 是从评分的候选对象的列表测试和修剪评分的候选对象的途径的一个例 子;本领域普通技术人员将认识到,在不背离本发明范围的情况下,可 以使用在可编程计算机中维护列表结构的其它功能等效方法。此外,术 语“KeepObjectlist”的使用仅仅是为了清晰而在以下描述中使用,以 区分在过程2408结束时NewObjectlist中评分的候选对象的列表与在过 程2408开始时NewObjectlist中评分的候选对象的列表。在过程2408 结束时,在步骤2440,KeepObjectlist的维护指在识别出要包括的所有 评分的候选对象之后进一步修剪后的NewObjectlist。因而,对于给定 的时间帧,在那个帧中可能只有一个评分的候选对象的列表由图像分析 计算机110维护并且那个列表继续被称为NewObjectlist。

在步骤2430,该过程以KeepObjectlist是评分的候选对象的空集初 始化;随着过程2408的执行,这个列表将用在这个图像帧中继续被识 别为评分的候选对象的那些评分的候选对象填充。接下来,在步骤2432, 图像分析计算机110确定列表NewObjectlist是否为空集。首先, NewObjectlist包含在图24A的步骤2406之后来自图像帧的所有剩余的 评分的候选对象,并且因此控制转向步骤2434,以便从NewObjectlist 识别第一评分的候选对象。特别地,在步骤2434中,图像分析计算机 110识别NewObjectlist中所有候选对象中具有最大对象合成得分值 ScoreObject的候选对象,Object(m)。而且,见图24D,这个候选对象 2466具有关联的对象特征ρm2471,即从原点到Object(m)的底部托盘 板线的正交距离。这个特定的评分的候选对象添加到列表 KeepObjectlist。接下来,在步骤2436,图像分析计算机110识别 NewObjectlist所有具有其y坐标位置在特定值跨度内的位置的评分的 候选对象。

类似于关于图24B所描述的过程,评分的候选对象的位置可以按各 种不同的途径定义,但是定义评分的候选对象的位置的一种途径是识别 中心纵梁的下部中心的x-y坐标的y坐标作为对象的位置。对于任何特 定的评分的候选对象,Object(i),那些位置坐标可以被称为对(xLCi, yLCi)。利用用于NewObjectlist中每个评分的候选对象的这些相应的坐 标,图像分析计算机110在步骤2436中可以确定NewObjectlist中哪些 评分的候选对象定位成使得它们具有在值ρm2471的±Vs中的y坐标;Vs可以例如等于50像素。更特别地,Object(m)具有底部托盘板线2468, 其具有到原点2400的正交距离ρm2471和离水平线的关联角度2476。 其它每个识别出的评分的候选对象,Object(i),具有相应的位置(xLCi, yLCi),通过这个位置可以在与角度2476相同的角度画一条线,以计 算评分的候选对象是否在关于Object(m)的所关心的垂直范围内。

特别地,在图24D中,Object(1)2470可以用作一个例子。对象 2470具有(x11)的位置2481,这个位置一般性地称为(xLCi,yLCi)。线 2483可以按与角度相同的角度画,从而经过位置2481。从原点2400 到线2483的正交距离也将与正交线ρm2471共线。从原点2400到线 2483的正交距离可以被计算并称为ρcalci2463。特别地,可以根据以下 公式为Objectlist中的任何Object(i)计算相似的正交距离:

因而,图像分析计算机110可以使用NewObjectlist中每个对象 Object(i)的位置(xLCi,yLCi)来计算从那个对象的位置到原点2400的相 应的正交距离ρcalci,以便识别其相应正交距离在Object(m)的底部托盘 板线2468的±Vs内的所有其它评分的候选对象。换句话说,在步骤 2436中识别其纵梁满足以下不等式的的所有评分的候选对象:

公式14:

在步骤2438中,满足以上不等式的所有评分的候选对象,及 Object(m),都被图像分析计算机110从NewObjectlist中除去。如以上 所指出的,Object(m)即评分的候选对象2466之前被添加到列表 KeepObjectlist中。

在图24D的示例图像帧中,当Object(m)包括评分的候选对象2466 时,只有Object(2)2472满足公式14的不等式。当图24C的过程2408 执行时,在步骤2438中,Object(2)2472从NewObjectlist中消除。

这些步骤重复,直到图像分析计算机110在步骤2432中确定 NewObjectlist为空。在步骤2440,在NewObjectlist为空之后,定义 KeepObjectlist作为更新后的NewObjectlist,这个列表可以包括过程 2408以其开始的先前NewObjectlist的修剪后的版本。NewObjectlist的 这个版本在分析ExistingObjectlist的当前版本时使用,如以下详细描述 的。作为这种分析的结果,ExistingObjectlist基于NewObjectlist中的 信息来更新。一旦ExistingObjectlist被更新,为其创建下一个 NewObjectlist的下一个图像帧就可用。因而,NewObjectlist在概念上 对每个图像帧是相同的,但是NewObjectlist中的实际信息和值将对每 个获得到的图像帧不同。图25绘出了用于通过不同灰度级图像帧跟踪 评分的候选对象,以便进一步精炼托盘结构位于图像帧中什么地方的确 定的示例性过程的流程图。当车辆10的叉架装置40移动时,由叉架装 置40上成像照相机130捕捉到的图像中的评分的候选对象的位置也看 起来在不同的图像帧中移动。来自一系列捕捉到的图像帧的这个信息帮 助确定哪些评分的候选对象对应于实际的托盘结构。

在图25中,步骤2502代表图像分析计算机110维护 ExistingObjectlist,如以上所讨论的,该列表包括来自一个或多个先前 图像帧中用于当前被跟踪的现有评分的候选对象的记录。评分的候选对 象分配给被跟踪对象的单独线程,每个线程具有唯一的识别标记, TagObject。如所提到的,ExistingObjectlist中每个评分的候选对象的一个 属性是该对象相应的位置。如前面一样,评分的候选对象的位置可以指 用于该评分的候选对象的中心纵梁的下部中心的坐标。例如,图26A中 示出的对象,Object(r),2602具有通过x-y坐标(xr,yr)来指出的位置。 图26A的这些评分的候选对象2602、2604是根据上述技术识别并打分 的评分的候选对象。每个评分的候选对象都在ExistingObjectlist中维护。

被跟踪对象的每个线程在一个预测和更新循环上操作,每个线程具 有其自己的预测器。如以下详细描述的,利用卡尔曼滤波器实现这种跟 踪是一种方法;但是,本领域普通技术人员将认识到,也存在实现这种 跟踪的其它已知技术。给定叉子高度的变化,作出对象在下一个图像帧 中移动到什么地方的预测,观察实际对象的位置,如果满足适当的条件, 则这些新的观察与现有对象匹配,并且最终对象位置预测器或者利用新 的观察更新或者该对象线程被终止并删除。

如前所述,成像照相机130可以与车辆10的叉架装置40耦合。因 为叉架装置40的移动是以受控制的方式发生的,所以在两个时刻之间 发生的成像照相机130的结果移位可以计算。例如,知道叉架装置40 移动的速度允许容易地计算图像帧之间的照相机移位。作为替代,可以 提供耦合在叉架装置40和第三焊件36之间的编码器和电线或电缆组件, 用于响应叉架装置40相对于第三焊件36的移动而向车辆计算机50生 成脉冲,从而允许车辆计算机50确定成像照相机130的线性移位。因 为被成像照相机130捕捉的两个相继的图像帧将从不同的角度拍摄,所 以在不同的图像帧中评分的候选对象将看起来在不同的位置。这两个相 继的图像帧可以更容易地被称为“前一个图像帧”和“下一个图像帧”。 基于在步骤2503中车辆的叉架装置40的高度在前一个图像帧和下一个 图像帧之间变化的量,图像分析计算机110可以在步骤2504中分别预 测来自前一个图像帧的每个评分的候选对象应当位于从成像照相机130 新位置捕捉到的下一个图像帧中什么地方。图像分析计算机110还将在 下一个图像帧中为来自前一个图像帧的每个评分的候选对象定义包围每 个预测出的位置的预测窗口。预测窗口可以是各种不同尺寸,但是本文 的实施例考虑具有用于较大图像尺寸的大约50个像素和用于较小图像 尺寸的25个像素的半径的预测圆形。本领域普通技术人员将认识到, 在不背离本发明范围的情况下,预测窗口的其它尺寸和形状也可以选择。

例如,参考图26A,在用于前一图像帧的ExistingObjectlist中有三 个候选对象,Object(r)2602、Object(s)2604和Object(t)2606。这些对 象可以被称为“现有对象”或“现有评分的候选对象”。它们具有代表 它们在拍摄或获得前一图像帧时的位置的相应位置(xr,yr)、(xs,ys)和 (xt,yt)。当捕捉下一个图像帧时,如图26B中所示出的,下一个图像 帧的照相机放离前一图像帧的照相机放置有已知的距离,可以预测图 26B下一图像帧中相应的位置(x’r,y’r)2602’、(x’s,y’s)2604’和(x’t, y’t)2606’。另外,在图26B中,预测窗口2601定义中心在Object(r)的 预测位置2602’周围的圆形区域,预测窗口2603定义中心在Object(s)的 预测位置2604’周围的圆形区域,而预测窗口2605定义中心在Object(t) 的预测位置2606’周围的圆形区域。

图像分析计算机110在步骤2505中在新的照相机位置获得下一个 图像帧,然后在步骤2506中确定下一个图像帧中评分的候选对象及其 相应的位置。因而,与在步骤2505中获得下一个图像帧同时,图像分 析计算机110还可以在步骤2503中获得前一图像帧和下一图像帧之间 车辆10的叉架装置40的高度变化的量。如以上所提到的,下一个图像 帧中的对象可以被称为“新对象”或“新的评分的候选对象”。如图 26B中所示出的,用于下一个图像帧的NewObjectlist包括五个新对象, Object(a)2610、Object(b)2612、Object(c)2614、Object(d)2616和 Object(e)2618。这些评分的候选对象被认为是来自下一个图像帧的新评 分的候选对象集合。利用这组新评分的候选对象的新确定的位置,图像 分析计算机110进一步在步骤2510中确定是否有任何位于每个预测窗 口2601、2603、2605中的新评分的候选对象。

图像分析计算机可以识别下一个图像帧中包含一个或多个评分的候 选对象的预测窗口。在这种情况下,图像分析计算机110在步骤2510 中试验性地识别来自前一图像帧的现有评分的候选对象在下一图像帧中 具有匹配的新评分的候选对象。如果只有一个新的评分的候选对象在下 一图像帧中的预测窗口内,则那个新的评分的候选对象被试验性地认为 与来自前一图像帧的(用于计算预测窗口的)现有评分的候选对象匹配。 但是,如果有两个或多个新的评分的候选对象在下一图像帧中的预测窗 口内,则要执行进一步的分析来只选择这些评分的候选对象中的一个。 当同一个新对象可能与多于一个现有的对象匹配时,所有匹配都被认为 是试验性的并且在步骤2512中求解。

图26B的预测窗口2601是位于预测窗口内的两个或更多个新的评 分的候选对象的例子。特别地,用于下一图像帧的NewObjectlist包括 Object(a)2610和Object(b)2612,这两个候选对象都在对应于来自第一 图像帧的Object(r)的预测位置的预测窗口2601内。这些候选对象中每 一个都具有相应合成对象得分ScoreObject,该得分在步骤2512中由图像 分析计算机用于确定Object(a)还是Object(b)与Object(r)匹配。在所有 匹配通过步骤2512求解出来之前,所有现有的对象都不被认为是真正 匹配。

特别地,评估绝对值|ScoreObject(r)–ScoreObject(a)|和|ScoreObject(r)– ScoreObject(b)|,使得具有最小绝对值的新对象(即,与Object(r)相比较而 言具有最接近的ScoreObject值的新对象)被认为试验性地匹配预测窗口 2601中新的评分的候选对象。对于特定的现有对象,绝对得分差在所有 试验性匹配的对象上最小化。换句话说,对于特定的现有评分的候选对 象,在其试验性匹配列表中新的评分的候选对象将被选作最小化绝对得 分差的现有评分的候选对象的最终匹配。

例如,在图26B的图像帧中,新的评分的候选对象Object(b)可以 试验性地与Object(r)和Object(s)匹配,因为它同时位于预测圆形2601 和2603中。因而,在步骤2512中,图像分析计算机110还评估绝对值 |ScoreObject(s)–ScoreObject(b)|和|ScoreObject(r)–ScoreObject(b)|,最小的绝对值揭 示哪个现有的对象与新对象Object(b)匹配。当一个新对象与一个现有 的对象匹配时,用于ExistingObjectlist中那个现有对象的记录将包括更 新后的信息,诸如新对象的新位置、更新后的预测因子,及其匹配计数 (MatchCount)值(预测因子和MatchCount值在下面更详细地描述)。

如果用于来自现有对象的评分的候选对象的相应预测窗口不包括任 何新的评分的候选对象,则该现有评分的候选对象有可能是错误识别出 的评分的候选对象并且可以被丢弃。但是,因为在灰度级图像获得过程 中引入的照明、阴影或其它假象,实际的托盘对象在特定的图像帧中有 可能不可辨别,虽然它在其它图像帧中可以辨别。因而,现有对象的单 个实例不与新对象匹配并不会导致现有对象被识别为要丢弃的对象。值 即MatchCount可以作为针对ExistingObjectlist中的现有对象存储的其 中一个属性而引入。

如所提到的,ExistingObjectlist的当前版本包括评分的候选对象。 这些评分的候选对象中至少一些也在ExistingObjectlist的前一版本中。 ExistingObjectlist的那个前一版本具有其自己对应的NewObjectlist,其 中利用该NewObjectlist对ExistingObjectlist进行分析。基于那个前面 的分析,ExistingObjectlist的前一版本基于关于来自其对应的 NewObjectlist的评分的候选对象的信息而被更新。ExistingObjectlist的 前一版本的更新导致ExistingObjectlist的当前版本并且 ExistingObjectlist的这个当前版本现在关于其自己对应的下一图像帧中 评分的候选对象的NewObjectlist进行分析。

在这个目前的分析中,用于ExistingObjectlist的当前版本中现有对 象的MatchCount值提供了那个对象是否未能在与ExistingObjectlist的 前一版本比较的旧NewObjectlist中具有匹配的新对象的指示。例如, 在当前分析过程中,如果MatchCount目前等于“1”,则指示在 ExistingObjectlist的前一版本关于其自己对应的NewObjectlist进行分 析时这个现有评分的候选对象未能在前面的分析中具有匹配。

当在步骤2512中一个现有对象最终被求解为匹配一个新对象时, 用于ExistingObjectlist中那个现有对象的MatchCount在步骤2514中 被图像分析计算机110设置成预定的值,诸如“2”。

在步骤2516,图像分析计算机110识别不与其中一个新对象匹配的 现有评分的候选对象(如果有的话)。然后,图像分析计算机110在步 骤2518中评估用于那个现有对象的相应的MatchCount,以确定它是否 等于“0”。如果是,则那个现有对象不再被认为是在后续图像帧中要被 跟踪的评分的候选对象,并且在步骤2520中它被丢弃。如果用于未匹 配的现有对象的MatchCount值不等于“0”,则现有对象不被丢弃,而 是在步骤2522中其MatchCount值递减。在图26B中,没有位于用于 Object(t)的预测窗口2605中的新对象。因而,在这个例子中,现有评 分的候选Object(t)将不在NewObjectlist中具有匹配的新对象。

如以下将更详细描述的,评分的候选对象过去的位置以及计算和匹 配预测窗口的准确度在精炼计算后续预测窗口的途径时会是有用的。因 而,在步骤2524中,图像分析计算机110更新其用来计算在用于每个 评分的候选对象的后续图像帧中相应预测窗口的因子。

图像分析计算机110在步骤2526中识别下一图像帧中不对应于来 自前面图像帧的任何现有评分的候选对象的新评分的候选对象。例如, 在图26B中,有一个新的评分的候选对象Object(c)2614位于预测窗口 2601、2603、2605和2607的外面。因而,这是一个在 ExistingObjectlist中没有对应现有评分的候选对象的新评分的候选对象。 在步骤2526,图像分析计算机110把这个新的候选对象添加到 ExistingObjectlist并且把其MatchCount值设置成等于“2”。

如以上所提到的,Object(c)2614是没有匹配的现有对象的新对象, 因此Object(c)添加到更新后的ExistingObjectlist。还有不具有匹配的现 有对象的新对象的另一种可能性。在图26A中,有现有的Object(u) 2608。在图26B中,有预测出的位置2608’和预测窗口2607。在预测窗 口2607中有两个新的评分的候选对象,Object(d)2616和Object(e) 2618。如以上所提到的,在步骤2512中,Object(u)、Object(e)和 Object(d)相应合成对象得分用于求解匹配的对象对。例如,如果 Object(e)2618被确定为是Object(u)2608的匹配,则Object(d)2616不 匹配ExistingObjectlist中任何现有的对象。因而,Object(d)2616作为 要开始跟踪的新的评分的候选对象添加到更新后的ExistingObjectlist。

利用更新后的ExistingObjectlist,图像分析计算机110在步骤2528 中可以向车辆计算机50提供更新后的对象信息,使得现有评分的候选 对象的图形显示可以被更新。

然后,通过对每次迭代返回到步骤2504,图25的过程对第三个图 像帧、第四个图像帧等等自己重复。

与修剪和预测评分的候选对象关联的值可以根据图像尺寸来调整。 例如,以上所提供的值对于尺寸为480x752像素的图像可能是适合的。 但是,对于尺寸为240x376像素的图像,这些值可以调整,使得每个值 都大致为以上提供的示例值的一半。例如,Vs可以是25像素而不是50 像素,预测窗口(例如,图26B的2607)可以具有大约25像素而不是 50像素的半径,并且用于定义在附近的对象的值(见图24A的步骤 2406)可以是25像素而不是50像素。

图27绘出了物理世界中的一个托盘2702,该托盘具有代表托盘 2702的位置2704的下部中点。托盘2702的位置2704依赖于什么参考 帧,或3D坐标系统,用于定义托盘位置2704的坐标。如前面所提到的, 本发明的一方面涉及检测对在托盘的一个或多个开口放置车辆10的叉 子42A、42B有利的信息。因而,用于定义托盘2702位置的世界3D坐 标系统(在本文中也称为“世界坐标系统”)可以具有位于车辆10上或 者其附近的固定位置的原点2706,诸如当叉子42A、42B处于下部起始 位置时基本上与叉子42A、42B具有相同Y位置的桅杆组件上的固定位 置。在这种实施例中,世界坐标原点2706是固定的,使得叉架装置40 和叉子42A、42B相对于固定的世界坐标原点移动。如果世界坐标系统 定向为使得Z方向与叉子42A、42B平行并且Y方向与叉子42A、42B 上下的垂直移动方向平行,则世界坐标原点2706可以定义成使得可以 确定托盘位置2704的坐标(Xw,Yw,Zw)。特别地,这些坐标基本上代表 从世界坐标原点2706到托盘2702下部中点(即,位置2704)的向量。 世界3D坐标系统还可以在车辆10前面在地板上和叉子42A、42B下面 定位。在这种实施例中,世界3D坐标系统将仍然关于车辆10固定并且 与车辆10一起移动。X和Z方向的卡车移动可以经卡车测距法来说明。

物理世界中由成像照相机130成像的场景也可以参考成像照相机 130的位置2708来指出。这是有帮助的,因为,当物理对象的位置被看 作相对于照相机位置2708时,图像中像素位置和物理对象的位置之间 的变换操作可以被简化。照相机坐标系统也是3D坐标系统,具有从原 点延伸的三个相互正交的方向轴。照相机坐标系统的方向向量的朝向和 照相机坐标系统的原点的位置可以与世界坐标系统的那些位置不同。习 惯上,已知从一个3D坐标系统到另一个的变换可以利用代表两个坐标 系统之间差异的旋转矩阵和平移向量来实现。如果(Xc,Yc,Zc)是托盘 位置2704关于照相机坐标系统的坐标,则

公式15A:XcYcZc=[Rcam]XwYwZw+tcxtcytcz

坐标(Xw,Yw,Zw)和坐标(Xc,Yc,Zc)都识别物理世界中同一个点 2704的位置。一组坐标(Xw,Yw,Zw)是参考世界坐标原点2706的,而 另一组坐标(Xc,Yc,Zc)是参考照相机位置2708的。在公式15A中, [Rcam]是两个坐标系统的轴之间的3x3旋转矩阵,而最右边的项是平移向 量,Tcam=[tcx,tcy,tcz]T,代表世界坐标系统的原点2706相对于照相机坐 标系统的原点2708之间的平移。如果成像照相机130附连到叉架装置 40,则当包括叉子42A和42B的叉架装置40上下移动时,成像照相机 130相对于世界坐标原点2706的平移,tcy,将变化。如图27A中所示, 这个平移值,tcy,可以具有一个代表叉子42A和42B相对于固定的世 界坐标原点2706沿桅杆组件30的移动量的分量ty,并且可以具有代表 成像照相机130相对于叉子42A和42B之间的固定垂直偏移量的第二 个分量tybias。当叉子42A和42B移动时,ty的值可以变化;但是tybias的 值将保持相同。如前面所提到的,成像照相机可以固定到叉架装置,使 得它在叉子42A和42B下面的位置中(即,tybias<0),但是当成像照相 机130向上移动时,照相机坐标系统原点位置2708的Y坐标可以位于 世界坐标系统原点2706之上(即,(ty+tybias)>0),如图27A中所示。 而且,如以下所讨论的还可以有水平偏移量值txbias

图27A绘出了其中照相机坐标系统把其轴关于X轴2707旋转角度 θe2701的实施例。因而,照相机坐标系统的Z轴被称为Zθe2703,以便 与世界坐标原点的Z轴区分,并且照相机坐标系统的Y轴被称为Yθe2709,以便与世界坐标原点的Y轴2711区分。角度θe2701的幅值可以 是例如大约2.2263°;并且,从照相机坐标系统的参考点开始,世界坐 标系统的Z轴向下倾斜一个大约为-2.2263°的角度。在这种实施例中, 公式15A中托盘位置2704的坐标(Xc,Yc,Zc)将关于照相机坐标系统 轴(Xθe,Yθe,Zθe)来定义。

图27B绘出了理想的针孔照相机模型的几何结构。用于理想的针孔 照相机的模型涉及点(Xc,Yc,Zc)2704通过照相机位置2708投影到图 像平面2712上,该平面在Zθe方向中离照相机位置2708有距离f。存在 一个照相机中心2714,这是照相机位置2708在Zθe方向中到图像平面 2712上的投影。在所说明的实施例中,距离f是等于Zθe方向中照相机 焦距的固定距离。

因而,图27B的几何结构为众所周知的针孔照相机投影模型提供了 用于像素图像坐标的基础:

xcol=fxXcZc+x0

yrow=fyYcZc+y0

其中:

(Xc,Yc,Zc)是照相机坐标系统中托盘位置2704的三维坐标;

(xcol,yrow)是图像平面2712上托盘位置2704根据针孔照相机模型投 影的像素位置坐标;

(x0,y0)是照相机中心2714并且是图像平面2712上照相机中心(或 者照相机坐标系统原点)2708根据针孔照相机模型投影的像素位置坐标;

fx是以x方向,或水平,像素相关的单位表示的焦距f;及

fy是以y方向,或垂直,像素相关单位表示的焦距f。

以上公式可以根据下式写成齐次坐标:

公式16:λxcolyrow1=fx0x00fyy0001XcYcZc其中λ=Zc

来自先前的公式15也可以写成:

公式17A:XcYcZc=tcx[Rcam]tcytczXwYwZw1

利用公式17A,公式16的投影变换可以写成:

公式18:λxcolyrow1=fx0x00fyy0001tcx[Rcam]tcytczXwYwZw1

总的来说,公式18可以写成:

公式19A:λxcolyrow1=[k]Rcam|TcamXwYwZw1其中[K]=fx0x00fyy0001

3x4矩阵[Rcam  |Tcam]常常被称为外在照相机矩阵。矩阵[K]可以被称 为用于成像照相机130的内在照相机矩阵。通常,用于矩阵[K]的值可 以利用照相机后方交会(resectioning)过程确定,如本领域中已知的。 一般而言,内在照相机矩阵具有形式:

[K]=fxγx00fyy0001

其中:

(x0,y0)是照相机中心2714并且是图像平面2712上照相机中心(或 者照相机坐标系统原点)2708根据针孔照相机模型投影的像素位置坐标;

fx是以x方向,或水平,像素相关的单位表示的焦距f;及

fy是以y方向,或垂直,像素相关单位表示的焦距f;及

γ代表x和y轴之间的歪斜因子,并且常常是“0”。

对于480x752像素的图像,用于内在照相机矩阵的示例值可以是:

fx=783.1441,fy=784.4520,γ=0,x0=237.8432,y0=380.7313

对于240x276像素的图像,用于内在照相机矩阵的示例值可以是:

fx=458.333344,fy=458.333344,γ=0,x0=142.282608,y0=171.300568

依靠缩放因子λ,公式19A关连托盘位置2704与灰度级图像像素 位置(xcol,yrow)。这暗示公式19A的左侧和右侧是共线的向量,这导致 零叉积。叉积公式为:

公式20A:xcolyrow1×[K]Rcam|TcamXwYwZw1=0

旋转矩阵[Rcam]和平移向量Tcam的谨慎选择可以简化公式20A中所 涉及的计算。特别地,如果世界坐标系统轴和照相机坐标系统轴彼此相 互对准,则旋转矩阵是简单的3x3单位矩阵。但是,照相机通常可以向 上旋转一个仰角,θe,如图27A中所示,使得,相对于照相机的Zθe轴, 世界坐标Z轴向下倾斜角度-θe。轴中的这种差异导致一个可能的旋转 矩阵:

公式21:[Rcam1]=1000cosθe-sin0sinθecosθeθe

此外,照相机位置2708可以选择成使得其相对于世界坐标原点2706被 平移向量,如以上所提到的tcxtcytcz,所平移。在一种示例性实施例中,成 像照相机130以这样一种方式附连到车辆框架,使得它具有与世界坐标 原点2706相同的Z坐标值(即,tcz=0)但是具有离世界坐标原点2706 偏移一个偏置值(即,tcx=txbias)的X坐标。如以上所提到的,当叉架 装置40上下移动时,照相机130相对于世界坐标原点2706的平移还在 Y方向改变。因此,照相机平移向量可以实现为:

tcxtcytcz=txbiasty+tybias0

给定:

[k]=fx0x00fyy0001,[Rcam1|Tcam]=100txbias0cosθe-sinθe(ty+tybias)0sinθecosθe0

公式20A简化为:

xcolyrow1×fxx0sinθex0cosθefxtxbias0fycosθe+y0sinθe-fysinθe+y0cosθefy(ty+tybias)0sinθecosθe0XwYwZw1=0

该公式简化成公式22:

xcolyrow1×Xwfx+Ywx0sinθe+Zwx0cosθe+fx(txbias)Yw(fycosθe+y0sinθe)+Zw(-fysinθe+y0cosθe)+fy(ty+tybias)Ywsinθe+Zwcosθe=0

计算叉积的前两个元素提供了统称为公式23的两个线性公式:

-Xwfx-Ywx0sinθe-Zwx0cosθe+xcol(Ywsinθe+Zwcosθe)-fx(txbias)=0 yrow(Ywsinθe+Zwcosθe)-Yw(fycosθe+y0sinθe)-Zw(-fysinθe+y0cosθe)-fy(ty+tybias)=0

以矩阵的形式,以上两个公式可以写成公式24A:

-fx(xcol-x0)sinθe(xcol-x0)cosθe0(yrow-y0)sinθe-fycosθe(yrow-y0)cosθe+fysinθeXwYwZw=fx(txbias)fy(ty+tybias)

因而,对于在成像照相机130位于相对于世界坐标原点2706的位 置(txbias,(ty+tybias))时获得到的特定灰度级图像,有一个对应于托盘2702 的位置(Xw,Yw,Zw)2704的图像像素位置(xcol,yrow)。因而,具有图像 像素位置(xcol,yrow)的评分的候选对象(见,例如,图24D的对象 2448和位置2458)也在物理世界中具有关联的位置(Xw,Yw,Zw)2704。 因而,图像空间中这个评分的候选对象具有与其关联的高度Yw,这是 对应于该评分的候选对象的托盘在物理世界中的高度。高度Yw可以简 单地被称为“评分的候选对象的高度”,作为一种陈述图像空间中处于 位置(xcol,yrow)的评分的候选对象在物理世界中具有处于位置2704的 对应托盘的关联高度Yw的缩写方式。如以下所讨论的,图像像素位置 (xcol,yrow)对应于图像空间中测出的值。如果成像照相机130改变其位 置并且获得到第二灰度级图像,则公式24A将对(Xw,Yw,Zw)保持为 真,但是对于ty和(xcol,yrow)将是不同的值。因而,对于每个获得到的 不同图像帧,都有用于ty和(xcol,yrow)的相应的值,因此公式24A可以 更清楚地写成:

公式25A:

-fx(xcoln-x0)sinθe(xcoln-x0)cosθe0(yrown-y0)sinθe-fycosθe(yrown-y0)cosθe+fysinθeXwYwZw=fxtxbiasfy(tyn+tybias)

其中n是表示一系列获得到的图像帧中图像帧的索引值,txbias是成 像照相机130离世界坐标原点2706的水平平移,而是对应于当 获得图像帧n时成像照相机130离世界坐标原点2706的垂直平移。图 像像素位置可以被称为图像空间中托盘位置2704的一个“观 察”。公式25A中的公式对可以对同一托盘位置2704的多次观察收集到 一起,以提供一系列公式,如下:

公式26A:

-fx(xcol1-x0)sinθe(xcol1-x0)cosθe0(yrow1-y0)sinθe-fycosθe(yrow1-y0)cosθe+fysinθe-fx(xcol2-x0)sinθe(xcol2-x0)cosθe0(yrow2-y0)sinθe-fycosθe(yrow2-y0)cosθe+fysinθe-fx(xcol3-x0)sinθe(xcol3-x0)cosθe0(yrow3-y0)sinθe-fycosθe(yrow3-y0)cosθe+fysinθe·········XwYwZw=fxtxbiasfy(ty1+tybias)fxtxbiasfy(ty2+tybias)fxtxbiasfy(ty3+tybias)···

这个公式可以概念性地写成公式27:

[A]XwYwZw=[B],该公式可以被操纵以形成:

公式28A:XwYwZw=([A]T[A])-1[A]T[B]其中

[A]=-fx(xcol1-x0)sinθe(xcol1-x0)cosθe0(yrow1-y0)sinθe-fycosθe(yrow1-y0)cosθe+fysinθe-fx(xcol2-x0)sinθe(xcol2-x0)cosθe0(yrow2-y0)sinθe-fycosθe(yrow2-y0)cosθe+fysinθe-fx(xcol3-x0)sinθe(xcol3-x0)cosθe0(yrow3-y0)sinθe-fycosθe(yrow3-y0)cosθe+fysinθe·········

并且[B=]fxtxbiasfy(ty1+tybias)fxtxbiasfy(ty2+tybias)fxtxbiasfy(ty3+tybias)···

一旦有对托盘位置2704的两个或更多个观察,公式28A就提供比 未知更多的公式,并且可以利用最小二乘法来求解,以便关于世界坐标 原点2706估计托盘位置(Xw,Yw,Zw)。此外,一直等到在两个观察之间 存在至少某个最小距离也是有益的。例如,优选的是在估计托盘位置 (Xw,Yw,Zw)之前,存在至少最小叉子差异(即,)。

利用图27A的配置开发出的公式21的旋转矩阵只考虑照相 机坐标系统相对于世界坐标系统的X轴的旋转(例如,角度θe2701)。 但是,用于照相机的旋转矩阵可以被一般化,以考虑照相机坐标系统相 对于世界坐标系统所有三个轴的旋转,如图27E中所示。在图27E中, 照相机坐标系统的轴(2707’、2711’和2705’)相对于世界坐标系统的轴 (2707、2711、2705)示出。特别地,θx2762可以代表照相机坐标系统 相对于X轴2707的旋转(被称为仰角)、θy2764可以代表照相机坐标 系统相对于Y轴2711的旋转(被称为螺旋角),而θz2766可以代表照 相机坐标系统相对于Z轴2705的旋转(被称为偏转角)。因此,照相机 坐标系统将导致其轴(2707’、2711’和2705’)关于世界坐标系统的轴 (2707、2711、2705)旋转代表个别旋转角θx2762、θy2764和θz2766 的组合的量。旋转的每个角度为照相机提供整个旋转矩阵的一个分量。

公式29A:[Rcamx]=1000cosθx-sinθx0sinθxcosθx

公式29B:[Rcamy]=cosθy0sinθy010-sinθy0cosθy

公式29C:[Rcamz]=cosθz-sinθz0sinθzcosθz0001

更一般化的,或完全的,旋转矩阵是这三个分量矩阵相乘,以提供 公式29D:

[Rcamfull]=cosθycosθz-sinθzcosθysinθysinθxsinθycosθz+cosθxsinθz-sinθxsinθysinθz+cosθxcosθz-sinθxcosθy-sinθycosθxcosθz+sinθxsinθzcosθxsinθysinθz+sinθxcosθzcosθxcosθy

但是,不是完全的旋转矩阵,本发明的各方面考虑具有关于x轴的 一个旋转自由度和关于z轴的另一个旋转自由度的旋转矩阵。如上所述, 关于x轴的旋转角度通常被称为仰角θe。关于z轴的旋转角度可以被称 为偏转角并且由表示。这个特定的示例旋转矩阵的三个分量由以下 公式提供:

公式30A:[Rcamx]=1000cosθe-sinθe0sinθecosθe

公式30B:[Rcamy]=100010001

公式30C:

把这三个分量矩阵相乘到一起提供了由公式30D提供的示例性旋转 矩阵:

使用这个旋转矩阵(代替公式21的矩阵)将产生与公式24A的那 些相似的一对线性公式。特别地,这两个线性公式由公式24B提供:

并且可以对同一托盘位置2704的多个观察收集到一起,以提供可以按 类似于公式28A的方式为XwYwZw求解的一系列公式。

为了简化,公式21、29D和30D的不同旋转矩阵可以概念化为式30E,其中:

[Rcam]=r00r01r02r10r11r12r20r21r22

把公式30E的记号替换到公式20A中并且假设[Tcam]=txbias(tyn+tybias)0,与公式25A的那些类似的一对线性公式可以为任何旋转矩阵[Rcam]确定。 这对线性公式可以求解托盘位置(Xw,Yw,Zw)并且由公式30F给出:

anbncndnenfnXwYwZw=fx(txbias)fy(tyn+tybias)

其中:

an=xcolnr20-fxr00-x0r20

bn=xcolnr21-fxr01-x0r21

cn=xcolnr22-fxr02-x0r22

dn=yrownr20-fyr10-y0r20

en=yrownr21-fyf11-y0r21

fn=yrownr22-fyr12-y0y22

类似于前面,托盘位置的多个观察可以收集并用于按最小二乘法方 式求解托盘位置(Xw,Yw,Zw)。因而,利用这种记号,与公式28A类似 的公式可以根据下式计算:

公式31A:XwYwZw=([A]T[A])-1[A]T[B],其中:

[A]=a1b1c1d1e1f1a2b2c2d2e2f2a3b3c3d3e3f3·········并且[B]=fxtxbiasfy(ty1+tybias)fxtxbiasfy(ty2+tybias)txtxbiasfy(ty3+tybias)···

在以上公式中代表成像照相机轴关于X轴的旋转的仰角,θe,(或 者在更一般的完全旋转矩阵中是角度θx)可以包括对整个角度起作用的 多于一个分量。例如,仰角θe可以包括基于成像照相机130安装在叉架 装置40上的角度对应于固定旋转角度θec的第一分量以及对应于车辆叉 子42A和42B可以经倾斜活塞/汽缸单元44D相对于支架支撑结构44A 倾斜的角度θef的第二分量。因而,在以上的公式中,θe=(θecef)。

叉子仰角θef对整体仰角θe的贡献可以通过与叉架支撑结构44A和叉 架框架44B中一个或二者关联的传统倾斜角传感器(未示出)来测量。 这种传统的倾斜角传感器可以具有大约0.001度的分辨率并且把叉子 42A、42B的倾斜角提供给车辆计算机50,计算机50可以把这种信息 传送给图像分析计算机110。照相机仰角θec对整体仰角θe的贡献可以由 外在的校准例程来确定,如以下详细解释的。

如果角度θe的两个分量(即,θec和θef)都是常量值,则对以上任一 公式确定和使用仰角θe是相当直接的。在某些实施例中,成像照相机 130安装在叉架装置40上,使得其仰角θec在图像帧之间不变。但是,由 于叉子的倾斜,θef,仰角分量在图像帧之间可以改变。在这些条件下, 以上讨论的旋转矩阵可以被操纵成考虑θef的潜在变化性。

回过头来参考公式21,一个示例旋转矩阵由下式提供:

[Rcam1]=1000cosθe-sinθe0sinθecosθe

其中,如所提到的,θe=(θecef)。可根据下式以构造只说明照相机角度 θec的贡献的中间旋转矩阵:

[Rcam1]=1000cosθec-sinθec0sinθeccosθec

利用这个中间旋转矩阵,中间外在照相机矩阵可以写成:

[Rcam1|Tcam]=100txbias0cosθec-sinθec(ty+tybias)0sinθeccosθec0

修改这个中间外在照相机矩阵的一种途径是用只考虑叉子倾斜角θef的贡 献的旋转矩阵后乘(post-multiply)。为了执行这种相乘,典型的3x3旋 转矩阵可以根据下式扩展成4x4矩阵:

10000cosθef-sinθef00sinθefcosθef00001

然后执行如上所述的后乘:

[Rcam1|Tcam]×10000cosθef-sinθef00sinθefcosθef00001

结果产生公式31B:

100txbias0cosθeccosθef-sinθecsinθef-cosθecsinθef-sinθeccosθef(ty+tybias)0sinθeccosθef+cosθecsinθef-sinθecsinθef+cosθeccosθf0

利用两个几何恒恒等式(geometrical identity):

cos(a+b)=cos(a)cos(b)-sin(a)sin(b)

sin(a+b)=sin(a)cos(b)+cos(a)sin(b)

公式31B可以简化为:

100txbias0cos(θec+θef)-sin(θec+θef)(ty+tybias)0sin(θec+θef)cos(θec+θef)0

该公式可以进一步简化为:

100txbias0cosθe-sinθe(ty+tybias)0sinθecosθe0,这可以简单地是

一般而言,这种技术可以与以上讨论的任何外在照相机矩阵一起使用, 使得利用基于θe的旋转矩阵(例如,公式21、29D、30D或30E)形成 的任何外在照相机矩阵可以利用基于θec的中间旋转矩阵然后用基于θef的 旋转矩阵后乘从相应的中间外在照相机矩阵构造。

如前面所提到的,叉子42A和42B倾斜的量(即,θef)可以在所 获得的每个图像帧之间变化。因而,仰角θe(或者更一般地说是θx))也 会在图像帧之间变化。因此,公式25A和26A可以被修改,以考虑仰 角θe的变化性,如下所示:

公式25B:

-fx(xcoln-x0)sinθen(xcoln-x0)cosθen0(yrown-y0)sinθen-fycosθen(yrown-y0)cosθen+fysinθenXwYwZw=fxtxbiasfy(tyn+tybias)

公式26B:

-fx(xcol1-x0)sinθe1(xcol1-x0)cosθe10(yrow1-y0)sinθe1-fycosθe1(yrow1-y0)cosθe1+fysinθe1-fx(xcol2-x0)sinθ2(xcol2-x0)cosθe20(yrow2-y0)sinθe2-fycosθe2(yrow2-y0)cosθe2+fysinθe2-fx(xcol3-x0)sinθe3(xcol3-x0)cosθe30(yrow3-y0)sinθe3-fycosθe3(yrow3-y0)cosθe3+fysinθe3·········XwYwZw=fxtxbiasfy(ty1+tybias)fxtxbiasfy(ty2+tybias)fxtxbiasfy(ty3+tybias)···

但是,即使具有会在图像帧之间发生的θe的变化性,用于求解托盘 位置(Xw,Yw,Zw)的技术仍然保持相同。但是,对于每个图像帧,图像 分析计算机110现在除和之外还可以存储因此,公式 25B和26B可以重新整理,以提供公式28B:YwYwZw=([A]T[A])-1[A]T[B],其中:

[A]=-fx(xcol1-x0)sinθe1(xcol1-x0)cosθe10(yrow1-y0)sinθe1-fycosθe1(yrow1-y0)cosθe1+fysinθe1-fx(xcol2-x0)sinθe2(xcol2-x0)cosθe20(yrow2-y0)sinθe2-fycosθe2(yrow2-y0)cosθe2+fysinθe2-fx(xcol3-x0)sinθe3(xcol3-x0)cosθe30(yrow3-y0)sinθe3-fycosθe3(yrow3-y0)cosθe+fysinθe3·········

并且[B]=fxtxbiasfy(ty1+tybias)fxtxbiasfy(ty2+tybias)fxtxbiasfy(ty3+tybias)···

在以上的例子中,一个假设是叉子的移动ty基本上在世界坐标系统 的Y轴2711的方向中发生。但是,桅杆组件30可以不必与世界坐标系 统的Y轴2711的方向对准。如图27F中所示,向量2775可以代表桅 杆组件30关于世界坐标系统的方向。

因而,在图27F中,在世界系统坐标中相对于世界坐标原点2706 存在沿着向量方向2775、代表叉子42A和42B的位置2770的向量 2776。叉子42A和42B的位置2770可以被看作是叉子坐标系统的 原点,它与三个正交轴2707A、2711A和2705A一起定义叉子坐标系统。 在叉子坐标系统中,向量2774代表叉子系统坐标中相对于叉子位置 2770的托盘的位置2704。如前面所讨论的,存在定义照相机坐标原点 的照相机位置2708,该照相机坐标原点与三个正交轴2707B、2711B和 2705B一起定义照相机坐标系统。因此,存在代表在照相机系统坐标中 相对于照相机位置2708的托盘位置2704的向量2778。

照相机坐标系统的轴2707B、2711B和2705B可以相对于叉子坐标 系统的轴2707A、2711A和2705A旋转,并且还可以相对于叉子坐标系 统平移。因而,叉子坐标系统中的托盘位置2704可以根据公式15B变 换成照相机坐标系统中的位置:

XcYcZc=[Rcam-forks]XfYfZf+tcfxbiastcfybiastcfzbias

其中:

Vcam=XcYcZc是照相机系统坐标中托盘位置2704的坐标;

[Rcam-forks]=rcf00rcf01rcf02rcf10rcf11rcf12rcf20rcf21rcf22是代表照相机坐标系统相对于叉子坐标 系统的旋转的旋转矩阵;

Vforks=XfYfZf是叉子坐标系统中托盘位置2704的坐标;及

tcfxbiastcfybiastcfzbias是代表照相机坐标系统原点2708沿着叉子坐标系统的轴 2707A、2711A和2705A的方向相对于叉子坐标系统原点2770的移位 的平移向量。

叉子坐标系统原点2770的位置是根据公式15C提供的:

Vmast=[Rmast-world]0ty0

其中:

是叉子位置2770在世界系统坐标中的位置;

[Rmast-world]=rmw00rmw01rmw02rmw10rmw11rmw12rmw20rmw21rmw22是代表桅杆组件30相对于世界坐标 系统的轴2707、2711和2705旋转的旋转矩阵;及

0ty0是代表叉子42A和42B在沿着向量2775的方向从世界坐标原点 2706移位的平移向量。

如果叉子坐标系统的轴2707A、2711A和2705A与世界坐标系统的 轴2707、2711和2705旋转对准,则通过向量相加,2772根据公式15D给出:

Vworld=Vmast+Vforks

用[Rcam-forks]去乘公式15D的两侧提供:

[Rcam-forks]Vworld=[Rcam-forks]Vmast+[Rcam-forks]Vforks

通过在公式15C替换,该公式提供:

[Rcam-forks]Vworld=[Rcam-forks][Rmast-world]0ty0+[Rcam-forks]Vforks

公式15B的项可以重新整理,以提供:

XcYcZc-tcfxbiastcfybiastcfzbias=[Rcam-forks]XfYfZf,这可以在以上的公式中替换,以提供式15E

[Rcam-forks]Vworld=[Rcam-forks][Rmast-world]0ty0+XcYcZc-tcfxbiastcfybiastcfzbias

公式15E中的项可以重新整理,以产生如下的公式15F

[Rcam-forks]Vworld-[Rcam-forks][Rmast-world]0ty0+tcfxbiastcfybiastcfzbias=XcYcZc

两个3x3的旋转矩阵[Rcam-forks]和[Rmast-world]相乘,以形成具有 其值依赖于rcf00rcf01rcf02rcf10rcf11rcf12rcf20rcf21rcf22rmw00rmw01rmw02rmw10rmw11rmw12rmw20rmw21rmw22的元素的合 成的3x3旋转矩阵。但是,当利用平移向量0ty0乘出(multiply out)时, 其结果是可以概念化为αrtyβrtyγrty的3x1平移向量,其中用于αr、βr和γr的值 依赖于合成的旋转矩阵的元素。因而,公式15F可以重新整理,以提供 公式15G

XcYcZc=[Rcam-forks]XwYwZw-αrtyβrtyγrty+tcfxbiastcfyboastcfzbias

其中:

Vworld=XwYwZw是托盘位置2704在世界系统坐标中的位置。

把负号结合到值αr、βr和γr当中允许公式15G更简单地写成公式15H

XcYcZc=[Rcam-forks]XwYwZw+αrty+tcfxbiasβrty+tcfybiasγrty+tcfabias

这个公式在形式上与以上讨论的原始公式15A和17A相似。因而, 类似于公式17A,公式15H可以在齐次坐标中写成公式17B

XcYcZc=αrty+tcfxbias[Rcam-forks]βrty+tcfybiasγrty+tcfzbiasXwYwZw1

因而,公式17B代表计算托盘位置2704的照相机坐标XcYcZc的备选途 径。这种备选方法考虑到沿向量2775方向(例如,桅杆组件30)的移 位ty不一定在与世界坐标系统的Y轴2711相同的方向中发生。类似于 以上讨论的公式19A,根据这种备选方法的照相机坐标根据公式19B关 于图像坐标位置:

λxcolyrow1=[K]αrty+tcfxbias[Rcam-forks]βrty+tcfybiasγrty+tcfzbiasXwYwZw1其中[K]=fx0x00fyy0001

参数估计实用性暗示可以对公式19B作一些改变。用于tcfzbias的非 零值可以暗示多个答案。其次,已经观察到估计βr的尝试产生全都为零 的平凡解。由此,可以作两个假设来帮助简化公式19B:第一,tcfzbias的值=0及,其次,βr=1。利用这些假设,公式19B可以写成公式19C

λxcolyrow1=[K]αrty+tcfxbias[Rcam-forks]ty+tcfybiasγrtyXwYwZw1

在求解时,以上示出的公式19C的特定形式导致在高度估计,即, 用于YW的值具有适当的幅值但是符号为负。因而,利用YW值执行计 算的其它算法和方法可以适当地设计成考虑负号的YW值。依赖缩放因 子λ,公式19C关联托盘位置2704与灰度级图像像素位置(xcol,yrow)。 这暗示公式19C的左侧和右侧是导致零叉积的共线向量。类似于公式 20A,该叉积公式是:

公式20Bxcolyrow1×[K]αrty+tcfxbias[Rcam-forks]ty+tcfybiasγrtyXwYwZw1=0

类似于以上所讨论的步骤,公式20B的叉积公式提供了可以为多个 观察收集并且求解托盘位置(Xw,Yw,Zw)的一对线性公式。对于托盘的 单个观察,n,当叉子42A和42B的移位是时,这两个线性公式由式30G给出:

anbncndnenfnXwYwZw=fx(tcfxbias+αrtyn)-γrtyn(xcoln-x0)fy(tyn+tcfybias)-γrtyn(yrown-y0)

其中:

an=xcolnrcf20-fxrcf00-x0rcf20

bn=xcolnrcf21-fxrcf01-x0rcf21

cn=xcolnrcf22-fxrcf02-x0rcf22

dn=yrownrcf20-fyrcf10-y0rcf20

en=yrownrcf21-fyrcf11-y0rcf21

fn=yrownrcf22-fyrcf12-y0rcf22

与前面类似,托盘位置的多个观察可以收集并用于以最小二乘法方 式求解托盘位置(Xw,Yw,Zw)。

在一个坏的观察可能不期望地歪斜最小二乘法估计的意义上而言, 以上用于求解托盘位置(Xw,Yw,Zw)的方法容易发生错误。因而,在对 托盘位置2704的一组观察当中,可能存在当为托盘位置求解 公式28A(或者公式28B或公式31A)时不应当考虑的一个或多个观察。 RANSAC是“随机采样一致”的缩写,这是一种从包含离群值的一组 观察数据估计数学模型的估计的迭代方法。一个基本的假设是数据包括 作为其分布可以用某个模型参数集合来解释的数据的“圈内值 (inlier)”,以及作为不适合该模型的数据的“离群值”。除此之外,数 据可能有噪声。离群值会来自例如噪声的极值或者来自错误测量或关于 数据解读的不正确假定。

图27D绘出了对用于确定托盘位置(Xw,Yw,Zw)的多个观察图像 像素位置应用RANSAC的示例性方法的流程图。RANSAC方法的每次 迭代选择一个最小样本集合,然后该集合用于识别相应的一致数据集。 通过对不同的最小样本集合重复这种迭代,会识别出多于一个一致集合。 最终,来自不同一致集合的最大一致集合可以在执行后续计算时使用。

对于ExistingObjectlist中的评分的候选对象,将有从n个图像帧收 集到的与ExistingObjectlist中那个特定的评分的候选对象关联的多个不 同的观察图像像素位置其中,如以下所讨论的,针对图像变 形了校正的实际像素位置存储在ExistingObjectlist的测量列表中。在步 骤2730中,图像分析计算机110确定是否有更多图像像素位置要测试, 或者是否已经执行了预定的最大次数的迭代。首先,所有不同的观察图 像像素位置,即,包括针对图像变形进行了校正的实际托盘像素坐标, 都可用于选择,使得过程继续到步骤2732。在步骤2732中,图像分析 计算机110随机地选择这些观察图像像素位置中的两个,这可以被称为 最小样本集(MSS)。给这两个观察图像像素位置作标记,使得它们不 在后续的迭代中使用。利用MSS,图像分析计算机110在步骤2734中 以最小二乘法方式从公式28A(或者公式28B或者公式31A)求解(Xw, Yw,Zw)。例如,如果来自灰度级图像n=3和n=6的相应的图像像素位 置被随机选择,则公式26B实现为:

-fx(xcol3-x0)sinθe3(xcol3-x0)cosθe30(yrow3-y0)sinθe3-fycosθe3(yrow3-y0)cosθe3+fysinθe3-fx(xcol6-x0)sinθe6(xcpl6-x0)cosθe60(yrow6-y0)sinθe6-fycosθe6(yrow6-y0)cosθe6+fysinθe6XwYwZwfxtxbiasfy(ty3+tybias)fxtxbiasfy(ty6+tybias)

并且可以,如公式28B中所示,用于例如估计(Xw,Yw,Zw)的最小二 乘法解答。这个解答可以被称为“MSS模型”,因为它是只利用MSS 为(Xw,Yw,Zw)估计的。在步骤2736,计算基于MSS中每个图像像素 位置和MSS模型之间误差的误差值。特别地,计算利用MSS模型的每 个观察图像像素位置的均方误差。例如,在考虑照相机坐标系统只关于 X轴旋转时,均方误差,εn,可以根据下式计算:

公式32A

ϵn=(Zw(xcoln-x0)cosθen+Yw(xcoln-x0)sinθen-Xwfx-fxtxboas)2+

(Zw((yrown-y0)cosθen+fysimθen)+Yw((yrown-y0)sinθen-fycosθen)-fy(tyn+tybias))2

在更一般的情况下,其中使用公式30E的概念旋转矩阵[Rcam],则 均方误差,εn,可以根据公式32B计算:

ϵn=(anXw+bnYw+cnZw-fxtxbias)2+(dnXw+enYw+fnZw-fy(tyn+tybias))2

在这个例子的具体MSS中,两个均方误差值(即,ε3和ε6)在步 骤2736中计算。利用这两个均方误差值,计算用于这两个误差值的标 准偏差σε并且在步骤2738中图像分析计算机110根据下式计算阈值δ:

公式33

δ=1.0σε

在步骤2740中,图像分析计算机110通过采用公式32A(或者公 式32B)以及利用MSS通过公式28A(或者公式28B或公式31A)确 定的Xw、Yw、Zw值,即MSS模型,为这个评分的候选对象确定用于不 在MSS中的每个剩余观察图像像素位置的相应误差。然后,图像分析 计算机110确定其误差小于阈值δ(根据公式32A或32B)的所有观察 图像像素位置,即那些不在MSS中的位置。在步骤2740中识别出的观 察图像像素位置是利用这个特定的MSS用于RANSAC方法的这次特定 迭代的一致集合。如果这个一致集合大于任何前面确定的一致集合,则 在步骤2742中它被存储为最大一致集合。如果这个一致集合不大于任 何一个前面确定的一致集合,则所存储的最大一致集合仍保持被存储。

RANSAC方法返回步骤2730,在那里图像分析计算机110确定是 否有更多观察图像像素位置要作为MSS来尝试,或者是否已经执行了 预定最大次数的迭代。例如,如果期望的话,则迭代可以限于大约20 次。最终,这个阈值将被达到或者所有观察图像像素位置将已经被选择 包括在至少一个MSS中。一旦发生那种情况,图像分析计算机110就 可以在步骤2744中使用最大一致集合中的观察图像像素位置从公式 28A(或者公式28B或公式31A)求解(Xw,Yw,Zw)。因而,对托盘位 置2704的解答可以不必使用将把有害误差引入解答的“离群值”观察 图像像素位置。但是,离群值观察图像像素位置可以保留在 ExistingObjectlist中用于这个评分的候选对象的记录中。

一旦确定了托盘位置2704,车辆计算机50就可以控制叉子42A和 42B的放置,使得叉子可以啮合托盘2702,如以下进一步讨论的。

以上关于托盘位置2704(Xw,Yw,Zw)到观察图像像素位置(xcol, yrow)的投影的讨论使用不考虑可以由成像照相机130的透镜引入的变 形的简单模型。因而,利用具有透镜变形的实际成像照相机130识别出 的实测图像像素位置可以在位置2723(见图27C),这与如果托盘位置 2704通过理想透镜未形变地投影到图像平面2712上点2718时不同,如 用于开发上述公式所使用的。为了考虑透镜变形的可能性,简化的投影 模型可以扩展。在简化的投影模型中,公式16可以重新整理,以提供:

公式34:xcol=fxx″+x0和yrow=fyy″+y0

其中未变形的照相机坐标被认为是:

x=XcZcy=YcZc

透镜的变形可以包括切向变形系数(p1,p2)和径向变形系数(k1、 k2、k3),这些系数是为特定的照相机透镜定义的,如本领域中众所周知 的。考虑透镜变形的一种常见模型是根据下式扩展原始变换模型,即公 式34:

公式35:xcol=fxx′+x0和yrow=fyy′+y0

其中:x’和y’被认为是变形后的照相机坐标并且根据下式与未变形 的的照相机坐标x”和y”关联:

x″=x′(1+k1r2+k2r4+k3r6)+2p1x′y′+p2(r2+2x′2);

y″=y′(1+k1r2+k2r4+k3r6)+2p2x′y′+p1(r2+2y′2);及

r2=x′2+y′2

当识别实测图像像素位置时并且当预测图像像素位置可以在后续图 像帧中位于什么地方时,这些要在以下讨论,有些计算可以在已经扩展 成考虑透镜变形的投影模型中发生,而其它计算可以在不考虑透镜变形 的简化投影模型中发生。通过添加扩展的投影模型,现在会有两种不同 类型的图像像素位置–未变形的图像像素位置和变形的图像像素位置。 用于在变形的和未变形的值之间转换的技术可以在图像分析过程的不同 步骤中简化运算和计算,如以下更完全描述的。

由成像照相机130获得并且由图像分析计算机110分析的实际灰度 级图像涉及实际透镜,而不是理想透镜。因而,当图像分析计算机110 为灰度级图像或者从灰度级图像导出的其它计算的图像测量和分析图像 像素位置时,图像像素坐标可以在变形的图像空间中。如以上所提到的, 把那些像素坐标变换到公式34的投影模型中可能是有益的,其中公式 34的投影模型可以被称为未变形的图像空间。为了帮助区分这两种不同 类型图像空间中的像素坐标,附加的修改量可以添加到用于坐标位置 (xcol,yrow)的下标。用于变形的图像空间中的像素位置的坐标(根据公式 35)可以被称为(xD-col,yD-row),而用于未变形的图像空间中的像素位置 的坐标(根据公式34)可以被称为(xUD-col,yUD-row)。

为了把未变形的像素坐标(xUD-col,yUD-row)转换到变形的图像空间, 公式34用于根据下式确定x”和y”:

x″=(xUD-col-x0)/fx和y″=(yUD-row-y0)/fy

利用用于x”和y”的这些值,公式35的项x’和y’根据下式计算:

x″=x′(1+k1r2+k2r4+k3r6)+2p1x′y′+p2(r2+2x′2)

y″=y′(1+k1r2+k2r4+k3r6)+2p2x′y′+p1(r2+2y′2)

以上两个公式可以重新整理,以产生:

x=1(1+k1r2+k2r4+k3r6)(x-2p1xy-p2(r2+2x2))

y=1(1+k1r2+k2r4+k3r6)(y-2p2xy-p1(r2+2y2))

以上两个公式中每一个都不能直接求解,但是可以利用将收敛到用 于x’和y’相应值的迭代方法求解,其中:

x(t+1)=1(1+k1r2+k2r4+k3r6)(x-2p1x(t)y(t)-p2(r2+2x(t)2))

y(t+1)=1(1+k1r2+k2r4+k3r6)(y-2p2x(t)y(t)-p1(r2+2y(t)2))

其中t是表示迭代的索引值。因而,计算公式的左手侧被计算并且 在下次迭代中在右手侧使用。迭代过程以对x’(0)和y’(0)的初始估计开 始(即,t=0)并且继续多次迭代,直到相继的迭代之间的误差充分小。 作为一个例子,误差可以是用于(x’,y’)的两个估计之间的欧几里德距 离。因而,误差可以计算为:

error=((x(t+1)-x(t))2+(y(t+1)-y(t))2)

迭代继续,直到误差小于预定的阈值,诸如像0.0001。

在一种示例实施例中,用于迭代过程的初始估计值可以是 x′(0)=x″和y′(0)=y″.

一旦计算出用于x’和y’的值,它们就可以在公式35中用于确定变 形的位置坐标:

xD-col=fxx′+x0和yD-row=fyy′+y0

变形的图像空间像素坐标(xD-col,yD-row)到未变形的图像空间像素坐 标(xUD-col,yUD-row)的转换可以用类似的方式实现。首先,公式35用于根 据下式确定x’和y’:

x′=(xD-col-x0)/fx和y′=(yD-row-y0)/fy

利用这些用于x’和y’的值,根据下式计算公式34的项x”和y”:

x″=x′(1+k1r2+k2r4+k3r6)+2p1x′y′+p2(r2+2x′2)

y″=y′(1+k1r2+k2r4+k3r6)+2p2x′y′+p1(r2+2y′2)

一旦计算出用于x”和y”的值,它们就可以在公式34中用于确定未 变形的位置坐标:

xUD-col=fxx″+x0和yUD-row=fyy″+y0

对于利用聚焦在无限远的5.5mm焦距透镜捕捉到的480x752像素 图像,透镜变形系数的例子可以是:

k1=0.1260,k2=-1.0477,k3=2.3851,p1=-0.0056,p2=-0.0028

对于利用聚焦在无限远的5.5mm焦距透镜捕捉到的240x376像素 图像,透镜变形系数的例子可以是:

k1=0.091604,k2=-0.235003,k3=0,p1=-0.003286,p2=-0.010984

在变形和未变形的图像空间之间转换的一个特定例子可以涉及用于 评分的候选对象的托盘底部中点的定位,然后预测后续图像帧中它们的 位置并计算对应的预测窗口。

返回图25,对于其中检测到评分的候选对象的每个图像帧,维护相 应测出的未变形像素位置值(xUD-col,yUD-row)。如以上间接提到的,并且 以下更详细讨论的,这个值是由图像分析计算机130在灰度级图像帧测 出的实际像素位置,可以针对变形进行了校正。在步骤2505中获得下 一个图像帧,使得在两个图像帧之间,成像照相机在y方向移动已知的 距离tdiff,并且在x方向或z方向不移动。

在简化的,或者未变形的,投影模型中,透视投影公式(公式19A) 提供,一般而言,世界点(world point)根据公式36A投影到图像平面 上一个位置:

uvξ=[k]Rcam|TcamXwYWZw1

其中:

XwYwZw1是用于位于(XW,YW,ZW)的世界点相对于世界坐标系统原点的 齐次坐标;

[K]是3x3内在照相机矩阵;

[Rcam]是描述照相机的坐标系统和世界坐标系统的相对朝向的3x3旋 转矩阵;

[Tcam]是描述两个图像帧之间照相机原点位置的移位的3x1平移向量;

uvξ是图像平面上一个投影的像素位置的齐次坐标,它(回过头来参 考公式19A)关于像素位置(xcol,yrow),使得u=ξxcol并且v=ξyrow;及

ξ代表可以作为卡尔曼滤波器的状态变量估计的未知缩放因子,如 以下解释的。

公式36A可以用于两个相继的图像帧,其中照相机在每一帧的获得 之间移动。当在两个相继的图像帧之间时,代表两个 图像帧之间照相机的相对平移。换句话说,如果在获得第二个图像帧时 照相机的位置被认为相对于在获得第一个图像帧时照相机的位置,则要 在公式36A中使用的、用于第一图像帧的平移向量是Tcam=000,而要在 公式36A中使用的、用于第二图像帧的平移向量是Tcam=0tdiff0.

因而,对于第一个图像帧,公式36A提供公式36B

u1v1ξ1=[K]r00r01r020r10r11r120r20r21r220XwYwZw1

这个公式可以重新整理,以提供公式36C

[K]-1u1v1ξ1=r00r01r020r10r11r120r20r21r220XwYwZw1

任何旋转矩阵的一个属性是它是规格化正交的,这意味着[R]T[R]=I。 用[R]T乘以两侧并且用以下公式36D重新给左手侧作标记:

abc=[K]-1u1v1ξ1

允许公式36C变换成公式36E

[Rcam]Tabc=[Rcam]Tr00r01r020r10r11r120r20r21r220XwYwZw1

该公式简化成公式36F

[Rcam]Tabc=100001000010XwYwZw1

因为世界点的位置是以齐次坐标的形式(即,XwYwZw1),所以用于这同 一个世界点的齐次坐标的等效设置也通过ωXwωYwωZwω来提供。在公式36F中 使用这些等效的齐次坐标提供了公式36G

[Rcam]Tabc=100010001ωXwωYwωZwω

并且乘出右手侧产生公式36H

[Rcam]Tabc=ωXwωYwωZw

利用也包括ω的世界点的齐次坐标表示,用于第二个图像帧的投影 公式由公式36I提供:

u2v2ξ2=[K]r00r01r020r10r11r12tdiffr20r21r220ωXwωYwωZwω

其中ω是可以作为卡尔曼滤波器的另一个状态变量估计的未知缩放 因子,如下所述。公式36I用简明的记号可以写成公式36J

u2v2ξ2=[K]Rcam|TcamωXwωYwωZwω

其中Tcam=0tdiff0

在公式36J的右手侧利用公式36H提供了公式36K

u2v2ξ2=[K]Rcam|Tcam[Rcam]Tabcω

当乘出时,公式36K的右手侧变成以下的公式36L。这个结果依赖 于规格化正交的旋转矩阵,使得用其转置相乘的旋转矩阵产生单位矩阵。

公式36L

u2v2ξ2=[K][abc+ω[Tcam]]

公式36D可以替换到公式36L中,以提供公式36M

u2v2ξ2=[k][[K]-1u1v1ξ1+ω[Tcam]]

这个公式可以简化,以揭示公式36N

u2v2ξ2=u1v1ξ1+[K][ω[Tcam]]

因而,公式36N提供了一种模型,该模型描述世界点的投影如何在 获得的相继的图像帧之间变化,使得照相机在图像帧之间在y方向移动 量tdiff。特别地,该模型预测用于下一个图像帧的投影位置u2v2ξ2可以基于 前一图像帧的投影位置u1v1ξ1和成像照相机130在两个图像帧之间的移动 Tcam来计算。

特别地,对于[K]=fxγx00fyy0001,公式36N提供

公式37:u2=u1+ωγtdiff和v2=v1+ωfytdiff

因而,公式37揭示,在未变形的图像空间中,用于一个投影位置 的后续状态可以从前一个状态和值tdiff来计算。后续状态依赖于用于u1、 v1、γ、ω和fy的值以及用于tdiff的当前值。

这是卡尔曼滤波器可以用于估计系统状态的系统或模型的类型;在 这个特定的例子中,系统的状态可以包括在图像帧之间被跟踪的评分的 候选对象的投影位置的估计。

一般而言,卡尔曼滤波器是对嘈杂输入观察数据的流实时操作的迭 代算法。依照本文所述的图像分析系统,用于评分的候选对象的观察数 据是当其通过图像序列被识别并跟踪时该评分的候选对象的位置坐标的 序列。卡尔曼滤波器还基于作为观察数据的基础的模型生成对系统未来 状态的预测。依照本文所述的图像分析系统,当计算下一图像帧中用于 一个评分的候选对象的未调整的预测位置时,预测是在图25的步骤 2504执行的。该模型的未调整的预测位置,或者说预备预测位置,与该 评分的候选对象为那个图像帧实际测出的图像像素位置进行比较,并且 这个差值被一个称为“卡尔曼增益”的因子缩放。缩放后的差值作为反 馈提供到模型中,以便调整预备或未调整的预测位置并由此改进后续的 预测。

在每次的步进,或迭代,卡尔曼滤波器都产生对未知值的估计,连 同其不确定性。一旦观察到下一个测量的结果,这些估计就利用加权的 平均值更新,其中,更多的权重给予具有更低不确定性的估计。权重是 从系统状态的预测的协方差计算的,其中协方差是对不确定性的测量。 结果是一个位于未调整或预备预测系统状态和实测或观察到的系统状态 之间的新的状态估计(或调整后的预测)。在许多应用中,诸如这个应 用,建模系统的内部状态可以包括比可测量或可观察变量多的状态变量; 但是,卡尔曼滤波器可以用于估计所有的状态变量。因而,对变量γ、 ω和fy的估计可以为卡尔曼滤波器的不同迭代计算,并且其相应的值可 以随时间变化,使得用于γ(t)、ω(t)和fy(t)的相应的值可以对不同的迭代 不同。

卡尔曼滤波器利用以下矩阵开始:状态转换模型Φ;观察模型H; 建模过程噪声的协方差Q;以及观察噪声的协方差R。协方差矩阵Q 和R可以通过进行多次观察并分析结果数据来用实验方法计算。

利用传统的索引“t”而不是公式37的数值下标来表示卡尔曼滤波 器中不同变量的迭代顺序,公式37提供了两个公式,这两个公式表示 在下一图像帧中该模型的在未变形的图像空间中评分的候选对象的 投影位置的当前未调整的预测基于其来自前一图像帧的估计的 前一估计状态或调整后的预测投影位置(u(t-1),v(t-1)),,其中:

u^(t)=u(t-1)+(ω(t-1)γ(t-1)tdiff)

v^(t)=v(t-1)+(ω(t-1)fy(t-1)tdiff)

如以下更完全地解释地,在卡尔曼滤波器中有一些要为其计算预备 或未调整预测并且然后进行调整的变量。对于卡尔曼滤波器的特定迭代, 用于一个变量的未调整的预测值用变量符号之上的^重音符号表示。但 是,基于卡尔曼滤波器的操作,这个未调整的预测值可以利用更新后的 预测值调整,并且用于调整后的预测值的变量通过略去变量符号之上的 ^重音符号来表示。不是卡尔曼滤波器中的所有变量都要首先预备预测 然后再调整;不调整的那些变量通常也可以通过略去变量名之上的^重 音符号来表示。

如随后讨论的,ξ,来自前一公式(例如,公式36A)的齐次坐标 的缩放因子,也作为包括卡尔曼滤波器的一个状态变量,或因子而被包 括。利用这些因子,用于卡尔曼滤波器的当前未调整预测状态的一 组示例性未调整的预测公式可以定义为:

[Z^(t)]=u^(t)v^(t)ξ^(t)ω^(t)γ^(t)fy^(t)

其中:

u^(t)=u(t-1)+(ω(t-1)γ(t-1)tdiff)

v^(t)=v(t-1)+(ω(t-1)fy(t-1)tdiff)

ξ^(t)=ξ(t-1)

ω^(t)=ω(t-1)

γ^(t)=γ(t-1)

fy^(t)=fy(t-1)

至于初始未调整的预测,可以利用初始状态,Z(0),来计算, 其中Z(0)可以初始化为:

Z(0)=u(0)=xOBS(0)v(0)=yOBS(0)ξ(0)=1ω(0)=1γ(0)=γfy(0)=fy

在初始状态,Z(0),用于γ和fy的值来自,如以上所指出的,可以 根据已知的照相机后方交会技术计算的内在照相机矩阵[K]。坐标 (xOBS(0),yOBS(0))代表新的评分的候选对象在初始灰度级图像帧中(在未 变形的图像空间中)实测或观察到的图像位置,在所述初始灰度级图像 帧中,那个新的评分的候选对象首次被图像分析计算机110识别。

从这些公式,要在卡尔曼滤波器中使用的状态转换矩阵[Φ(t)]可以确 定为:

Φ(t)=100γ(t-1)tdiffω(t-1)tdiff0010fy(t-1)tdiff0ω(t-1)tdiff001000000100000010000001

因为前两个未调整的预测公式(即,和)关于系统的前一个 估计状态,或调整后的状态(即,u(t-1)和v(t-1))的非线性性,所以未 调整的预测状态的每次计算都利用状态转换矩阵中线性化的模型来估计, 该计算关于适当的状态变量取状态转换公式的偏导数。例如,为了到达 对应于的以上示例状态转换矩阵Φ(t)的第一行,以下偏导数可以对 计算,以提供状态转换矩阵Φ(t)的第一行中的系数:

u^(t)u(t-1)=1

u^(t)v(t-1)=0

u^(t)ξ(t-1)=0

u^(t)ω(t-1)=γ(t-1)tdiff

u^(t)γ(t-1)=ω(t-1)tdiff

u^(t)fy(t-1)=0

状态转换矩阵[Φ(t)]的剩余元素以类似的方式计算。

如以上简明地提到的,利用卡尔曼滤波器,系统当前未调整的预测 状态是根据各种状态转换矩阵系数从系统的前一个估计状态Z(t-1) 计算的。记号表示在迭代“t”还没有利用当前的观察或测量更新的 系统的未调整的预测状态估计。记号Z(t)表示在迭代“t”考虑了当前的 观察或测量的调整后的预测状态估计。

如以上所提到的,当前未调整的预测投影位置值是而且 这些值代表下一个图像帧中在未变形的图像空间中预计托盘对象要投影 到什么地方。但是,这个当前未调整的预测投影位置是依照齐次坐标的, 并且包括预测的缩放因子为了把齐次坐标转换成在由图像分析计 算机110分析的图像中的未调整的预测投影位置值缩放因子 根据下式通过除法被除去了:

x^(t)=u^(t)ξ^(t)y^(t)=v^(t)ξ^(t)

这个当前未调整的预测图像像素位置在未变形的图像空间中,并且 可以转换到变形的图像空间,使得它可以用作下一个图像帧的预测圆形 的中心(见图25的步骤2504)。特别地,映射到变形的图像空间中的当 前未调整的预测图像像素位置是用于识别与NewObjectlist关联的下一 个图像帧中所识别出的匹配的新的评分的候选对象的预测窗口的中心。 在获得后续的帧时,计算对应的当前未调整的预测像素位置(在变形的 像素坐标中),并用作用于每个最近下一图像帧的预测窗口的中心。

对于卡尔曼滤波器的目的来说,在迭代“t”的“测量”是在迭代 “t”用于新的评分的候选对象的观察或实测位置(即,图像像素坐标), 可以被称为(xOBS(t),yOBS(t)),并且存储在NewObjectlist中。这个观察到 的位置是下一个帧中由图像分析计算机110识别(在变形的图像空间中 测量,然后转换成未变形的图像位置)为下一图像帧(即,结合 NewObjectlist使用的图像帧)中新的评分的候选对象的下部中点的图 像位置。因为卡尔曼滤波器预测的变量是利用齐次坐标预测的 投影位置,而观察到的或者实测的变量是图像帧的像素位置,所以观察 矩阵[H]构造为把预测的变量(即,在齐次坐标中)与实测的变量(即, 在图像帧中的像素位置中)关联。因而,观察矩阵依据来写, 其中:

x^(t)=u^(t)ξ^(t)并且y^(t)=v^(t)ξ^(t)

这两个公式关于当前未调整的预测投影位置(即,)是非 线性的,并且通过关于卡尔曼滤波器的不同状态变量计算每个公式的偏 导数来构造线性化的观察矩阵,类似于以上的状态转换矩阵。

换句话说,观察矩阵是根据下式构造的:

H(t)=x^(t)u^(t)x^(t)v^(t)x^(t)ξ^(t)x^(t)ω^(t)x^(t)γ^(t)x^(t)fy^(t)y^(t)u^(t)y^(t)v^(t)y^(t)ξ^(t)y^(t)ω^(t)y^(t)γ^(t)y^(t)fy^(t)

这些公式为卡尔曼滤波器提供了观察或测量矩阵H(t),其中:

H(t)=1ξ^(t)0-u^(t)ξ^2(t)00001ξ^(t)-v^(y)ξ^2(t)000

卡尔曼滤波器的残差(residual),在迭代“t”的观察或测量(即, (xOBS(t),yOBS(t)),),与来自的缩放的当前未调整预测估计(即, )之间的差值,可以如下计算:

[ϵr(t)]=xOBS(t)yOBS(t)-x^(t)y^(t)

这还可以写成:

[ϵr(t)]=xOBS(t)yOBS(t)-u^(t)ξ^(t)v^(t)ξ^(t)

如在卡尔曼滤波器技术中已知的,先验预测过程协方差矩阵可以根 据下式计算:

P^(t)=Φ(t)P(t-1)Φ(t)T+Q

残差协方差矩阵可以根据下式计算:

S(t)=H(t)P^(t)H(t)T+R

最优卡尔曼增益可以根据下式计算:

G(t)=P^(t)H(t)TS(t)-1

然后,更新后的状态估计,Z(t),可以根据下式计算:

Z(t)=Z^(t)+G(t)[ϵr(t)]

这个当前调整后的预测状态估计Z(t)将对值(u(t),v(t))具有更新后 的预测,这被认为是要在卡尔曼滤波器的下一次迭代中使用的用于这些 状态变量的估计值。更新后的状态估计Z(t)还将对其它四个也要在卡尔 曼滤波器的下一次迭代中使用的状态变量ω(t)、γ(t)、ξ(t)和fy(t)具有更 新后的预测值或者估计值。除了在ExistingObjectlist中存储用于新的评 分的候选对象的更新的卡尔曼滤波器状态(即,Z(t)),未变形的图像空 间中测出的像素位置坐标(即,(xOBS,yOBS))也作为ExistingObjectlist 中所存储的未变形像素位置序列中用于这个特定的评分的候选对象的下 一个未变形的像素位置添加。如前面所描述的,就是ExistingObjectlist 记录中的用于这个特定评分的候选对象的未变形像素位置序列在公式 28A(或者公式28B或公式31A)中用于计算用于该评分的候选对象的 托盘向量(Xw,Yw,Zw)。

调整后的后验过程协方差矩阵可以根据下式计算:

P(t)=(I-G(t)H(t))P^(t)

至于初始化卡尔曼滤波器,P(0)可以是6x6单位矩阵,Q可以是每 个元素=0的6x6矩阵,而R可以是每个对角线元素=.001的2x2对角矩 阵。

图28是突出图25过程的进一步部分细节的示例性过程的流程图。 如以上所提到的,卡尔曼滤波器利用当前状态估计,或者来自卡尔曼滤 波器前一次迭代的更新后的预测投影位置,u(t),v(t),在未变形的图像空 间中操作。

为了清晰,选择两个特定的图像帧,以关于ExistingObjectlist中特 定一个可能的评分的候选对象来描述图28的过程的操作。例如,如果 前一图像帧是n=4并且下一个图像帧是n=5,则ExistingObjectlist将包 括未变形的图像空间中用于这个评分的候选对象的校正后的实际/实测 图像像素位置。例如,ExistingObjectlist中用于这个评分的候选对象的 最近校正后的实际图像像素位置具有坐标此外,如步 骤2802中所示,ExistingObjectlist还将存储如由卡尔曼滤波器的紧接 着前一次迭代计算出的当前调整后的预测状态变量值。换句话说,对于 图像帧n=4,ExistingObjectlist存储(依照卡尔曼滤波器变量)系统状 态变量的当前估计状态(u(t-1),v(t-1)),其中位置值(u(t-1),v(t-1))是通过来 自卡尔曼滤波器的前一次迭代的更新后的预测投影位置值(u(t),v(t))定义 的。

在步骤2804中,实现卡尔曼滤波器的图像分析计算机110可以使 用这个当前估计的状态(u(t-1),v(t-1))和在图像帧之间的照相机移动量tdiff来计算当前未调整的预测估计这种预测代表,由于在两个图像帧 之间所发生的照相机移动,底层物理模型预测(没有任何类型的调整) 在下一个图像帧(即,图像帧n=5)中在世界点(XW,YW,ZW)的投影 位置(例如,)将是什么。

在步骤2806中,未调整的预测投影位置的齐次坐标值通 过除以被缩放,以确定下一个图像帧(即,帧n=5)中对应的未调 整的预测像素位置这个未调整的预测像素位置是在未变形的 图像空间中,并且在步骤2808中被转换成变形的图像像素坐标。这些 变形的图像像素坐标被认为是评分的候选对象在下一个图像帧n=5中的 未调整的预测新像素位置(在变形的图像空间中),如图25的步骤2504 中所示出的。在步骤2810,参考这些变形的像素坐标在图像帧n=5中 定义未调整的预测新位置和预测窗口。

假设在图25的步骤2512中在图像帧n=5中一个新的评分的候选对 象被识别出、被定位并与ExistingObjectlist中这个特定的现有候选对象 匹配,则那个新的评分的候选对象将在图像帧n=5中在变形的图像空间 中具有观察到的或实测的图像像素位置

(xD-col5,yD-row5)

图像分析计算机110在步骤2812中考虑这个图像像素位置作为要 在卡尔曼滤波器的当前迭代中使用的、用于这个评分的候选对象的未校 正测量位置。

在步骤2814,图像分析计算机将变形的图像像素位置坐标 校正或者把其转换成测出的未变形图像位置坐标 这些测出的未变形的图像位置坐标被 认为是当前测量(xOBS(t),yOBS(t)),,并且通过卡尔曼滤波器将其与用于帧 n=5的未调整的预测像素位置进行比较,以计算残差,[εr(t)], 并且以更新滤波器的状态,如图25的步骤2524中所示。

一旦更新了卡尔曼滤波器的状态,调整后的预测,或估计的状态, Z(t)就将对(u(t),v(t))以及对用于新的评分的候选对象的其它状态变量具 有调整后的预测值。还将有一个调整后的过程协方差矩阵P(t)。这些用 于(u(t),v(t))的调整后的预测值是卡尔曼滤波器指示要在卡尔曼滤波器的 下一次迭代过程中在预备或未调整预测中使用的用于这些状态变量的当 前估计值。因而,在步骤2816中,图像分析计算机110把用于这个评 分的候选对象的这个调整后的预测,或估计状态,Z(t)存储在 ExistingObjectlist中。

除了在ExistingObjectlist中存储用于评分的候选对象的更新后的卡 尔曼滤波器状态,在步骤2818中,未变形的图像空间中测出的像素位 置坐标(即,(xOBS,yOBS))也可以作为ExistingObjectlist列表中所存储 的用于这个特定的评分的候选对象的未变形像素位置序列中下一个未变 形的像素位置而添加。

就是这些未变形的图像像素坐标(xOBS,yOBS)要作为用于图像帧n=5 中对象位置的校正后的实际未变形坐标而存储。如以上 所提到的,就是这些未变形的坐标要被其它过程用于周期性地计算用于 评分的候选对象的托盘向量(XW,YW,ZW)。

卡尔曼滤波器的应用在这个评分的候选对象通过后续图像帧n=6、 7、8、…被跟踪时以类似的方式重复应用。

以上获得图像、跟踪对象和估计托盘向量的描述假设车辆20是固 定的,而带有成像照相机130的叉架装置40在Y方向上下行进。但是, 即使车辆20在提升操作中移动,这个移动也可以被考虑到。

特别地,车辆20可以在X方向(即,在托盘正面的侧面)和Z方 向(即,朝着托盘正面或远离其)移动,但是假定车辆20在Y方向不 移动(即,上下浮动)。而且,假定车辆20关于X轴不旋转(即,前后 倾斜),假定关于Z轴不旋转(即,侧面到侧面倾斜),并且假定能够关 于Y轴旋转(即,调整车辆20相对于托盘正面如何成角度(square))。

在之前无车辆移动的假设下,物理世界坐标系统的原点被认为是恒 定的。因而,有一系列图像点托盘位置这些位置是同一物 理世界托盘位置(XW,YW,ZW)的不同观察,并且其索引n指图像帧编 号。但是,在车辆可以在图像帧之间移动的假设下,物理世界坐标的位 置现在也包括索引值n,因为物理世界中的坐标在获得图像 帧n时是相对于世界坐标系统原点On的。例如,世界坐标系统原点On可以位于车辆20的框架上。如果在图像帧n和图像帧n+1之间车辆20 移动,则这个原点On移动并且物理世界中托盘2702的位置2704将具 有相对于在获得图像帧n+1时的世界坐标系统原点On+1的坐标 (Xwn+1,Ywn+1,Zwn+1).

关于两个不同坐标系统之间变换的概念已经在上面关于公式15和 21描述过了,通过在卡车20在图像之间移动的背景下应用这些技术, 提供

公式38AXwnYwnZwn=ttxn[Rtruck]3x3ttynttznXw(n-1)Yw(n-1)Zw(n-1)1,它在齐次坐标下 是

公式38BXwnYwnZwn1=ttxn[Rtruchn]3x3ttynttzn0001Xw(n-1)Yw(n-1)Zw(n-1)1

其中:

是评分的候选对象相对于当获得图像帧n时的世界坐标 系统原点On的物理世界坐标;

是评分的候选对象相对于当获得图像帧n-1时 的世界坐标系统原点On-1的物理世界坐标;

是图像帧n-1和图像帧n之间基于相应世界原点的旋转的 旋转矩阵(即,车辆20围绕Y轴的旋转,);及

ttxnttynttzn是图像帧n-1和图像帧n之间基于相应世界原点的移动的平移 矩阵(即,车辆20的位置在两个图像帧之间的移动)。

车辆20在帧之间旋转或移动的量可以由与车辆计算机50通信的各 种传感器测量或计算。例如,转向角传感器可以与车辆20的转向控制 机制耦合,以便提供在公式38B的旋转矩阵中使用的角度此外, 来自车轮旋转传感器或类似传感器的测距数据以及来自转向角传感器的 数据可以用于计算车辆20的平移移动,即可以用于确定沿X和Z方向 的移动。然后,车辆计算机50可以与图像分析计算机110通信,以提 供适当的信息。

公式38B可以写作公式38C

XwnYwnZwn1=[Ftruckn]Xw(n-1)Yw(n-1)Zw(n-1)1

其中给出关于车辆20可以如何在图像帧之间移动的假设,是:

[Ftruckn]=cosθyn0sinθynttxn0100-sinθyn0cosθynttzn0001

重新整理公式38C可以实现为提供

公式38D[Ftruckn-1]XwnYwnZwn1=Xw(n-1)Yw(n-1)Zw(n-1)1

其中所指出的逆矩阵由下式给出:

[Ftruckn-1]=cosθyn0-sinθynsinθynttzn+(sinθyn-1)ttxncosθyn0100sinθyn0cosθyn-(cosθynttzn+sinθynttxn)0001

在车辆20现在可以在图像帧之间移动的假设下,公式19A可以通 过给不同的变量添加适当的下标来扩充(augment),以提供公式39A

λxcol(n-1)yrow(n-1)1=[K]Rcam|Tcam(n-1)Xw(n-1)Yw(n-1)Zw(n-1)1

公式39A依赖缩放因子λ把物理世界位置与灰 度级图像像素位置关联。把公式38D的左侧替换到公式 39A的右侧将产生公式39B

λxcol(n-1)yrow(n-1)1=[K]Rcam|Tcam(n-1)[Ftruckn-1]XwnYwnZwn1

这个公式依照相对于在获得图像帧n时的新世界坐标系统原点On的物理世界位置提供前一个图像位置点等效的公式39B可以为任何前面的图像位置点写。例如,公式39B可 以写成:

公式39Cλxcol(n-2)yrow(n-2)1=[K]Rcam|Tcam(n-2)[Ftruck(n-1)-1]Xw(n-1)Yw(n-1)Zw(n-1)1

并且把公式38D替换到公式39C中提供公式39D

λxcol(n-2)yrow(n-2)1=[K]Rcam|Tcam(n-2)[Ftruck(n-1)-1][Ftruckn-1]XwnYwnZwn1

因而,公式39C和39D可以一般化为公式39E

λxcol(n-N)yrow(n-N)1=[K]Rcam|Tcam(n-N)(Πk=N...1[Ftruck(n-k+1)-1])XwnYwnZwn1

这个公式允许来自图像帧(n-N)的任何前面的图像位置坐标 依照相对于在获得图像帧n时的新世界坐标系统原点 On的物理世界位置来表示。“N”对应于期望的前面的图像 帧并且等于当前帧“n”前面它位于的帧数。在公式39E中,从k=N至 k=1执行乘法序列。

公式39E在结构上与公式19A相似,根据上面是:

公式19Aλxcolyrow1=[K]Rcam|TcamXwYwZw1

因而,与公式20相似的叉积公式可以写成公式40

xcol(n-N)yrow(n-N)1×[K]Rcam|Tcam(n-N)(Πk=N...1[Ftruck(n-k+1)-1])XwnYwnZwn1=0

在公式20A中,外在照相机矩阵[Rcam  |cam]是3x4矩阵。在公式 40中,还给出了相似但更复杂的3x4外在照相机矩阵

Rcam|Tcam(n-N)(Πk=N...1[Ftruck(n-k+1)-1])

但是公式40在概念上与公式20A相同。因而,类似于公式20A如何被 操纵来产生公式23中的两个线性公式,公式40也可以被操纵产生两个 相似但更复杂的线性公式。特别地,这两个线性公式将提供把对于图像 帧n-N的图像像素位置关联到物理对象相对于在获得图 像帧n时的世界坐标系统原点On的物理世界位置坐标的公 式。即使同一个物理对象相对于在获得图像帧n-N时的世界坐标系统原 点O(n-N)具有不同的物理世界位置坐标这也是 成立的。如前面所描述的,关于公式25A和公式26A,这些线性公式对 可以分别对物理对象的多个观察进行收集,使得可以计算能够表示例如 物理托盘相对于在获得图像帧n时的世界坐标系统原点On的下部中点 的位置的托盘向量如上面讨论过的,可以提供编码器, 以便响应于叉架装置40相对于第三焊件36的移动而向车辆计算机50 生成脉冲。在获得图像帧n时的世界坐标系统原点On相对于第三焊件 是固定的,从而允许车辆计算机50确定成像照相机130以及叉子42A 和42B相对于在获得图像帧n时的世界坐标系统原点On的线性移位。 由此,成像照相机130及叉子42A和42B相对于在获得图像帧n时的 世界坐标系统原点On的位置可以由车辆计算机50向图像分析计算机 110提供。然后,这个托盘向量可以由车辆计算机50用于指引叉子42A 和42B啮合物理托盘。

如上所述,图像分析计算机110通过一系列图像识别并跟踪多个评 分的候选对象。用于每个评分的候选对象的相应记录在 ExistingObjectlist中维护。除其它的值以外,用于特定评分的候选对象 的对应记录可以包括评分的候选对象的当前位置(XW,YW,ZW)以及用 于该评分的候选对象的合成对象得分ScoreObject。用于评分的候选对象的 对应记录还可以包括值TagObject,如以下所讨论的,这个值可以与切口关 联,但是更一般地说与一串(a thread of)匹配对象关联,其中切口定 义为叉子42A和42B要在托盘停止的高度。切口本身有一个标记 Tagcutout。如下所述,在满足评分的候选对象的某些条件的任何时候或者 当TagObject等于Tagcutout时切口被更新。

Yw坐标可以用于指物理世界中车辆20操作的高度。对于所有评分 的候选对象利用这个信息,图像分析计算机可以计算切口位置信息,如 以下所讨论的,该信息可以传送到车辆计算机50,用于控制诸如像叉子 放置和移动的操作。例如,一旦评分的候选对象已经在当车辆叉子42A 和42B处于不同高度时分别由成像照相机130获得到的两个不同图像帧 中被识别出来,评分的候选对象相对于世界坐标原点2706的托盘向量, 或者说当前位置,(XW,YW,ZW)就可以估计。如以上所讨论的,可以提 供一个编码器来响应于叉架装置40相对于第三焊件36的移动而向车辆 计算机50生成脉冲,其中第三焊件相对于世界坐标原点2706是固定的, 从而允许车辆计算机50确定叉子42A和42B及成像照相机130沿桅杆 组件30的长度的线性移位。由此,叉子42A和42B相对于世界坐标原 点2706的位置可以通过车辆计算机50提供给图像分析计算机110。因 为车辆计算机50为图像分析计算机110提供值ty,所以图像分析计算 机110可以通过把ty和tbias的值求和来确定成像照相机130相对于世界 坐标原点2706的位置。如下所述,用于成像照相机130当前视场内的 评分的候选对象的托盘向量可以被图像分析计算机110用于计算“切 口”,即托盘内叉子接纳开口210和212相对于世界坐标原点2706的高 度,叉子42A和42B在这个位置停止。然后,图像分析计算机110可 以周期性地把这个切口位置信息发送到车辆计算机50。例如,切口位置 信息可以在它每次被更新时传送,或者带切口信息的消息可以按预定的 周期性调度传送。

如以上所指出的,在操作中,操作人员经多功能控制器14的致动 在Y方向垂直地把叉子42A和42B提升到高于最后一个要被忽略的托 盘P的位置。然后,在叉子42A和42B仍然移动的同时,操作人员致 动触发器开关140。独立于触发器开口140的致动,当叉架装置40继续 垂直移动时,图像分析计算机110使成像照相机130拍摄图像帧,诸如 以10-30fps(帧/秒)的速率。图像分析计算机110分析图像、识别图 像帧中的一个或多个对象、确定这多个图像帧中哪个最有可能包括托盘、 跟踪这多个图像帧中的一个或多个对象、确定这一个或多个对象相对于 世界坐标原点2706的位置并且以切口位置值的形式生成对象位置信息 并向车辆计算机50发送。在接收到这种切口位置值之后,车辆计算机 50控制叉子移动,使得一旦触发器开关140被致动,它就在新的第一当 前停止高度或切口位置值自动地停止叉子。

应当指出,叉子可以在其自动停止的一个或多个高度或切口位置值 可以由图像分析计算机110计算。例如,新的第一停止高度可以与具有 最接近车辆20的目前叉子高度的垂直高度的评分的候选对象关联。而 且,还可以计算分别对应于该新的第一停止高度之上评分的候选对象的 附加停止高度。

如所提到的,这些停止高度习惯上可以被称为“切口”或“切口位 置值”,并且图像分析计算机110可以,例如,计算分别对应于当前叉 子位置附近的第一评分的候选对象、高于第一评分的候选对象的第二评 分的候选对象和高于第二评分的候选对象的第三评分的候选对象的三个 不同的切口(或者更多或更少)。特别地,如以下更详细描述的,切口 可以设置成等于与来自ExistingObjectlist中其记录的评分的候选对象关 联的当前Yw,或者以别的方式从其计算。因此,每个切口都固有地与 用于设置那个特定切口值的一个特定评分的候选对象关联。如以上所提 到的,每个评分的候选对象还在ExistingObjectlist中它的记录当中具有 标记值TagObject。因此,除了仅仅维持一个或多个切口值,每个切口值还 具有对应的标记值TagCutout,这个值等于用于设置切口值的评分的候选 对象的TagObject

图29A-29F绘出了根据本发明原理用于计算切口的示例性方法的流 程图。如以上所提到的,一个或多个切口位置值可以随后被车辆计算机 50连同触发器开关140一起用于控制叉子42A和42B的移动。特别地, 在叉子42A和42B提升的同时,触发器开关140的致动将使车辆计算 机50首先减慢叉子42A和42B提升的速度(例如,减慢至大约14英 寸/秒),然后使叉子42A和42B在由图像分析计算机110提供的新的第 一停止高度或切口位置停止,如以下关于步骤2982将要讨论的。如以 下关于图29A-29F的方法解释的,这个新的第一切口位置值是由图像分 析计算机110计算出的调整后的切口值,其最接近并且大于叉子42A和 42B的当前高度。

首先,在步骤2902,作为开始图像获得、对象定位以及对象跟踪初 始化步骤的一部分,图像分析计算机110也把所有切口初始化为等于零。 其次,有一个调整后的切口值,如以下所描述的,该值被图像分析计算 机用于把第一切口值调整到新的第一切口位置值并且这也被初始化成零。 在所说明的实施例中,定义新第一切口位置值的调整后的切口值等于第 一切口值相对于世界坐标原点的估计高度加1.5英寸,并且基于其值也 相对于世界坐标原点的对应评分的候选对象的托盘向量(Xw,Yw,Zw)的 Yw坐标。(见例如图27A的托盘位置2704。)在所说明的实施例中,1.5 英寸的附加量对应于3英寸高的叉子接纳开口210和212并且添加到切 口位置值,从而确保叉子42A和42B进入叉子接纳开口210和212并 且不接触底部托盘板200。而且,一个计数器(COUNTER)被初始化, 其中该计数器具有反映是否应当对第一切口进行调整以达到要传送到车 辆计算机50的调整后切口值的确定性或置信度的值。此外,贯穿图 29A-29F的过程所使用的其它值也在步骤2902中初始化。如以上所指 出的,在操作中,车辆计算机50基于操作人员经多功能控制器14的控 制输入移动卡车叉子。这种叉子移动在流程图中作为步骤2904绘出, 并且在给定的时刻叉子处于特定的“叉子高度”。车辆计算机50可以把 这种信息传送到图像分析计算机110,以允许图像分析计算机110执行 以下所述的切口计算。

如以上所指出的,首先,所有切口值都等于零。但是,如以下所描 述的,切口值最终设置成等于或者几乎等于特定评分的候选对象的高度 (例如,Yw坐标)。如所提到的,图像分析计算机110可以维护多个切 口。在图29A-29F的示例流程图中,维护三个切口。第一个切口关于当 前的切口高度或当前的切口位置值,而第二个和第三个切口关于在第一 个切口之上的切口高度。

一旦图像分析计算机110具有可用于一个或多个评分的候选对象的 托盘向量,计算机110就知道了那些一个或者多个评分的候选对象在Y 方向相对于世界坐标原点的距离。一旦计算机110知道了一个或多个评 分的候选对象相对于世界坐标原点的高度,图29A-29F的过程的后续步 骤就将基于那些各个评分的候选对象设置三个切口值中的一个或多个。 一旦车辆的叉子42A和42B被提升至当前的第一切口位置值(例如, cutout[0])之上,当前的第一切口值就不再需要并且第二切口位置值可 以变成第一切口值。依次,第二切口值可以设置成等于第三切口位置值 并且第三切口值被初始化为等于零。如后面描述的(在步骤2946中), 在某些条件下,第三切口也可以设置成新的值。以这种方式,图像分析 计算机110可以维护三个切口值,但是它们被更新,以确保所有三个切 口值都在叉子42A和42B的当前高度之上。因为在评分的候选对象的 实际高度(例如,其Yw坐标)中会存在某种不确定性,所以图像分析 计算机110可以进行检查,来看第一切口值是否小于当前叉子高度减去 一个小的量,例如,(“叉子高度”-1.5英寸(“放至中心值”)),而不是 确定第一切口值是否精确地小于当期的“叉子高度”。基于步骤2906中 的这种确定,图像分析计算机110可以在步骤2908中偏移切口值,如 以上所描述的,或者直接前进到步骤2910。在步骤2902中初始化的计 数器与当前第一切口值中的置信度(CONFIDENCE)关联。因而,一 旦在步骤2908中当前的第一切口值被丢弃并且用当前的第二切口值代 替,这个计数器就也重新初始化。而且,在步骤2908中,不同切口的 对应标记值(例如,Tagcutout[k])可以类似于切口值偏移的方式向左偏 移。

步骤2910中所发生的动作可以在图29A-29F中所绘出的过程的逻 辑流之外发生。但是,在图29B中绘出是为了指示步骤2910的动作发 生,使得这个动作的结果可以在流程图随后的步骤中使用。特别地,在 步骤2910中,图像分析计算机110确保在每个新的评分的候选对象首 次添加到ExistingObjectlist时,用于那个对象的记录包括用于TagObject的相应的值。

如步骤2902中所示,值next_Tag初始化为等于一。当真正第一个 (very first)评分的候选对象添加到ExistingObjectlist时,在步骤 2910中其对应的TagObject值设置成等于next_Tag(即,设置成等于 “1”)。用于next_Tag的值也在步骤2910中递增,使得添加到 ExistingObjectlist的下一个新识别出的评分的候选对象(即,见图23E 的步骤2384)的TagObject值通过步骤2910设置成等于next_Tag(即, 设置成等于“2”)。因而,步骤2910的动作代表添加到 ExistingObjectlist的每个新识别出的对象如何基于next_Tag的当前值 被分配唯一的“标记”值。

在步骤2912中,图像分析计算机110识别ExistingObjectlist中满 足要成为切口候选的某个标准的n个评分的候选对象。例如,a)合成 对象得分,ScoreObject,大于预定阈值(例如,0.5),或者标记值TagObject等于当前与第一个切口cutout[0]所关联的标记Tagcutout[0],以及b)Yw坐标大于预定最小高度(例如,35英寸)并大于当前“叉子高度”(叉 子高度-1.5英寸)并且Zw坐标大于零的那些评分的候选对象可以被识 别为用作用于设置切口值的切口候选的可能的评分的候选对象。如果没 有识别出这种切口候选,则图像分析计算机可以继续步骤2968。

如关于图24B所讨论的,在ExistingObjectlist中,图像分析计算 机110可以用相应的索引值唯一地指每个评分的候选对象并且,因此, 在步骤2912结束时,可以识别出一个这些索引值的列表,其中这些索 引值引用ExistingObjectlist中作为用于设置切口值的可能候选而保留的 那n个评分的候选对象。如步骤2916中所示,图像分析计算机110可 以为在该列表中具有索引值的剩余评分的候选对象中每一个执行多个步 骤。一旦这些评分的候选对象,或者切口候选,全都用过了,该过程的 这个部分就完成了并且,在步骤2966中,图像分析计算机继续步骤 2970。如随后关于步骤2922所描述的,存在确定在每个切口预定距离 内是否有切口候选是有益的情况。因而,在步骤2914中,在步骤2916 的循环开始之前,值cutoutFound[k]被初始化。如下所述,用于 cutoutFound[k]的实际值将反映对cutout[k]步骤2922是否满足。

在步骤2918中,对于剩余评分的候选对象或切口候选中特定的一 个,图像分析计算机110为三个切口中每一个循环通过并且执行多个步 骤。在步骤2920中,图像分析计算机110确定当前的切口值是否已经 设置,或者换句话说,是否是不等于零的当前切口值。如果当前切口值 已经设置,则图像分析计算机110继续步骤2922。如果当前切口值还没 有设置,则图像分析计算机继续步骤2938。

在步骤2922中,图像分析计算机110确定,与步骤2916中所启动 循环的当前迭代的评分的候选对象的Yw相比,当前切口值是否在预定 的高度差内。切口可以一般性地称为数组cutout[j],其中j=0,1或2 (在其中有三个切口的例子中)。因而,在步骤2922中,图像分析计算 机可以确定是否|cutout[j]-Yw|<15英寸。如果是,则图像分析计算机可 以执行步骤2924、2926和2928。如果不是,则图像分析计算机110继 续步骤2950,以便,如果可用的话,移动到下一个切口值(即,cutout [j+1])。通常,将只有一个切口在当前评分的候选对象的15英寸内。假 设没有托盘彼此接近超过预定的距离(例如,15英寸)。因而,如果有 多于一个评分的候选对象接近一个特定的当前切口值超过预定的距离, 则图像分析计算机110在步骤2924中识别出高度Yw最接近当前切口值 的切口候选(即,步骤2912中所确定的那n个评分的候选对象)并且 使用用于这个识别出的评分的候选对象的来自ExistingObjectlist记录的 属性来潜在地更新当前切口值,cutout[j]。

特别地,在步骤2926中,用于识别出的最接近的切口候选的Yw值 被用于设置best_Cutout[j]的值。用于best_Cutout[j]的这个值代表比其 当前值可能更准确的cutout[j]值。因为步骤2926可以潜在地对n个不 同的切口候选中的每一个重复,所以用于best_Cutout[j]的值可以在步 骤2916中启动的循环的随后迭代中改变。因为cutout[j]还具有关联的 Tagcutout[j],所以还有一个值best_cut_tag[j],这个值设置成对应于用于 设置best_Cutout[j]的最接近的识别出的切口候选的Tagcutout值。

因而,在步骤2924中,图像分析计算机110识别其Yw值最接近当 前切口,即在步骤2922中识别出的cutout[j],的切口候选。例如,如 果用于当前切口候选的Yw在如步骤2922中所确定的cutout[2]的15英 寸内,则图像分析计算机110确定(来自步骤2912的)哪个切口候选 具有最接近cutout[2]的当前值的相应Yw值。一旦识别出这个最接近的 切口候选,其Yw值就用于设置best_Cutout[2],这有可能是用于 cutout[2]的更好的值。例如,best_Cutout[2]可以部分依赖于用于 cutout[2]的当前值并且部分依赖于所识别出的Yw值。用于设置 best_Cutout[2]的值的一个可能的公式,如步骤2926中所示出的,可以 是:

best_Cutout[2]=0.5x(cutout[2]+YW)

在步骤2928中,图像分析计算机110确定在步骤2922中识别出的 切口是否是第一个切口。如上所述,三个切口可以作为数组存储 (cutout[0]、cutout[1]、cutout[2])并且它们对应的标记值Tagcutout也 可以作为数组存储(Tagcutout[0]、Tagcutout[1]、Tagcutout[2])。图像分析计 算机110可以通过检查其在所存储数组中的索引值来确定在步骤2922 中识别出的一个cutout[j]是否是第一个切口。如果所识别出的切口不是 第一个切口,则图像分析计算机110继续步骤2932,其中 cutoutfound[j]设置成等于1,然后继续在步骤2918中开始的循环。如 果所识别出的切口是第一个切口,则在步骤2930中之前计算出的并且 与这个第一切口关联的前一置信值基于步骤2924中被识别为最接近这 个切口值的切口候选的合成对象得分Scorecutout来调整。例如,“置信” 值可以根据下式来计算:

置信度=0.5(前一置信度+合成对象得分(i.e.,ScoreObiect))

一旦计算出置信值,图像分析计算机110就继续步骤2932,以继续 在步骤2918中开始的循环。在步骤2932中,图像分析计算机110把用 于cutoutfound[j]的值设置成等于1,如以上所指出的,从而指示对于 cutout[j]步骤2922是满足的。图像分析计算机110继续步骤2950,以 便,如果可用的话,移动到下一个切口值(即,cutout[j+1])。

如果在步骤2920中当前的cutout[j]被识别为还没有设置,则图像 分析计算机110在步骤2938中确定当前对象,即在步骤2916中所启动 循环的当前迭代的评分的候选对象,的Yw是否大于叉子高度。如果不 是,则用于当前切口值cutout[j]的当前循环完成并且索引值“j”在步 骤2950中递增,使得,如果例如在步骤2952中递增后j的值小于三, 则利用新切口值的新迭代可以在步骤2918中开始。当在步骤2938中比 较Yw与叉子高度时,把一个相对小的预定值添加到叉子高度可能是有 益的,使得,例如,图像分析计算机110可能确定是否Yw>(叉子高度 +5英寸),而不是与确切的叉子高度值进行严格的比较。

但是,如果步骤2938的标准被满足,则图像分析计算机110继续 步骤2940。在步骤2940中,图像分析计算机110确定第一个切口是否 在零和在步骤2916的这次特定迭代中使用的特定评分的候选对象或切 口候选的Yw值之间。如果在,则图像分析计算机110在步骤2942中把 第二切口值设置成等于用于这个特定评分的候选对象的Yw值并且把切 口标记值Tagcutout[1]设置成用于这个特定评分的候选对象的Tagobject值。 然后,图像分析计算机移到步骤2950,使得,如果例如在步骤2952中 递增后j的值小于三,则利用新切口值的新迭代可以在步骤2918中开 始。如果步骤2940的标准没有满足,则图像分析计算机110前进到步 骤2944。

在步骤2944中,图像分析计算机110确定第一切口是否大于在步 骤2916的这次特定迭代中使用的特定评分的候选对象或切口候选的Yw。 如果是,则在步骤2946中,图像分析计算机110向右偏移这三个切口, 使得第三个切口值设置成当前的第二切口值,第二切口值设置成当前的 第一切口值,而第一切口值设置成等于Yw。图像分析计算机还以类似 的方式偏移对应的第一、第二和第三Tagcutout值。此外,图像分析计算 机110还基于用于当前考虑的评分的候选对象或切口候选的合成对象得 分来根据下式为新的第一切口值设置置信得分:

置信度=ScoreObject

一旦切口值及其相应关联的标记值在步骤2946中偏移并且置信得 分已设置,图像分析计算机110就继续步骤2950,使得,如果例如在步 骤2952中递增后j的值小于三,则利用新切口值的新迭代可以在步骤 2918中开始。如果在步骤2944中图像分析计算机110确定第一切口值 不大于Yw,则图像分析计算机110在步骤2948中把第一切口设置成等 于在步骤2916的这次特定迭代中使用的特定切口候选的Yw值,把第一 切口标记值,Tagcutout[0],设置成等于用于这个特定切口候选的Tagobject值,把用于第一切口的“置信”值设置成等于用于这个特定切口候选的 合成对象得分,Scoreobject,并且继续步骤2950,使得,如果例如在步 骤2952中递增后j的值小于三,则利用新切口值的新迭代可以在步骤 2918中开始。步骤2948通常在第一切口值等于“0”时到达。这种情况 会在以下时候发生:当所有切口值最初都设置成等于“0”时或者,在 步骤2908中,如果发生切口值的右移导致“零”值分配给第一切口值。 最终,步骤2950的重复执行将导致用于在步骤2918中启动的循环的索 引值,j,等于步骤2952中切口值的个数(例如,三)。在这种情况下, 步骤2918的循环完成并且,在步骤2954中,识别出新的切口候选索引 值i,在步骤2956中,i用于在步骤2916中启动的循环的下一次迭代。 最终,i在步骤2956中递增,直到其超过步骤2956中切口候选的个数 n。在这种情况下,步骤2916的循环完成并且图像分析计算机继续步骤 2958。

在步骤2958中,启动通过不同切口值(例如,j=0至2)的循环。 首先,在步骤2960中,图像分析计算机110确定cutoutfound[j]是否不 等于零。当对cutout[j]步骤2922满足至少一次时,这个标准为真。因 此,用于cutout[j]的可能更好的值也被计算为best_Cutout[j],它具有 对应的标记值best_cut_tag[j]。因此,在步骤2962中,cutout[j]和 Tagcutout[j]被更新,以分别反映best_Cutout[j]和best_cut_tag[j]的值。

一旦步骤2962完成,或者如果在步骤2960中cutout[j]等于“0”, 图像分析计算机110就在步骤2964中递增j并且,如果,如步骤2966 所确定的,还有剩余的切口,则循环返回步骤2958。一旦步骤2958的 循环对所有切口完成,则图像分析计算机110继续步骤2970。

如果在步骤2912中没有对当前叉子高度识别出可能的评分的候选 对象,则图像分析计算机110继续步骤2968。在步骤2968中,减少与 第一个切口关联的置信值。例如,新的置信值可以根据下式计算:

置信度=0.5(置信度).

一旦在步骤2968中调整了置信得分或者一旦2958的循环的所有步 骤完成,图像分析计算机110就继续步骤2970。特别地,如果图像分析 计算机110在步骤2970中确定用于第一切口的置信值高于预定阈值 (例如,0.5),则与该置信值关联的计数器可以,例如,在步骤2972中 递减。例如,如果该计数器设置成等于三并且在每次置信值高于预定阈 值的时候递减,则第一切口所遇到的较高置信值次数越多,计数器的值 越低。本领域普通技术人员将认识到,这个计数器值可以变化并且可以, 例如,大于三(例如,五)或者小于三(例如,一)。

如果置信值不高于预定阈值,如在步骤2970中所确定的,或者一 旦计数器被调整,如在步骤2972中,则图像分析计算机110在步骤 2974中确定第一切口值是否大于零。如果是,则用于第一切口的调整后 的第一切口值由图像分析计算机110在步骤2976中计算。例如,调整 后的第一切口值可以根据下式计算:

调整后的值=cutout[0]+1.5英寸

其中预定的偏移量(例如,1.5英寸)添加到用于cutout[0]的值。 一旦在步骤2976中计算出调整后的值或者如果,如在步骤2974中所确 定的,第一切口值不大于零,则图像分析计算机110继续步骤2978。在 步骤2978中,图像分析计算机110确定计数器是否大于预定的值。如 果例如计数器值大于零,则没有发生高于预定阈值的最小个数的“置信” 值(见步骤2970和2972)。在这些条件下,图像分析计算机110在步骤 2980中把调整后的值复位成等于零并且通过返回步骤2904来重复该过 程。

但是,如果计数器值指示已经发生了高于预定阈值的最小个数的 “置信”值,则图像分析计算机110在步骤2982把“调整后的”值 (例如,第一切口值+1.5英寸)传送到车辆计算机50,作为新的第一 切口位置或停止高度,并且还可以传送第二和第三切口值。然后,通过 返回步骤2904,该过程重复。

以上描述假设叉子向上提升并且操作人员期望叉子停止在下一个更 高的切口。但是,本领域普通技术人员将认识到,图29A-29F的算法可 以修改成在叉子向下行进并且操作人员期望叉子停止在下一个更低的切 口的时候也适当地操作。

评分的候选对象可以通过一系列图像帧被检测和跟踪的准确度可以 通过执行照相机的内在和外在校准来改进。如前面所提到的,内在照相 机矩阵具有形式:

[K]=fxγx00fyy0001

其中:

(x0,y0)是照相机的中心2714并且是图像平面2712上照相机中心(或 者照相机坐标系统原点)2708根据针孔照相机模型投影的像素位置;

fx是以x方向,或水平的,像素相关的单位表示的焦距f;及

fy是以y方向,或垂直的,像素相关的单位表示的焦距f,及

γ代表x和y轴之间的歪斜因子,并且常常是“0”。

用于这个矩阵的元素的值可以利用已知的照相机后方交会技术确定, 并且可以作为照相机制造过程的一部分来执行。至于成像照相机130的 外部校准,其它技术对于确定前面讨论过的外在照相机矩阵[Rcam  |Tcam] 的值是有用的。由于这些值可以依赖于照相机相对于车辆20安装的具 体方式,因此外在校准可以有益地在车辆20将被使用的地点执行。例 如,可以为以下的量确定值:

tybias(成像照相机130以及叉子42A和42B的位置之间的固定垂直 偏移量),

txbias(成像照相机130和世界坐标原点2706的位置之间的固定水平 偏移量),

θx(照相机坐标系统相对于X轴2707的旋转,称为仰角,在图 27A中指定为θe)。理想地,仰角可以在叉子42A和42B具有零倾斜角 的时候被校准。如以上所指出的,如果叉子42A和42B的倾斜角θef不 为零,则成像照相机130的整体仰角θe=(θecef)将包括由于叉子42A 和42B倾斜造成的部分θef和由于照相机130倾斜造成的部分θec,其中 θef可以由与车辆计算机50通信的倾斜角传感器提供,

θy(照相机坐标系统相对于Y轴2711的旋转,称为螺旋角),及

θz(照相机坐标系统相对于Z轴2705的旋转,称为偏转角)。

初始估计可以分配给这些值,以便开始外在照相机校准过程。例如, 当只考虑仰角时,估计的θx初始值可以是0度,并且用于tybias的初始 估计值可以是成像照相机130离叉子42A和42B的物理实测高度。水 平偏移量txbias、螺旋角和偏转角可以认为等于零。利用这些初始估计值, 可以在已知的或实测的世界几何结构的图像中获得多于一个评分的候选 对象(即,潜在的托盘)。例如,基于多于一个托盘相对于世界坐标原 点2706的相应手动预先测出的距离和高度,对应的世界坐标位置(Xw, Yw,Zw)可以确定(其中,当只有仰角非零并且照相机在X方向没有平 移偏移量(即,txbias=0)时,Xw的值可以不必测量,如以下更完全描述 的),其中,如以上指出的,世界坐标原点2706位于车辆10上已知的 位置。作为替代,可以实现类似的技术,该技术使用来自从不同照相机 位置拍摄的多个图像帧中关于单个潜在托盘的相应的测量信息。

图30绘出了用于一个示例场景的一系列图像帧中的一个图像帧, 在该场景中,三个潜在的托盘位置3002、3004、3006已经被成像照相 机130捕捉并且投影到图像平面3010上,作为三个相应的像素位置 3012、3014和3016。还有可能从其中角落位置取代下部纵梁点的多个 棋盘视图(from multiple views of chessboards)获得校准数据。如前面 所讨论的,这些像素位置的变形可以被校正,使得位置3012、3014和 3016处于未变形的图像空间中。在所绘出的场景中,以下值已经确定:

当捕捉图像帧3010时叉子的平移,ty,可以从车辆计算机50确定;

第一个潜在的托盘位置3002投影到未变形的图像像素位置(x1,y1) 3012并且相对于世界坐标原点进行测量,以便具有对应的世界坐标位置 (X1,Y1,Z1);

第二个潜在的托盘位置3004投影到未变形的图像像素位置(x2,y2) 3014并且相对于世界坐标原点进行测量,以便具有对应的世界坐标位置 (X2,Y2,Z2);及

第三个潜在的托盘位置3006投影到未变形的图像像素位置(x3,y3) 3016并且相对于世界坐标原点进行测量,以便具有对应的世界坐标位置 (X3,Y3,Z3)。

在只有仰角(即,θx)的配置中,公式23的第二个线性公式提供 公式41A(其中θx表示仰角):

yrow(Ywsinθx+Zwcosθx)-Yw(fycosθx+y0sinθx)-Zw(-fysinθx+y0cosθx)=fy(ty+tybias)

这个公式可以重新整理,以提供在执行外在照相机校准时有用的第 一公式。特别地,公式41A可以重新整理成公式41B

cosθx(-fyYw+(yrow-y0)Zw)+sinθx((yrow-y0)Yw+fyZw)=fy(ty+tybias)

如前面所提到的,仰角θx可以包括来自成像照相机130的倾斜角的 一部分θec和来自叉子42A和42B的角度的一部分θef,使得:

θx=θecef

第二个公式可以从公式42的众所周知的三角原理导出:

cos2θec+sin2θec=1.

利用这两个公式,用于tybias和θx的适当的值可以利用以下所述的 迭代过程确定。一般而言,该迭代过程首先基于公式41B和公式42定 义两个残差函数。特别地,这两个残差函数由公式43A定义:

f=fy(ty+tybias)-cosθx(-fyYw+(yrow-y0)Zw)-sinθx((yrow-y0)Yw+fyZw)

但是,公式43A可以关于多于一个潜在的托盘(或者评分的候选对象); 因而,它可以更一般性地写成公式43B

f(i)=fy(ty+tybias)-cosθx(-fyYi+(yi-y0)Zi)-sinθx((yi-y0)Yi+fyZi)

其中i是用于区分可以在图像帧3010中观察到的不同评分的候选对象 (例如,3002、3004、3006)的索引。在公式43B中,每个这种评分的 候选对象都具有相应的残差公式f(i)并且具有相应的手动测量的世界坐 标位置(Xi,Yi,Zi)以及图像像素位置高度值yi。公式43B的格式可以 通过把它写成公式43C来简化:

f(i)=fy(ty+tybias)-cosθx(qi)-sinθx(ri)

其中:

qi=(-fyYi+(yi-y0)Zi)

ri=((yi-y0)Yi+fyZi)

利用两个几何恒等式:

cos(θx)=cos(θecef)=cos(θec)cos(θef)-sin(θec)sin(θef)

sin(θx)=sin(θecef)=sin(θec)cos(θef)+cos(θec)sin(θef)

允许公式43C写成公式43D

f(i)=fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](qi)-[sin(θec)cos(θef) +cos(θec)sin(θef)](ri)

基于公式42的第二个残差公式由公式44定义:

ge=1-cos2θec-sin2θec

通过找出每个残差公式相应的根(即,导致f(i)和ge等于零的变量 的那些值),可以计算用于确定外在照相机校准的适当的值。在以上的 记号中,f(i)代表评分的候选对象i的残差公式并且不表示f是独立变量 i的函数。

一般而言,函数w可以利用泰勒(Taylor),或幂,级数(series) (n0+e)在评估,其中:

w(n0+e)=w(n0)+w'(n0)e+1/2w″(n0)e2...

取该级数的前两个项提供w的近似,其中:

w(n0+e)≈w(n0)+w'(n0)e

在这个泰勒近似中,n0可以被认为是函数w的根的初始猜想,而 e是要定位比n0更靠近w的实际根的初始偏移量。设置w(n0+e)=0并 且求解“e”提供了用于偏移量“e”的初始估计值。Taylor级数的这 种使用可以迭代执行,使得“e”的每个前一次计算都在根据牛顿-拉 弗森(Newton-Rhapson)方法求解w的根的下一次迭代中使用。

换句话说,利用对w的根的当前猜想,n(t),提供:

0≈w(n(t))+w′(n(t))*e(t)

然后,这可以根据下式被求解,以估计在迭代算法中使用的偏移 量或“步进”的值:

-w(n(t))w'(n(t))e(t)

利用新计算出的对步进e(t)的估计,对w的根的更新后的猜想 n(t+1)由下式提供:

n(t+1)=n(t)+e(t)

就是这个值n(t+1)在计算估计的偏移量或步进值的下一次迭代中 使用。这个迭代过程可以重复,直到e(t)达到预定的阈值。以这种方 式,泰勒级数近似可以迭代地用于求解函数w的根。

对于多变量函数,诸如像w(n,m),泰勒级数近似在点(n0+e1, m0+e2)周围的前两项是通过根据下式取偏导数来形成的:

w(n0+e1,m0+e2)w(n0,m0)+(w(n0,m0)n(e1)+w(n0,m0)m(e2))

对于与这第一种配置中外在照相机校准相关的残差公式,所关心 的变量是cosθec,sinθec和tybias,而且其中每个变量都具有相应的估计的 偏移量p0、p1和p2。如果有至少两个评分的候选对象,则使用上述 关于泰勒级数近似的原理提供以下用于执行外在照相机校准的残差公 式:

公式45A

ge=1-cos2θec-sin2θecf(0)=fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q0)-[sin(θec)cos(θef) +cos(θec)sin(θef)](r0)

f(1)=fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q1)-[sin(θec)cos(θef) +cos(θec)sin(θef)](r1)

如果有附加的评分的候选对象可用,则附加的残差公式也可以使 用;这些附加的残差公式将具有形式:

f(i)=fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](qi)-[sin(θec)cos(θef) +cos(θec)sin(θef)(ri)

其中i指唯一识别评分的候选对象的索引值。

残差公式的相应的泰勒级数近似是公式46A

ge≈1-cos2θec-sin2θec-2cosθec*p0-2sinθec*p1

f(0)≈ fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q0)-[sin(θec)cos(θef)+ cos(θec)sin(θef)](r0)-[q0cos(θef)+r0sin(θef)]*p0-[-q0sin(θef)+r0cos(θef)]*pl+fy*p2

f(1)≈fy(ty+tybias)[cos(θec)cos(θef)-sin(θec)sin(θef)](q1)-[sin(θec)cos(θef) +cos(θec)sin(θef)](r1)-[q1cos(θef)+r1sin(θef)]*p0-[-q1sin(θef)r1cos(θef)] *p1+fy*p2

把来自公式46A的每个公式设置成等于零来求解相应的根提供 了公式47A

2cosθec*p0+2sinθec*p1≈1-cos2θec-sin2θec

[q0cos(θef)+r0sin(θef)]*p0+[-q0sin(θef)+r0cos(θef)]*p1-fy*p2≈fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q0)-[sin(θec)cos(θef) +cos(θec)sin(θef)](r0)

[q1cos(θef)+r1sin(θef)]*p0+[-q1sin(θef)+r1cos(θef)]*p1-fy*p2≈fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q1)-[sin(θec)cos(θef) +cos(θec)sin(θef)](r1)

公式47A的这三个公式可以用矩阵记号写作公式48A

2cosθec2simθec0q0cosθef+r0sinθef-q0sinθef+r0cosθef-fyq1cosθef+r1sinθef-q1sinθef+r1cosθef-fy······p0p1p2=gef(0)f(1)··

其中:

qi=(-fyYi+(yi-y0)Zi)

ri=((yi-y0)Yi+fyZi)

f(i)=fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](qi)-[sin(θec)cos(θef) +cos(θec)sin(θef)](ri)

ge=1-cos2θec-sin2θeC

如所提到的,在图像帧3010中可以有多于仅两个评分的候选对 象,因此,公式48A将具有值qi、ri和fi的附加行。公式48A的通 用形式是公式49A中所示的形式:

[J]p0p1p2=[F]

其中:

[J]=2cosθec2simθec0q0cosθef+r0sinθef-q0sinθef+r0cosθef-fyq1cosθef+r1sinθef-q1sinθef+r1cosθef-fy······and[F]=gef(0)f(1)··

这可以被操纵,以形成公式49B

p0p1p2=([J]T[J])-1[J]T[F]

相应地,公式49B揭示了多个托盘的相应观察和用于 cosθec,sinθec和tybias的相应估计可以用于为向量值p0p1p2提供最小二乘法解 答。这个向量值p0p1p2可以用于根据公式50迭代地更新用于cosθec, sinθec和tybias的相应估计:

cosθec(t+1)=cosθec(t)+p0

sinθec(t+1)=sinθec(t)+p1

tybias(t+1)=tybias(t)+p2

然后,用于cosθec,sinθec和tybias的更新后的估计可以在公式49B中 用于找出p0p1p2的新值。这个迭代过程可以重复,直到每个为p0p1p2计算出 的值都小于预定的阈值。例如,这个预定的阈值可以是10-6。一旦迭 代过程完成,用于cosθec,sinθec和tybias的相应的值就已经根据公式50 计算出来了并且照相机对仰角的贡献,θec,可以从确 定。对于这种实施例,照相机对仰角的贡献,θec和tybias,包括外在照 相机校准值。

在上述配置中,为了让多个托盘观察用于求解两个外在照相机校 准值,θec和tybias,只利用来自公式23的一个线性公式就足够了(连 同ge)。但是,在其中只存在仰角θx的配置中,仍然存在其中txbias≠0 的情况。在这种情况下,手动测量成像照相机130的位置和世界坐标 原点2706位置之间的水平偏移量可以为这个值提供足够的准确度。 但是,执行外在照相机校准以确定用于txbias的校准值也可以实现, 但是将利用除公式48那些之外的附加公式。可以如何定义txbias以便 简化特定托盘位置的Xw坐标的物理测量的完整解释在下面关于其中 既有仰角θx又有偏转角θz的照相机配置来解释。

在其中没有偏转角θz但是txbiax≠0的配置中,公式23的第一个线 性公式由下式给出:

-Xwfx-Ywx0sinθx-Zwx0cosθx+xi(Ywsinθx+Zwcosθx)-fx(txbias)=0

该公式可以重新整理,以提供用于在确定txbias时有用的特定托盘 位置i的附加残差公式:

f*(i)=Xwfx+fx(txbias)-(xi-x0)Zw)cosθx-((xi-x0)Yw)sinθx

其中记号f*(i)用于方便区分这个附加的残差公式与前面讨论过的残差公式f(i)。这个附加的残差公式可以写成公式43E

f*(i)=Xwfx+fx(txbias)-cosθx(qi*)-sinθx(ri*)

其中:

qi*=((xi-x0)Zw)

ri*=((xi-x0)Yw)

同样,利用两个几何恒等式:

cos(θx)=cos(θecef)=cos(θec)cos(θef)-sin(θec)sin(θef)

sin(θx)=sin(θecef)=sin(θec)cos(θef)+cos(θec)sin(θef)

允许公式43E写成公式43F

f*(i)=Xwfx+fx(txbias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](qi*)-[sin(θec)cos(θef)+cos(θec)sin(θef)](ri*)

在这种修改后的第一配置中利用这个关于外在照相机校准的附加 残差公式,所关心的变量是cosθec,sinθec和txbias,而且其中每个变量都 具有相应的估计的偏移量p0、p1和p2。如果有至少两个评分的候选 对象,则使用上述关于泰勒级数近似的原理提供以下用于执行外在照 相机校准的残差公式。

公式45B

ge=1-cos2θec-sin2θec

f(0)=fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q0)-[sin(θec)cos(θef) +cos(θec)sin(θef)](r0)

f*(0)=Xwfx+fx(txbias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q0*)-[sin(θec)cos(θef)+cos(θec)sin(θef)](r0*)

f(1)=fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q1)-[sin(θec)cos(θef) +cos(θec)sin(θef)](r1)

f*(1)=Xwfx+fx(txbias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q1*)-[sin(θec)cos(θef)+cos(θec)sin(θef)](r1*)

如果有附加的评分的候选对象可用,则附加的残差公式也可以使用;

这些附加的残差公式将具有形式:

f*(i)=Xwfx+fx(txbias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](qi*)-[sin(θec)cos(θef)+cos(θec)sin(θef)](ri*)

其中i指唯一地识别评分的候选对象的索引值。

公式45B的残差公式相应的泰勒级数近似是公式46B

ge≈1-cos2θec-sin2θec-2cosθec*p0-2sinθec*p1

f(0)≈ fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q0)-[sin(θec)cos(θef)+ cos(θec)sin(θef)](r0)-[q0cos(θef)+r0sin(θef)]*p0-[-q0sin(θef)+r0cos(θef)]*p1+fy*p2

f*(0)Xwfx+fx(txbias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q0*)-[sin(θec)cos(θef)+cos(θec)sin(θef)](r0*)-[q0*cos(θef)+r0*sin(θef)]*p0-[-q0*sin(θef)+r0*cos(θef)]*p1+fx*p3

f(1)≈ fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q1)-[sin(θec)cos(θef)+ cos(θec)sin(θef)](r1)-[q1cos(θef)+r1sin(θef)]*p0-[-q1sin(θef)+r1cos(θef)]*p1+fy*p2

f*(1)Xwfx+fx(txbias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q1*)-[sin(θec)cos(θef)+cos(θec)sin(θef)](r1*)-[q1*cos(θef)+r1*sin(θef)]*p0-[-q1*sin(θef)+r1*cos(θef)]*p1+fx*p3

类似于前面,把来自公式46B的每个公式设置成等于零来求解 相应的根提供了公式47B

2cosθec*p0+2sinθec*p1≈1-cos2θec-sin2θec

[q0cos(θef)+r0sin(θef)]*p0+[-q0sin(θef)+r0cos(θef)]*p1-fy*p2≈fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q0)-[sin(θec)cos(θef) +cos(θec)sin(θef)](r0)

[q0*cos(θef)+r0*sin(θef)]*p0+[-q0*sin(θef)+r0*cos(θef)]*p1-fx*p3Xwfx+fx(txbias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q0*)-[sin(θec)cos(θef)+cos(θec)sin(θef)](r0*)

[q1cos(θef)+r1sin(θef)]*p0+[-q1sin(θef)+r1cos(θef)]*p1-fy*p2≈fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q1)-[sin(θec)cos(θef) +cos(θec)sin(θef)](r1)

[q1*cos(θef)+r1*sin(θef)]*p0+[-q1*sin(θef)+r1*cos(θef)]*p1-fx*p3Xwfx+fx(txbias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](q1*)-[sin(θec)cos(θef)+cos(θec)sin(θef)](r1*)

公式47B的这五个公式可以用矩阵记号写成公式48B

2cosθec2sinθec00q0cosθef+r0sinθef-q0sinθef+r0cosθef-fy0q0*cosθef+r0*sinθef-q0*sinθef+r0*cosθef0-fxq1cosθef+r1sinθef-q1sinθef+r1cosθef-fy0q1*cosθef+r1*sinθef-q1*sinθef+r1*cosθef0-fx········p0p1p2p3=gef(0)f*(0)f(1)f*(1)··

其中:

qi=(-fyYi+(yi-y0)Zi)

ri=((yi-y0)Yi+fyZi)

qi*=((xi-x0)Zw)

ri*=((xi-x0)Yw)

f(i)=fy(ty+tybias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](qi)-[sin[θec)cos(θef) +cos(θec)sin(θef)](ri)

f*(i)=Xwfx+fx(txbias)-[cos(θec)cos(θef)-sin(θec)sin(θef)](qi*)-[sin(θec)cos(θef)+cos(θec)sin(θef)](ri*)

并且ge=1-cos2θec-sin2θec

然后,公式48可以用与公式48A、49A、49B和50相似的方式 用于迭代地求解三个外在照相机校准值:照相机对仰角的贡献,θec、 txbias和tybias,这包括用于这种具有非零仰角θx和X方向偏移量txbias的 这一修改后的第一种配置的外在照相机校准值。

当仰角θx和偏转角θz都存在时,用于每个托盘位置的所有三个相 应的世界坐标值(Xw,Yw,Zw)都可以用于计算外在照相机校准值。特 别地,用于特定托盘位置的Xw值可以认为相对于参考托盘位置,诸 如像最底部的托盘位置(例如,图30的3006)。为了这么做,水平 偏移量值,txbias,可以按特定的方式定义,以帮助校准过程。如前面 所讨论的,成像照相机130可以按这样一种方式附连到车辆框架,使 得它具有离世界坐标原点2706有偏置值(即,tcx=txbias)的X坐标 值偏移量。在校准过程中,车辆20可以仔细地定位,使得车辆20上 已经被指定为世界坐标原点的位置基本上在X方向与最底部的托盘 位置(例如,图30的3006)对准。因此,水平世界坐标X3可以定 义为等于零并且水平世界坐标X2可以通过测量位于托盘位置3004的 中心托盘纵梁的下部中心和位于托盘位置3004的下部中心托盘纵梁 的中心之间的水平距离获得。用于托盘位置3002的水平坐标X1可以 按类似地方式测量。因此,以下所述的过程将允许确定对txbias的校 准值。

当偏转角也存在时,公式24B的线性公式可以重新整理成为评 分的候选对象i提供公式51A的残差公式:

f1(i)=(xi-x0)sinθxsinθz-fxcosθz)Xi+((xi-x0)cosθzsinθx)Yi+((xi-x0)cosθx)Zi-fxtxbias

f2(i)=(((yi-y0)sinθx-fycosθx)sinθz)Xi+(((yi-y0)sinθx-fycosθx)cosθz)Yi+((yi-y0)cosθx+fysinθx)Zi-fy(ty+tybias)

公式51B提供两个其它的残差公式:

ge=cosθec+sin2θec-1

gd=cos2θz+sin2θz-1

其中θx=θecef

以上关于仅仰角场景描述过的牛顿-拉弗森迭代方法可以按类似 的方式应用到本场景,其中要计算的外在照相机参数是偏转角θz、照 相机仰角θec、x偏置值txbias和y偏置值tybias。对于图像平面3010中 的至少两个潜在托盘位置,矩阵[F’]可以定义为公式52

F=gegdf1(0)f2(0)f1(1)f2(1)··

基于矩阵[F’],对应的雅可比(Jacobian)矩阵[J’]可以根据公式53来计算:

J=cosθecgesinθecgecosθzsinθzgetxbiasgetybiasgecosθecgdsinθecgdcosθzgdsinθzgdtxbiasgdtybiasgdcosθecf1(0)sinθecf1(0)cosθzf1(0)sinθzf1(0)txbiasf1(0)tybiasf1(0)cosθecf2(0)sinθecf2(0)cosθzf2(0)sinθzf2(0)txbiasf2(0)tybiasf2(0)cosθecf(1)sinθecf(1)cosθzf(1)sinθzf(1)txbiasf(1)tybiasf(1)cosθecf2(1)sinθecf2(1)cosθzf2(1)sinθzf2(1)txbiasf2(1)tybiasf2(1)············

只研究[F’]和[J’]的第一行揭示了这些矩阵如何可以用于执行为 仰角和偏转角都存在的这种配置求解外在照相机校准值的迭代过程。 例如,[F’]的第一行提供了:

ge=cos2θec+sin2θec-1

并且[J’]的第一行提供了:

[2cosθec 2sinθec 0 0 0 0]

[F’]的第一行(设置成等于零)的泰勒级数扩展提供了:

0=cos2θec+sin2θec-1+(2cosθec*p0)+(2sinθec*p1)

这可以重新整理,以提供公式54

(2cosθec*p0)+(2sinθec*p1)=-cos2θec-sin2θec+1

因此,与公式49B相似的、用于为这种配置执行外在照相机校 准的公式由公式55A提供:

[J]p0p1p2p3p4p5=-[F]

这个公式可以被操纵,以形成公式55B

p0p1p2p3p4p5=-([J]T[J])-1[J]T[F]

因此,公式55B揭示了多个托盘的相应观察以及用于 cosθec,sinθec,cosθz,sinθz,txbias和tybias的相应估计可以用于为向量值p0p1p2p3p4p5提 供最小二乘法解答。这个向量值p0p1p2p3p4p5可以用于根据公式56A迭代地更 新用于cosθec,sinθec,cosθz,sinθz,txbias和tybias的相应估计:

cosθec(t+1)=cosθec(t)+p0

sinθec(t+1)=sinθec(t)+p1

cosθz(t+1)=cosθz(t)+p2

sinθz(t+1)=sinθz(t)+p3

txbias(t+1)=txbias(t)+p4

tybias(t+1)=tybias(t)+p5

然后,更新后的用于cosθec,sinθec,cosθz,sinθz,txbias和tybias的估计可以在 公式55B中用于为p0p1p2p3p4p5找出新值。这个迭代过程可以重复,直到每个 为p0p1p2p3p4p5计算出的值都小于预定的阈值。例如,这个预定的阈值可以是 10-6。一旦迭代过程完成,用于cosθec,sinθec,cosθz,sinθz,txbias和tybias的相 应的值就已经计算出来并且照相机对仰角的贡献θec可以从 确定,而偏转角θz可以从确定。对于这种实 施例,照相机对仰角的贡献θec、偏转角θz、txbias和tybias包括外在照相 机校准值。

多个上述公式是非线性的并且各种技术可以用于迭代过程以帮助 收敛到用于外在照相机校准值的解答。首先,用于向量[P]=p0p1p2p3p4p5的范 数||P||的允许的最大值maxSizefp可以任意选择,从而根据以下公式57限制或调整[P]的尺寸:

其中,例如,maxSizefp=10;

[P’]潜在地包括缩放后的向量[P];及

向量[P]的范数||P||可以是,例如,欧几里德范数,使得 ||P||=p02+p12+p32...+pn2..

用于避免上述迭代过程中发散的另一种技术涉及规定减小为每次 迭代计算出的偏移量或步进值(例如,pn)影响的步进尺寸。在这个 例子中,向量[P]=p0p1p2p3p4p5具有六个元素并且,因此,代表6维空间中的 特定方向。为了方便,这个方便被称为牛顿方向。这个向量[P]也代 表用于为公式56A计算更新后的值的“步进”,并且可以方便地被 称为牛顿步进。在有些情况下,使用在牛顿方向中的完全牛顿步进以 便在牛顿-拉弗森方法中计算下一个迭代值不能提供最好的结果。虽 然牛顿方向可以假设为是在其中作出步进的正确方向,但是在有些情 况下,减小那个步进的量可以比使用完全牛顿步进更好。因此,可以 计算与[P]相乘的“步进尺寸”λ(其中0<λ≤1),以便确定可以用于 为公式56A计算更新后的值的修改后的牛顿步进(例如,λ[P])。

特别地,这种技术涉及在牛顿-拉弗森方法的每次迭代执行线搜 索,以确定在更新公式56A的值时要使用的步进尺寸λ。特别地,公 式56A暗示使用完全牛顿步进或者,换句话说,在每次迭代使用 λ(t)=1的步进尺寸。但是,如所提到的,具有0和1之间的值的较小 的步进尺寸(例如,0<λ(t)≤1)可以使用,这提供了公式56B

cosθec(t+1)=cosθec(t)+λ(t)p0

sinθec(t+1)=sinθec(t)+λ(t)p1

cosθz(t+1)=cosθz(t)+λ(t)p2

sinθz(t+1)=sinθz(t)+λ(t)p3

txbias(t+1)=txbias(t)+λ(t)p4

tybias(t+1)=tybias(t)+λ(t)p5

如本领域中已知的,例如在Numerical Recipes in C:The Art of  Scientific Computing(2nd ed.),Press,et al.,1992,Cambridge University Press, New York,NY,USA当中,关于一个点的线搜索首先使用下降方向,目 标函数沿着该方向将减小,然后计算决定在那个方向移动多远的步进 尺寸。步进尺寸代表最小化或者总体上减小目标函数期望的量的、离 起点的距离。在上述用于外在照相机校准的一个示例目标函数[E]由 公式58提供:

[E]=12[F]T[F]

线搜索技术的目标是找出步进尺寸λ,使得[E]相对于前一个值 减小足够的量。如随后所描述的,减小量的“足够性”是通过用于特 定线搜索策略的接受条件定义的。一般而言,线搜索首先利用全牛顿 步进(即,λ=1)基于[E]计算一个值,并且确定是否满足接受条件。 如果满足,则线搜索完成。如果不满足,则在每次后续的迭代中,线 搜索通过使用较小的λ值沿着在牛顿方向延伸的线回溯。这个过程可 以用越来越小的λ值重复,直到满足接受条件。

各种不同的线搜索技术都可以使用,诸如像内插线搜索、二等分 线搜索、试位法(Regula-Falsi)线搜索、割线线搜索,等等。以下 更完整地解释一种示例线搜索技术,Armijo Rule线搜索。在这个例 子中,λ(t)指为牛顿-拉弗森方法的当前迭代计算的最终步进尺寸。但 是,线搜索方法本身也是迭代的并且索引符号“n”指线搜索的当前 迭代。

如以上所提到的,线搜索首先基于目标函数[E]计算一个值。在 牛顿-拉弗森方法的特定迭代,函数[E]可以利用当前的迭代值和当前 的牛顿步进但是利用用于步进尺寸λ的不同测试值来计算。因而,对 于迭代t,目标函数[E]可以被认为是依赖于步进尺寸λ的值的函数。 特别地,在成像照相机130的这种特定配置中,由牛顿-拉弗森方法 从公式56B计算出的迭代值连同牛顿步进[P]一起可以用于定义公式56C

[V(n+1)]=[V(n)]+λ(n)[P]

其中[V(n+1)]=cosθec(n+1)sinθec(n+1)cosθz(n+1)sinθz(n+1)txbias(n+1)tybias(n+1)并且[V(n)]=cosθec(n)sinθec(n)cosθz(n)sinθz(n)txbias(n)tybias(n)

公式56C揭示了用于确定[F](并且因此也确定[E])的值[V(n)] 如何基于所选的特定步进尺寸λ(n)而变。特别地,在公式56C中, 用于[V(n)]的值对应于用于牛顿-拉弗森方法的当前迭代的迭代值,而 [P]是从牛顿-拉弗森方法的当前迭代开始的牛顿步进。因此,对于线 搜索的特定迭代n,用于步进尺寸λ(n)的变化的值被测试,这导致在 为[E]计算值时所使用的不同的[V(n+1)]值。因而,用于牛顿-拉弗森 方法的特定迭代的线搜索函数G(λ)可以根据下式定义:

G(λ)=[E]

其中G(λ)表示G是步进尺寸λ的函数,而[E]表示用于牛顿-拉 弗森方法的迭代t的目标函数[E]的值。

G(λ)的一阶近似由公式56D给出:

G^(λ)=G(0)+λϵdG(0)

利用全牛顿步进,线搜索利用n=1和λ(1)=1开始。线搜索迭代 地确定是否满足接受条件:如果满足,则λ(n)被认 为是可接受的步进尺寸并且在公式56B中用作λ(t)。但是,如果该不 等式失败,则根据下式减小步进尺寸:

λ(n+1)=λ(n)2

并且线搜索利用新的迭代继续。公式56D中用于ε的值可以任 何选择成在0和1之间,诸如像ε=0.5。

因而,前面关于公式56A所述的牛顿-拉弗森方法迭代过程可以 对每次迭代t修改,以便如前面所描述过的,根据下式帮助通过首先 为公式55B计算解答来确保收敛:

p0p1p2p3p4p5=-([J]T[J])-1[J]T[F]

但是,在使用这些值更新用于用在下一次迭代(t+1)中使用的 cosθec,sinθec,cosθz,sinθz,txbias和tybias的值之前,它们利用刚描述过的技 术进行调整。特别地,用于[P]的值可以潜在地根据公式57来限制:

以产生受限的偏移量值:p0p1p2p3p4p5.向量[P’]被认为是规定用于牛顿-拉弗 森方法的当前迭代的全牛顿步进和牛顿方向。此外,利用这些值,对 当前迭代t,利用函数[E]的线搜索可以执行,以便计算在更新 cosθec,sinθec,cosθz,sinθz,txbias和tybias的值时要使用的步进尺寸λ(t)。因 而,用于公式56B的类似公式由公式56E提供:

cosθec(t+1)′=cosθec(t)+λ(t)p0

sinθec(t+1)′=sinθec(t)+λ(t)p1

cosθz(t+1)′=cosθz(t)+λ(t)p2

sinθz(t+1)′=sinθz(t)+λ(t)p3

txbias(t+1)′=txbias(t)+λ(t)p4

tybias(t+1)′=tybias(t)+λ(t)p5

就是这些用于cosθec′,sinθec′,cosθz′,sinθz′,t′xbias和tybias′的新值要在用 于外在照相机校准的过程的下一次迭代中使用。

校准成像照相机130的第三种配置涉及全旋转矩阵,该矩阵包括 用于θx仰角、θy螺旋角、θz偏转角以及txbias和tybias的非零值。类似 于公式30F,可以定义以下残差公式来处理用于每个潜在托盘对象的 全旋转矩阵的元素。

公式59A:f1(k)=(akXw+bkYw+ckZw-fxtxbias)

f2(k)=(dkXw+ekYw+fkZw-fy(ty+tybias))

其中:ak=xkr20-fxr00-x0r20

bk=xkr21-fxr01-x0r21

ck=xkr22-fxr02-x0r22

dk=ykr20-fyr10-y0r20

ek=ykr21-fyr11-y0r21

fk=ykr22-fyr12-y0r22

附加的残差公式可以由公式59B提供:

ge=cos2θec+sin2θec-1

gp=cos2θy+sin2θy-1

gd=cos2θz+sin2θz-1

其中θx=θecef

利用这些残差公式产生与公式52和53类似的矩阵。例如:

F=gegpgdf1(0)f2(0)f1(1)f2(1)··

Jcosθecgesinθecgecosθygesinθygecosθzgesinθzgetxbiasgetybiasgecosθecgpsinθecgpcosθygpsinθygpcosθzgpsinθzgptxbiasgptybiasgpcosθecgdsinθecgdcosθygdsinθygdcosθzgdsinθzgdtxbiasgdtybiasgdcosθecf1(0)sinθecf1(0)cosθyf1(0)sinθyf1(0)cosθzf1(0)sinθzf1(0)txbiasf1(0)tybiasf1(0)cosθecf2(0)sinθecf2(0)cosθyf2(0)sinθyf2(0)cosθzf2(0)sinθzf2(0)txbiasf2(0)tybiasf2(0)cosθecf(1)sinθecf(1)cosθyf(1)sinθyf(1)cosθzf(1)sinθzf(1)txbiasf(1)tybiasf(1)cosθecf2(1)sinecf2(1)cosθyf2(1)sinθyf2(1)cosθzf2(1)sinθzf2(1)txbiasf2(1)tybiasf2(1)················

因此,对用于执行外在照相机校准的这种当前配置,与公式49B类 似的公式由公式60A提供:

[J]p0p1p2p3p4p5p6p7=-[F]

这个公式可以被操纵,以形成公式60B

p0p1p2p3p4p5p6p7=-([J]T[J])-1[J]T[F]

因此,公式60B揭示了多个托盘的相应观察以及用于cosθec, sinθec,cosθy,sinθy,cosθz,sinθz,txbias和tybias的相应估计可用于为向量值p0p1p2p3p4p5p6p7提供最小二乘法解答。这个向量值p0p1p2p3p4p5p6p7可用于根据公式61A迭代地更 新用于cosθec,sinθec,cosθy,sinθy,cosθz,sinθz,txbias和tybias的相应估计:

cosθec(t+1)=cosθec(t)+p0

sinθec(t+1)=sinθec(t)+p1

cosθy(t+1)=cosθy(t)+p2

sinθy(t+1)=sinθy(t)+p3

cosθz(t+1)=cosθz(t)+p4

sinθz(t+1)=sinθz(t)+p5

txbias(t+1)=txbias(t)+p6

tybias(t+1)=tybias(t)+p7

然后,用于cosθec,sinθec,cosθy,sinθy,cosθz,sinθz,txbias和tybias的更新后的值 可以在公式60B中用于找到p0p1p2p3p4p5p6p7的新值。这个迭代过程可以重复,直 到为p0p1p2p3p4p5p6p7计算出的每个值都小于预定的阈值。例如,这个阈值可以是 10-6。一旦迭代过程完成,用于cosθec,sinθec,cosθy,sinθy,cosθz,sinθz, txbias和tybias中每一个的新值就已经计算出来了,并且照相机对仰角的 贡献θec可以从确定,螺旋角θy可以从确定, 而偏转角θz可以从确定。此外,前面所述用于避免发散的 技术也可以应用到用于执行外在照相机校准的这种特定配置。

虽然上述公开内容讨论了说明性方面和/或实施例,但是应当指 出,在不背离如由所附权利要求定义的所述各方面和/或实施例范围 的情况下,在此可以进行各种改变和修改。例如,以上描述了用于分 析图像帧以便识别、定位、打分和修剪潜在托盘对象及其相应的一些 特征的多种二维图像分析技术。这些技术同等地适用于利用单照相机 系统或双照相机系统捕捉到的图像帧。此外,虽然所述各方面和/或 实施例的元素可能是以单数描述或阐述的,但是,除非明确地声明对 单数的限制,否则复数也是考虑的。此外,除非另外声明,否则任何 一个方面和/或实施例的全部或部分都可以在任何其它方面和/或实施 例的全部或部分中使用。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号