著录项信息
专利名称 | 一种微型实时立体视觉机 |
申请号 | CN02100547.8 | 申请日期 | 2002-01-31 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2002-07-24 | 公开/公告号 | CN1360440 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | 暂无 | IPC分类号 | 暂无查看分类表>
|
申请人 | 北京理工大学 | 申请人地址 | 北京市海淀中关村南大街5号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京理工大学 | 当前权利人 | 北京理工大学 |
发明人 | 贾云得;刘万春;朱玉文;徐一华;杨聪 |
代理机构 | 北京理工大学专利中心 | 代理人 | 付雷杰;张立平 |
摘要
一种微型实时立体视觉机,属于机器视觉领域。由立体视觉成像头、立体视觉信息处理器、控制器/通讯接口组成。立体视觉成像头中所有图象传感器同步获取图象,且其摄象机的对角线视场角达140度;立体视觉信息处理器以一片FPGA作为处理芯片,完成图象变形校正、LoG滤波、SSAD计算和子象素级深度计算,实现稠密深度图实时恢复;控制器/通讯接口由DSP和1394通讯芯片组成,用于实现深度图和灰度图象的存储、显示和传输,也用于深度图的高层处理以及依据深度图和灰度图象的控制指令生成。该立体视觉机体积小,运行速度快,视场角大,能实现仿人机器人、自主车辆等系统的视觉感知;也可实现基于深度图的目标分割和跟踪,完成可靠鲁棒的视频监控任务。
1.一种微型实时立体视觉机,其特征在于:它包括立体视觉成像头(1)、 立体视觉信息处理器(2)、控制器/通讯接口(3)三大部分;立体视觉 信息处理器(2)读取立体视觉成像头(1)获取的同步图象,并将实时 恢复的稠密深度图传输给控制器/通讯接口(3);
立体视觉成像头(1)通过多个图象传感器同步获取场景图象;它包 括2-8个图象传感器(4)、图象采集控制器(5)和帧存储器(6);图 象传感器(4)所配备的摄像机对角线视场角在30至140度之间选择; 图象采集控制器(5)控制各个图象传感器(4)同步采集图象,并将图 象数据存储到帧存储器(6)中;
立体视觉信息处理器(2)实现立体视觉信息的实时处理;它包括一 片FPGA(7)、1-7个LoG存储器(8)、水平高斯滤波存储器(9)、SSAD 存储器(10)和深度图存储器(11);FPGA(7)实现立体视觉信息实时 处理的各个模块:径向变形校正与水平高斯滤波模块,垂直高斯滤波、 拉普拉斯运算、数据压缩和数据装配模块,SAD计算、SSAD计算和子象 素级深度计算模块;LoG存储器(8)的个数比图象传感器(4)的个数 少1,存储压缩并装配后的LoG滤波结果;水平高斯滤波存储器(9) 存储水平高斯滤波的计算结果;SSAD存储器(10)缓存SSAD计算的中 间结果;深度图存储器(11)存储深度图;
SAD计算中的立体图象对的对应位置求解简易算法如下:
设k+1个摄象机表示为C0,C1,…,Ck,其中C0为基准摄象机,由此可以 得到k个图像对;令绝对坐标系与基准摄象机坐标系重合,绝对坐标系 下的空间点P(x,y,z)在基准摄象机C0成象平面中的投影点在图象坐标系 表示为p0(u0,v0),则Ci成象平面上的对应点pi(ui,vi)坐标为 其中, f0,a0是基准摄象机的内 部参数,f,a表示摄象机Ci的内部参数,rij,tk表示摄象机Ci的外部参数; 对于指定图象对,由于摄像机内外部参数确定,对应位置的求解只与基 准象素位置和候选深度值有关;
式(1)中共有6个加法、6个乘法和2个除法,直接完成这些计算 将占用大量的FPGA计算资源;实际上,对一幅图象进行SAD计算时,u0 和v0值顺序增大,因此6个乘法器可以用6个累加器代替;另外,由于 各个摄象机成象平面与基准摄象机成象平面基本平行,则式(1)中的 分母 约等于1,且变化范围较小;通过建立查找表, 保存其变化范围内所需精度下所有数的倒数值,可将式(1)中的2个 除法转化为2个乘法;这样整个对应坐标求解过程只需要2个乘法和 12个加法就可以实现;
使用二维迭代算法来实现SSAD计算:Ai(i=1~4)为SAD值, Sj(j=1~4)表示以该位置为中心的SSAD值;S4值可以通过如下的二 维迭代方式求得:
S4=S2+S3-S1+A1-A2-A3+A4。 (2)
控制器/通讯接口(3)用于实现图象的高层处理和控制指令生成, 也用于图象的实时显示和传输;它包括深度图象高层处理与传输控制器 (12)、1394接口(13)、LCD接口(14)、应用接口(15);深度图象 高层处理与传输控制器(12)实现对深度图象进一步的高层处理,并与 1394接口(13)、LCD接口(14)和应用接口(15)相连。
2.如权利要求1所述的微型实时立体视觉机,其特征在于:可以通过 LCD接口(14)实现将深度图实时显示于液晶显示屏(17),构成微型 实时深度成像仪。
3.如权利要求1所述的微型实时立体视觉机,其特征在于:可以通过 1394接口(13)将灰度图象或彩色图象实时地传输到微型计算机(16) 或中央控制计算机中进行高层处理。
4.如权利要求 1所述的微型实时立体视觉机,其特征在于:控制器/ 通讯接口(3)根据深度图和灰度图象生成行动指令,通过应用接口(15) 送给微型机器人驱动器(18)。
技术领域\n本发明为一种微型实时立体视觉机,属于机器视觉领域。用于实时 恢复、存储和传输场景稠密深度图。\n背景技术\n立体视觉技术已经在移动机器人、多目标跟踪、三维测量和物体建 模等领域得到了广泛的应用。为了解决立体视觉的实时计算问题,人们 开发了多种专用的立体视觉并行处理系统,其中基于DSP和基于FPGA 的硬件系统是两类应用最为普遍的实时立体视觉系统。1996年美国卡 内基-梅隆大学的Kanade等人建立了一套实时五目立体视觉机,系统 硬件主要由五个常规镜头摄像机构成的立体视觉成象头、图象获取与数 字化VEM板、图象预处理VME板、图象并行计算DSP阵列VME板(8片 TMS320C40芯片)和主控计算机组成。系统处理性能达到30MDPS,当图 象分辨率为200×200象素,视差搜索范围为25个象素时,深度恢复速 度为30帧/秒,这是当时速度最快的立体视觉系统。1999年日本的 Kimura等人在Kanade立体视觉机算法的基础上,使用FPGA设计了九 目实时立体视觉机SAZAN。该系统由九个摄像机排成的3×3阵列立体 成像头、图象数字化和预处理PCI板、FPGA主处理PCI板以及微型计 算机组成。系统处理性能达到20MDPS,当图象大小为320×240象素, 视差搜索范围30象素时,深度恢复速度为8帧/秒。\n现有的立体视觉系统存在如下主要问题:\n1.体积较大。现有的立体视觉系统主要是在工作站或微型计算机 的控制下运行的,体积较大,很难用于微型系统或微型自主机器人上。\n2.立体视场角小。现有的立体视觉系统基本上是采用常规镜头摄 像机,视场角较小,由多个摄像机构成的立体视场角更小,一次获取的 信息十分有限,另外,这类立体视觉的立体视场盲区较大,无法感知近 距离的目标。\n3.增加摄像机数量可以减少误匹配,提高稠密深度图恢复精度, 但会极大地增加系统计算负担。\n发明内容\n本发明的目的是提供一种微型实时立体视觉机及实现方法,该立体 视觉机体积小、视场角大、运算速度快,可以嵌入在微型机器人或微型 系统中,实时高精度地恢复大视场稠密深度图,完成障碍物检测、路径 规划等任务。\n本发明的另一个目的是提供一种微型实时立体视觉机及实现方法, 该立体视觉机配备2个或2个以上的常规镜头摄象机,能高精度恢复静 态或运动物体表面稠密深度图,用于完成物体表面形状恢复与测量等任 务。\n本发明的另一个目的是提供一种微型实时立体视觉机及实现方法, 该立体视觉机加上图象存储器、液晶显示屏及控制面板,构成微型深度 成像仪。\n本发明的另一个目的是提供一种微型实时立体视觉机及实现方法, 该立体视觉机通过控制器/通讯接口可以将深度图、灰度图象或彩色图 象实时地传输到微型计算机或中央控制计算机中进行高层处理。实现仿 人机器人、自主车辆等系统的视觉感知。\n本发明所述的微型实时立体视觉机由立体视觉成像头、立体视觉信 息处理器、控制器/通讯接口三大部分组成,其特征在于:立体视觉成 像头由CMOS成像传感器、图象采集控制器、帧存储器等组成,多个CMOS 成像传感器在图象采集控制器的控制下,同步获取场景图象,并将获取 的图象存储在帧存储器里。立体视觉信息处理器由一片FPGA和多片存 储器组成,对图象进行预处理和稠密深度图并行计算。控制器/通讯接 口由基于DSP的控制芯片组件和基于IEEE1394串行通讯芯片组件组成, 用于实现深度图和灰度图象的存储、显示和传输,也用于深度图的高层 处理以及依据深度图和灰度图象的控制指令生成和传输。\n如上所述实时立体视觉机的立体视觉成像头,其特征在于:CMOS成 象成像传感器可以配备常规镜头,也可以配备广角镜头或超广角镜头, 镜头对角线视场角可以达到140度。\n如上所述实时立体视觉机的立体视觉信息处理器,其特征在于:立 体视觉信息处理器使用一片大规模FPGA芯片,在FPGA中实现图象变形 校正、LoG滤波、数据压缩、数据装配、对立体图象对的对应点求解等 并行计算、SAD计算、SSAD计算和快速子象素级深度计算等,实现立体 视觉信息的实时处理。\n如上所述实时立体视觉机的控制器/通讯接口,其特征在于:基于 DSP的控制芯片组件可以完成场景稠密深度图和/或灰度图象的分析和 处理,根据处理结果生成控制指令来控制微型机器人驱动器;基于DSP 的控制芯片组件也可以驱动液晶显示屏实时显示获取的灰度图象、彩色 图象或深度图。基于IEEE1394串行通讯芯片组件将图象实时传输给中 央控制器和微型计算机。\n本发明提供了一种实用的微型实时立体视觉机及实现方法,本发明 具有以下优点:\n1.本发明体积小,尺寸可以小到几厘米,可以嵌入在微型机器人中, 用于完成场景深度图恢复、障碍物检测和目标定位等任务。\n2.本发明运行速度快,当分辨率为320×240象素,视差搜索范围32 象素,深度图象精度8位,稠密深度图恢复速度达到30帧/秒;\n3.本发明可以配备广角镜头或超广角镜头获取大场景信息,有效地提 高感知环境效率。一般来说,超广角镜头的视场角是常规镜头视场 角的3至5倍,使用超广角镜头可以感知的场景范围是常规镜头的 3至5倍。\n4.本发明使用3个或3个以上常规镜头摄像机,在特定光源照明下可 以高精度恢复物体表面深度图。在1.5米处,深度测量误差小于0.5 毫米,可以满足各类物体表面测量和建模的要求。\n5.本发明可以通过IEEE1394串行总线接口实现与中央处理器和中央 控制计算机的实时通讯,实现仿人机器人、自主车辆等系统的视觉 感知;可以用于恢复监控区域的深度图,实现基于深度图的目标分 割和跟踪,完成可靠鲁棒的视频监控任务。\n附图说明\n图1是本发明的基本组成框图;\n图2是本发明的立体视觉成像头的组成框图;\n图3是本发明的立体视觉信息处理器的组成框图;\n图4是本发明的控制与通讯接口的组成框图;\n图5是本发明的SAD计算框图;\n图6是SSAD二维迭代计算示意图;\n图7是本发明的SSAD计算顺序示意图;\n图8是本发明的SSAD值的输出顺序示意图;\n图9是本发明的子象素深度计算框图;\n图10是本发明构成的微型深度成像仪正面示意图;\n图11是本发明构成的微型深度成像仪反面示意图。\n图中主要结构为:立体视觉成像头(1);立体视觉信息处理器(2); 控制器/通讯接口(3);CMOS图象传感器(4);图象采集控制器(5); 帧存储器(6);FPGA(7);LoG存储器(8);水平高斯滤波存储器(9); SSAD存储器(10);深度图存储器(11);深度图象高层处理与传输控 制器(12);1394接口(13);LCD接口(14);应用接口(15);微型 计算机(16);液晶显示屏(17);微型机器人(18)。\n具体实施方式\n本发明主要包括立体视觉成像头(1)、立体视觉信息处理器(2)、 控制器/通讯接口(3)三大部分,如图1所示。立体视觉信息处理器(2) 读取立体视觉成像头(1)获取的同步图象,并将实时恢复的稠密深度 图送给控制器/通讯接口(3)。\n立体视觉成像头包括2-8个CMOS图象传感器(4)、图象采集控制 器(5)和帧存储器(6)。图象传感器(4)所配备的摄像机对角线视场 角在30至140度之间选择。图象传感器(4)也可以是CCD图像传感器, CCD图像传感器动态范围大,稳定性好,成像质量高,但成本高。图象 采集控制器(5)的作用是控制所有的图像传感器(4)同步采集图象, 并将图象存储在帧存储器(6)中,如图2所示。\n立体视觉信息处理器(2)实现立体视觉信息的实时处理。它包括 一片FPGA(7)、1-7个LoG存储器(8)、水平高斯滤波存储器(9)、 SSAD存储器(10)和深度图存储器(11),如图3所示。FPGA(7)实 现立体视觉信息实时处理的各个模块:径向变形校正与水平高斯滤波模 块,垂直高斯滤波、拉普拉斯运算、数据压缩和数据装配模块,SAD计 算、SSAD计算和子象素级深度计算模块。LoG存储器(8)的个数比图 象传感器(4)的个数少1,存储压缩并装配后的LoG滤波结果;水平 高斯滤波存储器(9)存储水平高斯滤波的计算结果;SSAD存储器(10) 缓存SSAD计算的中间结果;深度图存储器(11)存储深度图,如图3 所示。\n假设立体成象头摄象机数量为k+1(k≥1),图10所示摄像机数量为 6(即k=5))。两个摄像机可以构成一个立体成像头,使用多个摄像机 构成立体成像头的目的是提高对应点匹配的正确率和深度恢复的精度。 将其中一个摄象机定义为基摄象机(base camera),对应的图象为基图 象,对应的象素为基象素。我们建立了SAD和SSAD并行优化算法,并 建立了多级流水线计算结构。算法的基本步骤如下:\n1.对原始图象进行几何变形校正;\n2.对校正后的图象进行LoG滤波;\n3.进行非线性直方图变换,进一步增强纹理并缩减数据量;\n4.将深度搜索范围等分成d段,形成d个候选深度值。在任一候选深 度值下,对于基图象中任一象素,在其余k幅图象中求对应点,计 算对应点与基象素的灰度值之差值的绝对值之和(SAD值);\n5.在基象素某一邻域窗口内对SAD进行累加得到SSAD值(相似性度 量);\n6.从同一基象素在各个候选视差下的SSAD值中搜索出最小值;\n7.通过抛物线插值得到子象素级精度的深度值。\n整个算法可分为图象预处理和稠密深度图恢复两个部分。图象预处 理由2个模块组成:图象变形校正和水平高斯滤波模块,垂直高斯滤波、 拉普拉斯运算、数据压缩和数据装配模块。\n采用超广角镜头可以高效率地获取场景信息,但同时也引进了严重 的图象畸变。图象变形一般分为径向变形和切向变形,其中径向变形是 引起图象变形最主要的因素。本系统只考虑径向变形,校正象素点沿径 向发生的位置移动。\n使用二维拉普拉斯高斯(Laplacian of Gaussian,LoG)滤波对 图象进行预处理,可以减弱图象噪声,增强图象纹理特征,消除立体 图象对之间亮度差异对后续匹配的影响。为了便于用硬件并行计算, 将LoG滤波分解为二维高斯滤波和拉普拉斯运算,并将二维高斯滤波分 解为垂直和水平方向上的两次一维滤波。由于两次一维高斯滤波不可能 同时运行,因此可以使用同一个计算模块,只需使用各自的控制模块即 可。这样可以极大的减少对FPGA资源的占用。\nLoG滤波输出结果的绝大部分值集中在0值附近的很小范围内,如 果使用较少的位数来表示这些数据,可以显著减少后续处理所需的数据 量,从而减少对系统硬件资源的占用。通过非线性直方图变换,将LoG 滤波结果由10位缩减为4位。该变换不但减少了数据量,同时也加大 了图象对比度,提高了算法对弱纹理区域的深度恢复能力。\n在后续SAD计算过程中,为了精确获取对应位置的子象素级灰度信 息,需读取其相邻四个象素值进行双线性插值。为减少其访存次数,可 对图象压缩输出的数据流进行装配,使得SAD计算可以一次访存读出所 需的4个象素值。由于整个系统的速度瓶颈即在于该模块的访存次数, 该数据装配过程可以极大提高系统性能。装配过程如下:对于基图象, 按照列的顺序将相邻4列的数据装配在一起;对于其它图象,则将上下 左右相邻4个象素值装配在一起。装配后的数据被输出到16位的缓存 SRAM中。\n稠密深度图恢复由SAD计算、SSAD计算和深度计算模块来实现。\nSAD(the Sum of Absolute Difference)计算中首先需要在任一候选 深度下,计算基准图象中的任一象素在其它图象中的对应点位置。该过 程所需运算量较大,而且涉及到矩阵运算和乘除法运算,用通用微处理 器或DSP实现比较费时,用FPGA实现则占用较多的逻辑计算资源。我 们建立了对应性求解简易算法,该算法可以直接精确求解对应点,计算 速度快,占用的FPGA逻辑资源也很少。\n设k+1个摄象机表示为C0,C1,…,Ck,其中C0为基准摄象机,由此可以 得到k个图像对。令绝对坐标系与基准摄象机坐标系重合,空间点 P(x,y,z)(绝对坐标系)在基准摄象机C0成象平面中的投影p0(u0,v0)(图 象坐标系)满足: f0,a0是基准摄象机的内部参数。P(x,y,z)在摄象机Ci(i≠0)坐标系中的坐 标表示为pi(xi,yi,zi),其在对应成象平面中的投影pi(ui,vi)满足: 其中f,a,rij,tk表示摄象机Ci的内外部参数。 将(2)式代入式(1)得到: 由此得到对应位置求解公式: 其中,参数h11,h12,h21,h22,h31,h32与深度无关,参数h13,h23,h33和深度相关。 对于指定图象对,由于摄像机内外部参数确定,对应位置的求解只与基 准象素位置和候选深度值有关。\n式(4)中共有6个加法、6个乘法和2个除法,直接完成这些计算 将占用大量的FPGA计算资源。实际上,对一幅图象进行SAD计算时,u0 和v0值顺序增大,因此6个乘法器可以用6个累加器代替;另外,当各 个摄象机成象平面与基准摄象机成象平面基本平行时(大多数立体视觉 系统都属于这种情况),式(4)中的分母 约等于1, 且变化范围较小。建立查找表,保存其变化范围内所需精度下所有数的 倒数值,可将式(4)中的2个除法转化为2个乘法。这样整个对应坐 标求解过程只需要2个乘法和12个加法就可以实现。\n对基图象中的一个象素在某一候选深度下的SAD计算过程如下:并 行计算它在所有其它图象中对应象素的位置,并行读取并插值计算到子 象素级精度象素值,计算AD值,再求和得到SAD值。注意前面的数 据装配使得可以一次访存读入对应位置相邻的4个象素值,并插值得到 6位精度的子象素级象素值,如图5所示。这样每计算一个SAD值只 需一个时钟周期。\nSSAD(the Sum of SAD)计算:图6所示的是SSAD二维迭代算法, Ai(i=1~4)为SAD值,Sj(j=1~4)表示以该位置为中心的SSAD值。 S4值可以通过如下的二维迭代方式求得:\n S4=S2+S3-S1+A1-A2-A3+A4 (5)\n设求和窗口为9×9,候选深度32个。式(5)等号右边7项的存储和 读取(以任一候选深度为例)如下:将最近9列SAD值保存在缓存BUFF1 中,可得到上式中的A1、A2值,将最近9个象素的SAD值保存在缓存 BUFF2中,可得到A3值,将最近1列多1个象素的SSAD值保存在缓存 BUFF3中,可得S1、S2和S3值,分别存储在三个缓存器中。为确保有足 够的BUFF1存取时间,相邻3个SAD值被拼合并一次写入BUFF1,使得 有2个时钟的空闲时间以分别读出A1和A2值。当然这要求A1、A2读取 时也必须一次取出相邻三个象素值。由于求和窗口大小恰为3的整数 倍,因此必可一次读出所需的相邻三个值(若窗口大小不是3的整数倍, 则需将连续4象素SAD值拼合,使其有3个空闲时钟以取出全部A1、A2 值)。上述过程要求连续计算同一候选深度下相邻3个象素的SSAD值。 图7所示的是对BUFF3存取过程,Oi表示缓存的SSAD值,Nj表示当前 需要计算的SSAD值。由于需要读出O1~O5这5个SSAD值以实现N1~N3 的计算(即要求在3个时钟里取出5个SSAD值),因此使用FPGA内部 的两个RAM,分别保存奇数和偶数候选深度下的SSAD值。这使得每个 RAM都有连续6个时钟的空闲以读出O1~O5值。这种二维迭代算法可以 使用很少的缓存就能实现每个时钟周期计算一个SSAD值。\n子象素级深度计算:子象素级深度计算的第一步式提取SSAD曲 线的最小值,然后利用抛物线插值实现子象素级精度的最小值定位。由 于SSAD计算顺序的约束,SSAD值的输出顺序如图8所示。图中编号 表示象素序号,下标表示候选深度序号。由图9可知,同一基象素的 32个SSAD值,相互间的输出间隔为2个时钟,其间这2个时钟输出 相邻2个象素的SSAD值。因此最小值提取需分3路并行实现。由于对 每32个SSAD输入只需执行一次子象素级插值运算,这3路就可以共 用一个插值运算模块。3路SSAD最小值输出在时间上相差4个时钟。 利用移位寄存器增大各路之间的延迟到8个时钟,以满足插值模块除法 器每8个时钟接受一次输入的要求。\n除了预处理和深度图恢复的各模块外,还使用了一个管理者模块, 用来实现上述各模块间的同步控制。这些模块由于涉及到对外部存储器 的互斥访问,任意相邻两个都不可以同时运行。因此使用了一个管理者 模块,用来控制相邻模块的互斥运行,并使不相邻的模块能可以流水线 方式同时运行,以提高系统的处理性能。\n控制器/通讯接口(3)它包括深度图象高层处理与传输控制器(12)、 1394接口(13)、LCD接口(14)、应用接口(15)。深度图象高层处理 与传输控制器(12)可以是DSP芯片,它可以通过1394接口(13)将 深度图、灰度图象和彩色图实时传输给微型计算机(16)中进行高层处 理;也可以通过LCD接口(14)控制液晶显示屏(17)显示深度图、 灰度图象和彩色图;还可以对图象进行高层处理,产生行动指令,将指 令通过应用接口(15)送给微型机器人驱动器(18);如图4所述。\n应用举例\n图10是由本发明构成的微型深度成像仪正面立体视觉成像头示意 图。立体成像头由六个CMOS成像传感器和两个光源组成,每一个光源 是由24个大功率红外发光管组成。发光管前增加光栅,在照射物体上 会产生条纹或花斑,可以增加无纹理表面的纹理特征,提高求解对应点 的可靠性。图11是微型深度成像仪反面液晶显示示意图。液晶显示屏 显示的是一个地板上放置的两块岩石的稠密深度图,离摄象机越近,图 象越亮。液晶显示屏两边的控制按钮用于控制光源开关、单帧图象获取、 连续视频图象显示、连续深度图显示、图象存储、系统初始化等。
法律信息
- 2015-03-25
未缴年费专利权终止
IPC(主分类): H04N 15/00
专利号: ZL 02100547.8
申请日: 2002.01.31
授权公告日: 2004.01.28
- 2004-01-28
- 2002-07-24
- 2002-05-08
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2005-01-27 | 2005-01-27 | | |
2 | | 2005-02-28 | 2005-02-28 | | |