CN1170232C - 基于pci和视觉总线的可重构机器视觉*** - Google Patents
基于pci和视觉总线的可重构机器视觉*** Download PDFInfo
- Publication number
- CN1170232C CN1170232C CNB021394709A CN02139470A CN1170232C CN 1170232 C CN1170232 C CN 1170232C CN B021394709 A CNB021394709 A CN B021394709A CN 02139470 A CN02139470 A CN 02139470A CN 1170232 C CN1170232 C CN 1170232C
- Authority
- CN
- China
- Prior art keywords
- bus
- image
- video
- vision
- pci
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Analysis (AREA)
Abstract
本发明公开了一种基于PCI和视觉总线的可重构机器视觉***,该视觉***由硬件***和软件***两部分组成;硬件***包括:可支持多个摄像机的多路模拟通道开关,多路模拟通道开关与第一低通滤波器、第一A/D量化、解码模块和第二低通滤波器、第二A/D量化、解码模块构成主、副高速图像输入通道;一DPS***,DPS***与帧存储器和视频总线扩展接口互连;帧存储器还与图像预处理模块互通;总线控制器、图像预处理模块各自与地址总线、数据总线和控制总线连通;地址总线、数据总线和控制总线还连接有一完成非线性运算的查找表和PCI总线接口;PCI总线接口与PCI总线和一计算机连通,计算机带有SR232接口;软件***由硬件驱动程序、***平台和图像处理目标识别软件包组成。
Description
一、技术领域
本发明属于计算机控制领域,涉及通过模拟人的视觉机理而给予机器人以视觉功能的智能控制,特别涉及基于PCI和Vision总线的可重构机器视觉***。
二、背景技术
机器人视觉是一门新兴的发展迅速的学科。通过模拟人的视觉机理而给予机器人以视觉功能已成为目前智能控制领域中的一个重要课题。八十年代以来,机器人视觉的研究已经历了从实验室走向实际应用的发展阶段。从简单的二值图像处理到高分辨率多灰度的图像处理,从一般的二维信息处理到三维视觉机理、模型和算法的研究都取得了很大的进展。而计算机工业水平的飞速提高以及人工智能,并行处理和神经元网络等学科的发展,更促进了机器人视觉***的实用化和涉足许多复杂视觉过程的研究。目前,在发达的工业国家中,机器人视觉***正在广泛的应用于视觉检测,机器人的视觉引导和自动化装配领域中。
在机器人的工业应用中,装配机器人对视觉***有着更高的要求。通过与非视觉传感器(如力觉、接近觉和触觉等)传感器功能的相互协调配合,视觉***要完成机器人对装配工件的识别定位、及检测功能,使装配机器人实现典型的装配动作,如抓取,***和拧紧等动作。目前以研究先进的直接驱动的机器人而着称的美国Adept公司已推出了基于中分辨率,多灰度的(128级)的机器人视觉***Adept Vision XGS-II,该***可用于具有显著二维特征的工件装配机器人。此外还有日本的FANUC公司用于装配机器人的WYEV-110视觉***,该***的特点是图像灰度为256级,可进行二维或三维物***置的检测与定位(应用多个摄像机的场合),三菱电机的LS-212视觉***,日本的这类机器人视觉***多是应用于轿车装配线上。美国Intelledex公司用于装配机器人的TM200视觉***等。西安交通大学在“八五”期间为863-512主题型号研制项目“精密装配机器人”研制了一套实时的视觉***,并以推广应用于国防、医学等领域,获得96年国家科技进步二等奖。
但是至今国内市场上尚未出现能用于不同场合的机器视觉***,也无相应的标准和***集成。申请人经过努力,已成功的掌握了此项关键技术。所提供完整***不仅能用于机器人环境,也能用于国防、医学等领域,必将推动国民经济的发展。
申请人自1986年成立人工智能与机器人研究所以来,主持和承担了国家七·五科技攻关项目(68-5-17)“通用工业视觉***”的研制工作,目前该***已形成低、中档***结构,适用于不同工业应用场合的需要,该项目已在数省推广应用,取得良好的社会经济效益,并分别获得机电部科技进步一等奖、国家科技进步三等奖。1987年该所承担了国家教委基金下达的“三维机器视觉技术的研究”的课题。89年1月通过陕西省教委组织的专家技术鉴定会,评价意见是达到八十年代中期国际先进水平,其三维物体的识别方法具有创造性,其应用成果获国家教委科技进步二等奖。该***也已应用于引进的Intelledex 660智能装配机器人上,完成了一个既有实际的机器人本体又有我们自行研制的计算机视觉***,为进一步研究与开发机器人视觉***奠定了良好的实验条件。
近十年来,申请人承担了与计算机视觉有关的其它课题,如河南省国防工办委托研制的“行使车辆牌照自动识别***”,该***通过国防科工委组织的技术鉴定。八八年又承担了北京---石家庄高速公路收费站的车型自动识别分类的研制工作,该***采用双摄像机,应用模式识别与图像处理技术自动分割自然车流,抽取特征自动识别车型与分类,重复精度达99%以上。
申请人在开展应用研究的同时,结合研究生的培养,还注意基础理论与方法的研究工作。近年来进行了三维物体的空间定位与识别;运动模糊图像的恢复方法;边缘聚焦及其它边缘检测的新方法;基于形态学的工件识别;基于多层神经元网络的图像分割等的研究。上述的研究分别是在国家自然科学基金、国家教委重点基金、博士点基金资助下进行的。部分研究成果已应用到一些横向课题中,有的发表在国内外学术刊物上。其中二维目标的分析方法(形状曲线拟合)获得1995年国家发明四等奖。
在自行研制硬件的工作中,除了上面所提到的通用工业视觉***,八八年初开始进行基于人工神经网络的图像并行分布式处理方法与***的研究,九二年完成了采用多DSP芯片(TMS320C30)构成的并行分布式***的整机***设计与试验。这一***不仅可用于视觉信息的高速处理,而且也可用于多变量控制***。1993年承担国家重点科学研究工程,研制出医用立体X光数字减影与处理***。该***可实现立体数学减影和处理,***采用双(计算机)体并行的新结构,以及双总线结构,并具有数字端口,支持流水操作,有丰富的图像与图形控制与处理软件。***具有多个摄像机输入与时钟的控制电路,以及与视觉总线连接的大容量帧存。该项目获得国家教委科技进步一等奖。
1995年还完成了512主体的型号研制任务“精密装配机器人视觉***”,该***有多片A100构成大窗口卷积器,并采用具有并行处理能力的i860完成实时视觉信息处理。***具有丰富的处理软件,可完成物体的精确定位和部分遮挡物体识别。1995年以来,该***已在国防、医学等领域得到推广应用,获得国家科技进步二等奖。
三、发明内容
在上述研究的基础上,本发明提出了一种基于PCI和Vision总线的可重构机器视觉***,其特征在于,该视觉***包括:
一多路模拟视频通道开关,用于支持多个摄像机的图像输入;
第一低通滤波器和第二低通滤波器,用于对摄像机输入的图像信号进行滤波;
第一A/D量化、解码模块和第二A/D量化、解码模块,用于对经滤波后的信号量化和解码;
一数字信号处理***,用于对量化和解码的信号处理;
一帧存储器,用于量化和解码后信号的存储;
一视频总线扩展接口,用于模块之间的扩展连接;
一总线控制器,用于控制各地址总线、数据总线和控制总线的识别和控制;
一图像预处理模块,用于低层图像特征提取,可接收来自主机的参数,改变配置,实时完成不同低层图像特征提取,包括边缘、小波变换;
一查找表,用于完成非线性运算;
一PCI总线接口,用于PCI总线和地址总线、数据总线和控制总线之间的连接;
一带有异步串行通讯接口的计算机,用于***的驱动、图像处理、目标识别的控制;
所述图像处理包括图像预处理、特征抽取和分割;图像预处理对摄像机输入的图像进行灰度校正、噪声过滤和畸变校正;特征抽取和分割完成边缘检测与连接、纹理分析、区域分割;目标识别用于实现运动目标检测、模板匹配、部分遮挡情况下的工件识别;
多路模拟视频通道开关分别与第一低通滤波器、第一A/D量化、解码模块和第二低通滤波器、第二A/D量化、解码模块连通,构成主、副高速图像输入通道;第一A/D量化、解码模块与一总线控制器相连接;并与视频总线扩展接口互连;第二A/D量化、解码模块和数据总线、控制总线连通;
数字信号处理***与帧存储器和视频总线扩展接口互连;帧存储器还与图像预处理模块互通;
总线控制器和一图像预处理模块连通,并各自与地址总线、数据总线和控制总线连通;
地址总线、数据总线和控制总线分别与查找表和PCI总线接口、总线控制器连接;PCI总线与计算机连通。
四、附图说明
图1是本发明的视觉***硬件配置图;
图2是本发明的视觉***的软件配置;
图3是本发明的视觉***配置基本框图;
图3-3是本发明的快速高效的匹配算法总体结构框图;
图3-4是本发明的Freeman的链码图;
图3-5本发明采用的多边形逼近示意图;
图3-6本发明采用的具有宽度的直线扫描转换使用的刷子示意图;
图3-7是本发明的软件***平面分布图;
图4是本发明的视觉***硬件结构。
五、具体实施方式
以下结合附图对本发明作进一步详细描述。
依本发明的技术方案,基于PCI和Vision总线的可重构机器视觉***包括:
一多路模拟视频通道开关1,用于支持多个摄像机的图像输入;
第一低通滤波器2和第二低通滤波器4,用于对摄像机输入的图像信号进行滤波;
第一A/D量化、解码模块3和第二A/D量化、解码模块5,用于对经滤波后的信号量化和解码;
一数字信号处理***6,用于对量化和解码的信号处理;
一帧存储器7,用于量化和解码后信号的存储;
一视频总线扩展接口8,用于模块之间的扩展连接;
一总线控制器9,用于控制各地址总线、数据总线和控制总线的识别和控制;
一图像预处理模块10,用于接收来自主机的参数,改变配置,实时完成不同低层图像特征提取,包括边缘、小波变换;
一查找表11,用于完成非线性运算;
一PCI总线接口12,用于PCI总线和地址总线、数据总线和控制总线之间的连接;
一带有异步串行通讯接口14的计算机13,用于***驱动、图像处理、目标识别的控制;
图像处理包括图像预处理、特征抽取和分割:图像预处理对摄像机输入的图像进行灰度校正、噪声过滤和畸变校正;特征抽取和分割完成边缘检测与连接、纹理分析、区域分割;目标识别用于实现运动目标检测、模板匹配、部分遮挡情况下的工件识别;
多路模拟视频通道开关1分别与第一低通滤波器2、第一A/D量化、解码模块3和第二低通滤波器4、第二A/D量化、解码模块5连通,构成主、副高速图像输入通道;主通道完成边缘检测、滤波、二维卷积运算;副通道可作为实时数字视频处理的图像输入通道;第一A/D量化、解码模块3与一总线控制器9相连接;并与视频总线扩展接口8互连;第二A/D量化、解码模块5和数据总线、控制总线连通;
数字信号处理***6与帧存储器7和视频总线扩展接口8互连;帧存储器7还与图像预处理模块10互通;
总线控制器9和一图像预处理模块10连通,并各自与地址总线、数据总线和控制总线连通;
数字信号处理***6与帧存储器7和视频总线扩展接口8互连;帧存储器7还与图像预处理模块10互通;
总线控制器9和一图像预处理模块10连通,并各自与地址总线、数据总线和控制总线连通;
地址总线、数据总线和控制总线分别与查找表11和PCI总线接口12、总线控制器9连接;PCI总线与计算机13连通,能同时用于局部阈值和局部阈值等非线性处理。
***具有的两路高速流水线图像通道:一路带有可与帧存、DSP***(DSP***为可选件)无缝连接的视频总线扩展接口和可实时完成边缘检测、滤波、二维卷积运算等于处理的高速流水图像预处理单元,称为主通道。另一路通道经A/D量化编码,形成的数据流直接经PCI总线输入计算机,称为副通道。可作为实时数字视频处理(如运动图像压缩、运动图像插补等)的图像输入通道。硬件***中采用了先进的PCI总线技术;逻辑控制部分采用了FPGA实现;采用了国外成熟的可级联与重构的专用图像处理芯片A110;同时由于提供VISION局部总线,用户可在原基础上进行硬件重构,一定程度上克服了以往同类***结构固定、功能单一的缺陷,拓宽了应用范围。
软件***由三部分组成:
A.硬件驱动程序
硬件驱动程序主要是指对***中的硬件部分进行初始化;
B.***平台
***平台采用WINDOWS98;
C.图像处理目标识别软件包;
图像处理目标识别部分主要提供一些高速图像处理算法软件包,包括,图像预处理软件包、图像的边缘检测软件包、图像空间变换软件包、图像特征提取软件包、图像的识别软件包。
用户可根据需要灵活配置,操作简洁方便。除***平台采用WINDOWS98外,硬件驱动程序、图像处理目标识别软件包均自行开发。图像处理目标识别软件包具有三大功能模块:图像预处理、特征抽取和分割、目标识别等。图像预处理包括灰度校正、噪声过滤和畸变校正等内容。特征抽取部分实现了边缘检测连接、纹理分析、区域分割等多种算法。目标识别部分包括运动目标检测、模板匹配、部分遮挡工件识别等内容。此***目前已成功投入使用,在简单理想工况下,平均工件识别速度为13件/分,识别率为99%。试验证明采用PCI总线、VISION BUS与FPGA技术大大增强了通用性、实时性和可重构性。PCI总线解决了计算机I/O数据吞吐量瓶颈问题,使得即使是1024×1024×24Bit高分辨率的彩色图像也可达到TV速率(PAL,25帧/秒)实时处理;FPGA技术的高速、高集成度及在线现场可编程性,使得功能模块的可重组成为可能;引入VISION BUS局部总线,可与帧存板及DSP板实现无缝联接,使得***架构更为开发。如此***不仅可软件重构,也可在线硬件模块重构,更可以根据实际需要实现***重构。可适应多种应用环境。
物体识别的基本方法是建立物体模型,然后使用各种匹配算法从真实的图像中识别出物体模型最相似的物体。物体识别的基本步骤是:建立模型库、物体特征提取、模版匹配、假设结构的验证等,相应的识别***包括四个主要模块:模型库、特征检测器、假设生成(hypothesis formation)、和假设验证(hypothesis verification)等。在这个视觉***中,我们采用了基于模型的工件识别方案。该方案先把要识别的工件的模型存储起来(模型训练),然后通过一种‘猜测-验证’的匹配技术,快速在视野中的识别出所需要的工件。其中的关键是要能找到一种有效的描述工件形状特征的方法,以及设计一个快速高效的匹配算法。总体结构框图如图3-3所示。
5.1模型库的维护
模型库包含有所有的已知模型。模型库的信息却决于物体识别方法,可以定量、定性或函数描述,也可以是精确的几何曲线面信息。在大多数情况下,物体的模型是抽象的特征矢量。特征是物体的一种属性,比如物体的面积、周长、链表、顶点(Vetex)、角点(Corner)等,特征在描述和识别物体过程中起着十分重要的作用。
在本***软件中,所谓的模型库是一个存放模型特征向量的文件。模型库的维护模块,具体包括:通过对标准模型的训练,提取该模型的特征点,然后将其入库;删除是将不需要的模型从模型库中删除;而显示是将该模型库中的模型在结果视类中进行显示,规定显示图像的大小是512×512Pixels。可以使用已有的模型库,也可通过训练建立新的模型库。
5.2特征提取与形状匹配
对工件形状特征的描述是基于其轮廓多边形的。这是因为,首先多边形描述足够稳定而又不失局部细节(只要在拟合多边形时注意控制误差),它一方面滤除了图像数字化时带来的噪声,另一方面又充分保留了工件形状中的微小细节;其次,任何工件的轮廓都可以表示成多边形。这是因为多边形表示本质上还是一种经过较少抽象的较为原始的直观的形状描述方法;再次,多边形表示便于计算机存储和处理,后面我们可以看到这种表示既节省内存又便于进行特征提取和匹配过程中的快速验证。
下面所说的是基于轮廓多边形的特征提取。
我们知道,对于任意一个多边形,只要找到一组具有一定的几何不变性(指经过平移,旋转不变性,这里由于装配的需要,不同比例的相似形状的工件被认为是不同的工件,所以在描述多边形的特征时,有意去掉了比例不变性)的特征,就可以用这些特征代表这个多边形。在识别时,这些特征能够用来对工件进行很有效的粗分类。
5.2.1基于矩的几何不变性特征提取
采用基于矩(Moment)的形状特征描述
记R为一个闭合有界区域,定义区域R的(p,q)阶矩Mpq为:
进一步,R的(p,q)阶中心矩upq可以表示为,
这里,Xc=M10/M00,Yc=M01/M00.
可以验证低于2阶的中心矩有下面的计算公式:
u00=M00,
u10=0,
u01=0, [5-3]
u20=M20-M10Xc,
u02=M02-M01Yc,
u11=M11-M10Yc.
这些中心矩具有平移不变性(Invariant to translation);可以对其进行规范化得到具有比例不变性(Invariant to scaling)的表示:
还可以对上述表示做进一步的变换,增加旋转不变性(Invariant to rotation):
φ1=η20+η02
φ2=(η20-η02)2+4η11 2
φ3=(η30-3η12)2+(η03-3η21)2 [5-5]
φ4=(η30+3η12)2+(η03+3η21)2
必须指出,在装配机器人的应用中要求能够区分大小不同的工件,所以本发明在具体应用时,有意去掉了规范化过程(式[5-4]),也就是去掉了比例不变性。另外,基于性能和有效性两方面的考虑,只选用了φ1,φ2.和面积,周长等参数(其实面积也是矩特征)来描述工件形状。
5,2.2局部形状特征提取
在有了工件的轮廓多边形表示及其几何不变性特征之后,就能利用这些信息完成非遮掩、粘连情况下的工件识别。但是,在工件之间存在互相遮掩、互相粘连等情况时,单靠上述特征是远远不够的。这是因为它们只包含了工件形状的整体信息,而遮掩、粘连等情况下这些整体信息不复存在。在这种情况下,必须找到关于工件的局部特征信息,因为除非所有的局部信息的被掩盖了,否则我们就能利用这些局部信息作为工件识别的依据。注意到人对工件形状中的尖角、长直线段、弧段,以及弧和直线连接等局部信息非常敏感的事实。本发明提出了描述工件形状局部特征的“角点(CORNER)”的概念。形象地说,CORNER是上述敏感位置附近的一定大小的子多边形。这些子多边形就代表了工件的局部形状特征。所以只要找到这些子多边形及其相应的几何不变性特征,就可以在遮掩、粘连等情况下对识别工件作出位置猜测。
在本发明的视觉***中,CORNER是靠如下的规则来选择的:
(1).该点处的多边形的顶角与180°的差别大于一定阈值。这样的点实际上靠近曲率的极大值点。然而,还有一些点不是曲率的极大值但也很重要。这样的点在下一个规则中考虑。
(2).该点处在曲率变化较为剧烈的地方,如直线段与圆弧相交处,两个不同凹向的弧段的连接处(拐点)。
(3).在满足规则(1)或(2)的多边形顶点附近,按照一定的半径画圆弧,和多边形的边缘有两个交点,把这两个交点之间的一段轮廓构成的子多边形作为选定的角点(CORNER)标记。
(4).把每个CORNER对应的子多边形的矩特征作为角点的形状特征。这些特征就标记了工件轮廓多边形在这些局部位置的形状信息。
然而,即使能够利用CORNER等局部信息对大部分工件的识别提供很有效的依据,还有一些工件,其轮廓曲线不存在符合上述规则的CORNER.比如圆形工件。这时候就要通过其他途径来处理这样的工件。在本发明的视觉***中,对于圆形工件作了特殊处理。在轮廓多边形基础上再作一次抽象通过圆拟合的办法把圆形工件的几何特征参数(圆的半径r)提取出来,在以后匹配时对被识别的轮廓及其片断作圆拟合,比较拟合出的几何特征参数(圆的半径r′)与模型圆的几何特征参数(如考察abs(r-r′)/r的大小),就可作出匹配猜测。推而广之,对轮廓为二次封闭曲线(或其他预知的曲线)的工件,都可以类似的在轮廓多边形基础上再抽象一步去处理。因为多边形表示还不能抓住这样的形状的本质特征。比如圆可以看作正N边形当N趋于无穷大时的特例,而实际上由于数字化的缘故,总能够得到一个有限边数的多边形而将其归类为一般的多边形,没有抓住其本质特征,只要训练模型时提出这些预知曲线的生成控制参数就可以了。
5.3猜测验证的匹配技术
通过前面的特征提取,得到了关于工件形状的特征向量X=[S,P,_1,_2]T,其中S是面积,P是周长,_1,_2是两个基于二阶矩的具有旋转平移不变性的参数。定义两个形状X=[x1,x2,x3,x4]T,Y=[y1,y2,y3,y4]T之间的距离为:
Distance(X,Y)=max{Δi) [5-6]
这里,Δi=abs(xi-yi)/min(xi,yi)。i=1~4。
当模型工件特征XM与被识别工件特征X0满足:
Distance(XM,X0)≤Thr [5-7]时,就得到一个模型XM与目标X0相匹配的猜测。这里Thr控制着匹配猜测的严格程度,它是一个小于1的正实数。当Thr给的越小,产生的匹配猜测就越少,参加验证的匹配猜测数目减少,拒识率增大;反之,Thr越大,产生的匹配猜测就越多,参加验证的匹配猜测数目增加,识别率增大。在本视觉***中,Thr取值为0.15。
为了提高识别结果的可信程度(尤其是在这个视觉***的特殊应用背景的情形下,可信度显得尤为重要),在给出匹配猜测之后,必须对得到的匹配猜测加以验证。为此,本发明设计了一个快速高效的验证算法:根据每个匹配猜测,我们可以得到模型多边形PM经过一定的几何变换TR(平移和旋转)之后存在于视野中的假设。这里的几何变换TR可由产生匹配猜测的两个特征向量对应的多边形(或子多边形)确定。记P0为对PM施加变换TR后的多边形,则P0就是PM存在于视野中的可能位置,对P0与视野中的待识别多边形重叠程度加以验证,就可以在一定置信程度下肯定或否定这个匹配猜测。
这种验证方法在本视觉***中如下快速实现:首先,工件形状是基于多边形表示的,而多边形由直线段组成,直线的快速扫描转换有著名的Bresenham算法;其次,被识别目标的轮廓在提取出来之后,也要以一定的线宽(验证时的误差就在线宽中得以体现)和灰度重画在内存中的位图Bmp中,为此本发明也特别设计了简单快速的画一定宽度直线段的算法。注意到Bmp只需把目标扫描一次就可生成。最后,在验证时,只要沿着P0的扫描转换点在Bmp中遍历一次(只读不写),并统计遇到的具有目标多边形灰度的点的个数N1,N1就是P0与目标重合程度的度量,记多边形的总长为N,定义可信度(Certainty Factor)为:
CF=N1/N. [5-8]
显然,0≤CF≤1.
当CF满足:
CF≤CL [5-9]时,可以认为该匹配猜测通过了验证。这里CL为预先设定的置信级别参数。CL的取值,也影响着识别结果。CL给的越小,拒识率降低,误识率增大;反之,拒识率增大,而误识率降低,可信度增大。在本发明的视觉***中,CL是可以由用户根据情况设定的。
5.3.1工件识别模块的具体实现
一)、自动阈值
本发明使用了一种基于二次搜索的遗传算法的边缘检测阈值自动选取,可以实时的对图像的边缘检测进行阈值的自动选取和处理。
二)、边缘跟踪及链码表示
边缘跟踪是从图像中抽取形状信息的常用手法,目的是沿着图像的等色区域的边界轮廓进行搜索,将搜索到的边界点的位置记录下来,形成一个边界点列,这个点列就表示该轮廓。
为了记录边缘跟踪后得到的轮廓点列数据,我们采用著名的Freeman链码表示法。它不是逐点记录象素坐标,而是记录相邻象素之间连接方向的方法,这种编码有着数据压缩而又方便处理的好处。本发明采用的方向代码示意如图3-4。
其中象素P到其相邻象素的方向按逆时针顺序编码为0,1,2,...,7。
一般的边缘跟踪算法是“小虫爬法”,即模仿虫子爬迷宫总靠着一个方向前进的搜索方法。本发明的边缘跟踪算法是从上至下,从左至右顺序扫描工件图像直至找到第一个边缘点后开始进行搜索的。
三)、基于链码表示的矩计算
前面的矩(Moments)的定义式是基于区域的,直接计算是很低效的。所以,我们推导了基于链码表示的矩计算方法,该方法在链码跟踪时就可以同时进行,由于链码跟踪过程中只在区域的边缘点上进行,所以这种方法比起直接计算效率更高。
具体的方法可以参考表格3-3。
表3-3由链码计算矩
链码 | 2ΔS | 2ΔMx | 2ΔMy |
0 | 2Y | YY | 0 |
1 | 2Y-1 | Y(Y-1) | X(X+1) |
2 | 0 | 0 | XX |
3 | -2Y+1 | -Y(Y-1) | X(X-1) |
4 | -2Y | -YY | 0 |
5 | -2Y-1 | -Y(Y+1) | -X(X-1) |
6 | 0 | 0 | -XX |
7 | 2Y+1 | Y(Y+1) | -X(X+1) |
表3-3:由链码计算矩(续)
链码 | 6ΔMxx | 6ΔMyy | 12ΔMxy |
0 | 2YYY | 0 | YY(3+6X) |
1 | Y(Y(2Y-3)+2) | X(X(2X+3)+2) | Y(Y(6X+3)-4)+X(2-6Y) |
2 | 0 | 2XXX | 0 |
3 | -Y(Y(2Y-3)+2) | X(X(2X-3)+2) | Y(Y(-6X+3)-4)+X(6Y |
-2) | |||
4 | -2YYY | 0 | YY(3-6X) |
5 | -Y(Y(2Y+3)+2) | -X(X(2X-3)+2) | Y(Y(-6X+3)+4)-X(6Y+2) |
6 | 0 | -2XXX | 0 |
7 | Y(Y(2Y+3)+2) | -X(X(2X+3)+2) | Y(Y(6X+3)+4)+X(6Y+2) |
表3-3中X,Y是当前链码对应的边缘点坐标,而ΔS,ΔMx,ΔMy,ΔMxx,ΔMxy,ΔMyy分别表示每处理一个链码相应的矩S,Mx,My,Mxx,Mxy,Myy的增量。沿着边缘跟踪一遍,在不同的链码方向处根据上表就可以计算出该工件的矩来。对于X,Y的计算可以参考下面的表3-4。
表3-4:由链码计算坐标X,Y
链码 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
ΔX | 1 | 1 | 0 | -1 | -1 | -1 | 0 | 1 |
ΔY | 0 | -1 | -1 | -1 | 0 | 1 | 1 | 1 |
初值X=0,Y=0。每遍历一个链码,则根据链码值c对应的ΔXc,ΔYc来修改X,Y即可:
X=X+ΔXc,Y=Y+ΔYc
四)、多边形逼近
一个数字化的区域边界可以用多边形任意精确地逼近。事实上链码表示本身就可以看作一个以所有边缘点为顶点的多边形。在实际应用中,希望在保证误差的前提下使多边形的边数尽可能的少。有人证明了满足一定误差的最小周长多边形是存在的。有关多边形逼近的方法在许多资料上都能找到。
在本发明的***中,我们没有刻意去寻找最小周长逼近,因为只需要区域边界的满足一定误差的逼近。本发明使用了基于***合并思想而设计的逼近算法。
参见图3-5,设AB是一段边界,C和D是边界上的点。逼近过程就是:
1.连接A,B形成直线AB,考察边界上其他点到直线AB的距离,记其中最大距离为d,如果d满足一定的误差范围,则认为从A到B的边界可以用直线AB近似;否则,记最远点为C,从C处把边界分为两部分:AC段和CB段。
2.继续仿照1中的办法,分别考察AC段,BC段是否符合规定的误差,根据情况决定继续***或停止***。
3.经过***之后得到的多边形上有可能顶点数还比较多,这时候可以考察相邻的一系列顶点之间的边缘,如果它们可以用一段直线近似的话,保留近似直线的顶点作为这一系列顶点的替代。这个过程就是合并。
上述***合并思想最简单的实现是用递归过程实现。为了加快执行速度,避免递归过程对大堆栈的要求(堆栈越大,程序可以利用的动态存储空间减少,效率降低),本发明精心设计了等价的迭代算法。
五)、基于多边形表示的矩的计算
在有了多边形表示之后,希望能够进一步得到基于多边形表示的矩的计算,因为从实现的角度考虑,这样就只存贮多边形而丢掉工件图像和链码表示,从而可以节省大量空间;另外由于多边形表示的简洁性,可望在计算时间上大大加快。
下面给出基于多边形表示的矩的计算方法:
把多边形看成是一个个由其质心与每两个相邻顶点构成的三角形组成的,对于每第i个三角形,有:
m00 i=αi=(xiyi+1-xi+1yi)/2
mi0 i=αi(xi+xi+1)/3
m01 i=αi(yi+yi+1)/3
m20 i=αi(xi 2+xixi+1+xi+1 2)/6
m02 i=αi(yi 2+yiyi+1+yi+1 2)/6
m11 i=αi(2xiyi+2xi+1yi+1+xiyi+1+xi+1yi)/12
进一步,对于整个多边形,有
mpq=∑mpq i
得到mpq以后,就可以按照前面的定义计算特征φ1,φ2了。
而且可以看到,这个算法要比基于定义式直接计算的效率高的多,它的时间复杂度为0(n),这里n是多边形顶点的个数。
六)、圆弧拟合
为了处理工件中的圆弧,所以需要用圆弧拟合的方法在多边形表示的基础上进行更高层次的抽象。有关圆弧拟合的方法也很多,在本发明的***中,采用了基于多边形顶点位置的最小二乘法。
设{(x0,y0),(x1,y1),...,(xN,yN)}是拟合圆弧要用到顶点,这里N>2。
拟合圆弧的问题在本***中有两种不同的情况,一是给定一组顶点拟合出一个封闭的圆弧;二是给定一组顶点拟合出具有一定约束条件的圆弧段。拟合中用到的误差准则是使拟合出的圆弧离给定采样点的距离最小,即:
设(xc,yc,r)为拟合出的圆弧,(xc,yc)为圆心,r为半径。
误差L2=∑[(xi-xc)2+(yi-yc)2-r2],i=0,1,...,N。要达到最小。
下面给出具体的计算公式。
(1).拟合一个完整圆弧
令:
Sx=∑xi, Sy=∑yi,
Sxy=∑xiyi, Sx2=∑xi 2, Sy2=∑yi 2,
Sx2y=∑xi 2yi,Sxy2=∑xiyi 2,Sx3=∑xi 3,Sy3=∑yi 3,
这里i=0,1,...,N。又记:
A1=2·(Sx·Sx-N·Sx2)
B1=2·(Sx·Sy-N·Sxy)
A2=B1
B2=2·(Sy·Sy-N·Sy2)
C1=(Sx·Sx2-N·Sx3+Sx·Sy2-N·Sxy2)
C2=(Sy·Sy2-N·Sy3+Sx2·Sy-N·Sx2y)
则有:
xc=(C1·B2-C2·B1)/(A1·B2-A2·B1)
yc=(A1·C2-A2·C1)/(A1·B2-A2·B1)
r=[(Sx2-2·Sx·xc+N·xc2+Sy2-2·Sy·yc+N·yc2)/N]1/2
这样,(xc,yc,r)就是拟合出的圆。
(2).拟合一段通过两个端点(x0,y0),(xN,yN)的圆弧段(要求这两个端点不重合)。
令:
A=x0-xN
B=y0-yN
C=(x0+xN)·A/2+(y0+yN)·B/2
显然,A和B不能同时为0。
若A≠0,则有:
K1=2·C/A,K2=x0 2+y0 2,K3=B/A,
S1=∑[xi 2+yi 2+K1·(x0-xi)-K2]·[y0-yi+K3·(x0-xi)],i=1,2,...,N-1
S2=2·∑[y0-yi+K3·(x0-xi)]2, i=1,2,...,N-1
yc=S1/S2
xc=(C-B·yc)/A
类似地,若B≠0,则有:
K1=2·C/B,K2=x0 2+y0 2,K3=A/B,
S1=∑[xi 2+yi 2+K1·(y0-yi)-K2]·[x0-xi+K3·(y0-yi)],i=1,2,...,N-1
S2=2·∑[x0-xi+K3·(y0-yi)]2, i=1,2,...,N-1
xc=S1/S2
yc=(C-A·yc)/B
同时,有:
r=[(x0-xc)2+(y0-yc)2]1/2=[(xN-xc)2+(yN-yc)2]1/2
这里,是基于轮廓多边形的顶点做圆弧拟合的,使用上述与顶点位置而不是出现频率相关的最小二乘法能够获得很好的效果。另一方面,这种方法的效率也很高,因为它最多只需把全部顶点扫描一遍。
七)、用于验证的快速直线扫描转换
直线扫描转换是光栅图形显示学的基本问题。在本发明的***中,为了验证匹配猜测,我们在内存中开辟了一个大小为768×512的位图Bmp。在Bmp中画有被识别目标的轮廓线。在得出匹配猜测之后,把模型多边形扫描转换在猜测位置上,以得到模型与被识别目标轮廓重合的程度,达到验证的目的。
在验证时,要允许猜测位置有一定的误差。为了把验证误差控制在一定范围内,本发明在转换轮廓线时赋予这些轮廓线相应的宽度,这就需要在扫描转换时考虑线宽的处理。
(1).直线扫描转换的Bresenham法
目前常用的快速直线扫描转换算法是由Bresenham提出的。该方法基于整数加法和乘法(可以用移位操作代替),所以速度非常快。
下面是算法的C语言表示。
void BresenhamLine(int xs,int ys,int xe,int ye){ int dx,dy,x,y; char IC; int e, s1,s2,i; x=xs; y=ys; /*Initialize variables*/ dx=xe-xs; dy=ye-ys; dx=abs(dx); dy=abs(dy); s1=(dx>0)?1: (ax).?-1:0; s2=(dy>0)?1: (dy).?-1:0; <!-- SIPO <DP n="14"> --> <dp n="d14"/> IC=0; /*Interchange dx,dy so that dx>dy*/ if(dy>dx){ e=dy,dy=dx,dx=e; IC=1; } e=2*dy-dx; /*Begin of ploting*/ for(i=0;i<dx;i++){ ScanPixel(x,y); /*plot at(x,y)*/ while(e>=0){ if(IC) x+=s1; else y+=s2; e-=2*dx; } if(IC) y+=s2; else x+=s1; e+=2*dy; } }
在该算法中,ScanPixel(x,y)过程具体负责在象素(x,y)处的扫描转换。在本***中,当扫描转换模型的猜测位置时它负责完成对模型与被识别目标重合程度的计算;而在扫描转换被识别目标多边形时,它负责在Bmp中(x,y)位置处画一定宽度的点。
(2).线宽的处理
生成具有一定宽度直线的方法也有很多。最简单、高效的方法是沿着直线扫描转换的轨迹移动一个具有一定宽度的刷子。刷子的形状通常采取线条形或正方形。
线条形刷子的原理是,当直线斜率在[-1,1]之间时,把刷子置为垂直方向,刷子的中心与直线扫描转换点重合从一端移动到另一端;否则,把刷子置为水平方向即可。这种方法的问题是直线的两端总是水平或垂直的,当比较接近水平的线与比较接近垂直的线汇合时,在汇合处会出现一个缺口。参见图3-6(a)。
正方形刷子的原理是,把刷子的中心点与直线扫描转换点重合从一端移动到另一端就可。但是,这种方法效率较差,因为相邻两个扫描转换点附近的刷子会重叠,重叠区域的象素被刷了两次。参见图3-6(b)。
在本***中结合了以上两种刷子。办法是,在直线的端点处采用正方形刷子,而在内部其他点处则采用线条形刷子。参见图3-6(c)。
这种方法,既保持了线条形刷子的高效性,又克服了其端点处的缺点。
5.4软件的具体实现
该软件***采用面向对象编程(OOP)和C++类的编程技术,应用类的封装性特点主要实现了图像预处理类和工件识别类,来实现上面所说的图像处理和工件识别技术。该软件涉及到了VC++中的多视窗分割技术、动态连接库(DLL)的调用、Microsoft的VFW(Video for Windows)技术等多项软件开发技术。
5.4.1多视窗分割技术
本软件***面板采用多视窗分割技术,将整个显示屏幕分成了三个部分。分别是***控制部分、实时监视窗口部分、和处理结果显示部分。这三部分具体由三个视类组成来实现,它们分别是控制视(ControlView)、捕获视(CaptureView)、和结果视(ResultView)。它们的分布如图3-7所示。控制视放置***的一些控制组件(按钮、列表等),完成对***的功能控制;捕获视上放置视频窗,完成对整个***的监控;结果视用于显示结果。
5.4.2 VFW技术
VFW(Microsoft Video for Window)是微软公司为开发基于Windows的视频捕捉、视频编辑和视频播放等视频应用程序提供的软件开发工具。该开发工具包含了开发视频应用程序所需要的接口函数(APIs),以求简化程序员开发基于Windows的视频应用程序的工作。
VFW包括AVICAP、MCIAVI、DRAWDIB、AVIFILE、ICM等多个组件,通过这些组件间的协调工作,来完成视频图像的捕获、播放、编辑、文件管理等各种功能。其中的AVICAP子集是用来开发视频捕捉应用程序的,所以该软件也就用AVICAP子集来完成了该***的视频捕获功能。AVICAP子集包含了一个AVICAP窗口类、与视频捕捉相关的回调函数、向AVICAP窗口发送消息命令的消息宏函数集。
AVICAP窗口类是VFW定义的Windows窗口类,该子窗口的客户区用来显示采集卡传入计算机的实施视频图像。客户区里的图像可以有两种显示模式;一种是覆盖(OverLay)模式;另一种是预览(PreView)模式。覆盖模式的显示速度比预览模式要快,但是如果应用程序要对捕获的图像进行加工,就只能在预览模式,先把图像送到***内存,在内存里对图像进行加工,然后再把图像显示出来。下面通过创建一AVICAP窗口来说明其具体的应用。
创建AVICAP窗口
Windows的SDI应用程序可以在一个框架窗口中显示一个文档窗口。MFC中,文档窗口包括一个视类,一个文档类,视类只用作与用户交互的接口界面。这样可以将AVICAP类窗口定义为视类的子窗口,在窗口客户区中显示采集的视频图像,同时接受用户的命令。由于采用多视窗分割技术,该软件中有一个文档类和三个视类。我们是在视类CaptureView中实现AVICAP窗口的。
窗口的创建过程如下(在CaptureView是类的OnCreate()中):
capCreateCaptureWindow();创建AVICAP窗口
if(capDriverConnect()) AVICAP窗口与驱动程序的连接
capDriverGetCaps();
capSetCallbackOnXXX(); 设置回调函数
capCreateCaptureWindow()是AVICAP窗口创建函数。capDriverConnect()将AVICAP函数与采集卡的驱动程序连接起来,如果连接成功该函数返回真值。然后调用capDriverGetCaps()检查视频采集卡所支持的功能,返回值保存在CAPDRIVERCAPS{…}结构中。该结构里的变量表明采集卡能否支持覆盖显示模式、能否改变视频图像的采集硬件、能否改变采集的图像格式等。
capSetCallbackOnXXX()将程序员定义的回调函数通知底层驱动程序,供采集硬件发出中断消息时调用。AVICAP中定义了多个回调函数的形式来响应不同的中断消息,它们通过相似的消息宏函数设置。设置函数的参数中包含待定义的回调函数的函数指针、应用程序的句柄等。
以上是一个视频处理程序最基本部分,当与视频输入设备连接成功后即可对采集的视频流进行处理。如捕获、设置显示模式、设置视频源对话框等。
5.4.3图像预处理部分
一般情况下,成像***获取的图像(即原始图像)由于受到种种条件限制和随机干扰,往往不能在视觉***中直接使用,必须在视觉的早期阶段对原始图像进行灰度校正、噪声过滤等图像预处理。对机器视觉***来说,所用的图像预处理方法并不考虑图像降质原因,只将图像中感兴趣的特征有选择的突出,衰建其不需要的特征,故预处理后的图像输出图像并不需要去逼近原图像。在该软件中,图像预处理部分主要实现一些经典的算法,如平滑降噪算法、直方图均衡等。具体实现的类是CimagePreProcess Class。其处理函数接口如下所示。
一)、平滑降噪算法
图像常被强度随机信号(也称噪声)所污染。一些常见的噪声有椒盐(Salt & Pepper)噪声、脉冲噪声、高斯噪声等。椒盐噪声含有随机出现的黑白亮度值。而脉冲噪声则含有随机的白强度值(正脉冲噪声)或黑强度值(负脉冲噪声)。针对噪声的这些特点,实现了如下的算法。
(1).中值滤波
voidMidErase(unsigned char*SrcImg,unsigned char*DestImg,int Width,int Height)
函数功能:对一帧图像进行中值滤波
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
出口参数:unsigned char*DestImg:为处理完之后的图像数据
(2).均值滤波
void AverageFilter(unsigned char*SrcImg,unsigned char*DestImg,int Width,intHeight)
函数功能:对一帧图像进行均值滤波
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
出口参数:unsigned char*DestImg:为处理完之后的图像数据
(3).高斯滤波
void Gaussian(unsigned char*SrcImg,unsigned char*DestImg,int Width,intHeight,double StdError):
函数功能:对一帧图像进行高斯滤波
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
出口参数:unsigned char*DestImg:为处理完之后的图像数据
二)、边缘提取算法
图像分析和理解的第一步常常是边缘检测(edge detection)。而该视觉***正是基于边缘进行特征提取,而后进行识别的。实现的算法及接口函数如下所示。
(1).Sobel算子
void Sobel(unsigned char*SrcImg,unsigned char*DestImg,int Width,int Height)
函数功能:对一帧图像用Sobel算子进行边缘提取
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
出口参数:unsigned char*DestImg:为处理完之后的图像数据
(2).Prewitt算子
void Prewitt(unsigned char*SrcImg,unsigned char*DestImg,int Width,int Height)
函数功能:对一帧图像用Prewitt算子进行边缘提取
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
出口参数:unsigned char*DestImg:为处理完之后的图像数据
(3).Laplacian算子
void Laplacian(unsigned char*SrcImg,unsigned char*DestImg,int Widt,intHeight)
函数功能:对一帧图像用Laplacian算子进行边缘提取
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
出口参数:unsigned char*DestImg:为处理完之后的图像数据
(4).梯度算子(roberts)
void Gradient(unsigned char*SrcImg,unsigned char*DestImg,int Width,intHeight)
函数功能:对一帧图像用梯度算子进行边缘提取
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
出口参数:unsigned char*DestImg:为处理完之后的图像数据
(5).Marr算子
void Marr(unsigned char*SrcImg,unsigned char*DestImg,int Width,int Height)
函数功能:对一帧图像用Marr算子进行边缘提取
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
出口参数:unsigned char*DestImg:为处理完之后的图像数据
(6).Kirsch算子
void Kirsch(unsigned char*SrcImg,unsigned char*DesImg,int Width,int Height)
函数功能:对一帧图像用Kirsch算子进行边缘提取
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
出口参数:unsigned char*DestImg:为处理完之后的图像数据
三)、图像直方图
图像直方图说明了一幅图像的灰度分布情况,是图像分析中一种很简单和很有用的工具。而直方图均衡则是图像增强的一种有效方法。其函数接口如下。
(1).求取直方图
void Histogram(unsigned char*SrcImg,double DestData[256],int Width,int Height)
函数功能:求一帧图像的直方图
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
出口参数:double DestData[256]:存放图像的直方图,下标表示灰度值,数组
表示具有此灰度值的像素的个数
(2).直方图均衡
void HistogramBalance(unsigned char*SrcImg,unsigned char*DestImg,intWidth,int Height)
函数功能:用直方图度图像进行增强
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
出口参数:unsigned char*DestImg:为处理完之后的图像数据
四)、图像二值化
由于计算二直图像特性的算法非常简单,容易理解和实现,并且计算速度很快,再加上二值视觉所需的内存小,对计算设备要求低等因素,所以,二值视觉***在机器视觉中是十分有用的。该软件实现了如下的二值化算法。
(1).简单二值化
void BinaryImg(unsigned char*SrcImg,int*SignImg,unsigned char
*DestImg,int Width,int Height,int Thd)
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
int Thd:所取阈值大小
出口参数:int*SignImg:为处理完之后图像的符号表示,其中1表示物体,0表示背景
unsigned char*DestImg:为处理完之后的图像数据
(2).自动阈值二值化
int AutoThresh2(unsigned char*SrcImg,int Width,int Height)
int AutoThresh(unsigned char*SrcImg,int Width,int Height)
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
出口参数:int:返回所需的阈值
五)、细化
细化(thinning)是一种图像处理运算,可以把二值图像区域缩成线条,以逼近区域的中心线,也称之为骨架和核线。细化的目的是减少图像成分,直到只留下区域的最基本信息,以便进一步分析和识别。其函数接口如下。
Thinking(unsigned char*SrcImg,unsigned char*DestImg,int Width,int Height)
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
int Width:图像帧的宽度
int Height:图像帧的高度
出口参数:unsigned char*DestImg:为处理完之后的图像数据
5.4.4工件识别部分
该部分主要完成工件的识别,具体实现的类是CPRecognition Class。它实现了基于边缘的链码算法,角点、顶点等特征提取算法,多边形拟和算法,匹配猜测算法,及模型库的维护等功能。其主要函数接口如下,具体清参看源程序代码。
全局变量定义在PRecognition.h头文件中。
(1).void FindObjects(unsigned char*SrcImg)
函数功能:通过链码寻找图像中的物体
入口参数:unsigned char*SrcImg:为将要处理的一帧图像的像素
输出:如果找到符合要求的物体则弹出一提示框“Normal exit FO!”,否则会弹出一些寻找失败的信息。
(2).void Fit(POLY*pp)
函数功能:通过顶点来拟合多边形
入口参数:POLY*pp:要拟合的多边形
输出:如果成功回弹出一提示框显示多边形的一些参数,否则会出现一些失败信息。
(3).int LocatePoly(POLY*mp,POLY*op,unsigned char*img)
函数功能:模型库中多边形mp和目标多边形op进行匹配
入口参数:POLY*mp:模型库中的多边形
POLY*op:目标多边形
unsigned char*img:用于验证的图像缓存
输出:如果匹配成功将显示一消息框报告成功,否则返回值为零。
(4).int LoadModelFile()
函数功能:装入模型库
输出:如果装入失败回显示相应的消息框指示装入失败;否则就返回1
5.5本发明的特点是:
1)研制开发了具有多台摄像机的多路切换电路的视频输入与A/D单元以及所需的外部触发电路。根据视频总线设计专用的流水线计算单元(如直方图统计、双阈值二值化、二值图像的面积、矩等基本参数的计算)以及扩充其它专用功能模块。
实现的主要功能如下:
●实时图像采集功能:
视频输入信号CCIR、RS170标准、隔行或逐行扫描。
采集速度25帧/秒。
图像分辨率512×512×8bit
图像板内存储1024×1024×16bit
与视频总线相连的图像加速板IPA及专用的流水线计算单元。
视觉***总线:PCI总线。
●多摄像机输入:
可同时支持8个物理像机,每个物理像机又可对应4个虚拟像机。
对于不同的像机安装方式,固定和移动提供相应的视觉校正功能。
像机对(16mm,25mm,50mm,75mm)镜头任选。
●具有与机器人的装配作业机传送带节拍(间歇式)或慢速(6-12件/分)相适应的实时检测和识别功能。传送带的状态可内外触发电路和串行接口的通讯来与视觉***同步。
●视觉***与机器人控制器的通讯只传输识别结果或某些参数,而不是图像数据,因而采用RS-232借口,使***在现场工作可靠。
2)以C++语言和机器汇编语言为主。编制视觉***的识别软件。
其中包括:
●编制允许有一定的接触或遮挡的具有比例(Scale),旋转(Rotation)及位移Translation)不变性的二维工件识别软件。对于几何边数小于30,孔数小于10的工件实时提取多类基于总体和局部的特征。主要的基本特征参数有:
●面积、周长
●孔数及几何布局
●几何中心及重力中心
●主轴方向
几轴与重力的轴的方向差
●紧凑度(compact index)
●长度特征(enlongation index)等
并在以上基本特征基础之上
●编制基于区域模板匹配的实时工件定位和识别软件以及开发数字形态学的实时处理软件。
●编制基于梯度图像的实时模板匹配算法软件。
●研究一种基于CAD模型和视觉感知组合(visual perceptionorganization)基础之上的单三维物体的动态识别和三维定位算法。在具体应用过程中,通过***开关和参数设置功能选择不同应用场合下的优化识别方案,对于一般复杂程度的工件具有1-10工件/秒的识别速度,平面定位精度误差不大于1像素,识别率大于96%,拒识率大于99%。
3)以C++语言维基础,编制视觉***的***软件和各种辅助软件。
其中包括:
●具有图形(线条、圆弧等几何图形),开窗(windows),标尺(Rulers)。图像放大(Zoom)、旋转(Rotation)和平移(Pan)等编辑显示功能。
●编制方便迅速的视觉信息管理软件,有效的安排在线、离线数据库的使用。
●编制对摄像机进行校正的支持软件。采用方便的人机交互方式,结合精度较高的测试工具,完成图像像素长宽比、物理尺寸几何校正,计算摄像机的有效焦距、图像中心及相对主参考系的旋转、平移等参数。
4)光照条件:针对装配机器人的特点,允许采用背透光、结构光等特殊光源,可采用光强稳定的、漫射的和无阴影的荧光灯光源。
5.6本发明的***所达到的一些性能指标如下:
1)硬件方面
①实时图像采集
●支持多摄像机输入(可同时支持8个物理像机,每个物理像机又可对应4个虚拟像机),对于不同的像机安装方式提供相应的视觉校正功能。
●视频输入信号CCIR、RS170标准、隔行或逐行扫描。
●采集速度25帧/秒(CCIR),或30帧/秒(RS170)。
●图像分辨率512×512×8bit。
●图像板内存储1024×1024×16bit。
●支持PAL/NTSC/SECAM制式模拟输入,能接收复合视频和S-Video信号输入。
●支持YUV、RGB、YcrCb多种格式输出。
●与视频总线相连的图像加速板IPA及专用的流水线计算单元。
●支持图像窗口平滑伸缩和任意剪裁。
②实时图像处理
●与专用视频总线相连。
●对512×512×8bit的图像,在X和Y方向上能分别完成最大窗口为6×7的二维卷积运算,可实现线性平滑去噪、边缘提取、边缘增强及二值图像细化等各种典型低层次处理算法。
●具有微机接口,主机可动态改变控制寄存器和系数寄存器参数。
●高速RAM构成外部LUT表,主机可加载不同内容,实现复杂非线性变换。
③总线规范
●零等待PCI总线接口。
●可扩展的视频总线接口,能直接输出数字视频。
④装配控制
●具有与机器人装配作业及传送带节拍(间歇式)或慢速(6-12件/分)相适应的实时检测和识别功能。传送带的状态可通过串行接口的通讯来与视觉***同步。
●视觉***与机器人控制器的通讯采用RS-232借口,仅传输识别结果和控制参数。
2)软件方面
①驱动程序
●基于WINDOWS98平台,适于移植到网络环境。
低层次图像处理部分
●简单理想工况下,通过填写寄存器中适当的值,用硬件实现实时处理。复杂背景弱噪声下,用主机实现近实时处理。
②高层次图像识别部分
能识别有一定的接触或遮挡的工件,对检测识别的对象具有比例旋转及位移不变性。对于几何边数小于30,孔数小于10的工件,可实时提取多类基于总体或局部的特征。识别时利用的主要基本参数是:面积、周长、几何中心、主轴方向和孔数(及几何布局)等。
Claims (1)
1.一种基于PCI和视觉总线的可重构机器视觉***,其特征在于,该视觉***包括:
一多路模拟视频通道开关[1],用于支持多个摄像机的图像输入;
第一低通滤波器[2]和第二低通滤波器[4],用于对摄像机输入的图像信号进行滤波;
第一A/D量化、解码模块[3]和第二A/D量化、解码模块[5],用于对经滤波后的信号量化和解码;
一数字信号处理***[6],用于对量化和解码的信号处理;
一帧存储器[7],用于量化和解码后信号的存储;
一视频总线扩展接口[8],用于模块之间的扩展连接;
一总线控制器[9],用于控制各地址总线、数据总线和控制总线的识别和控制;
一图像预处理模块[10],用于接收来自主机的参数,改变配置,实时完成不同低层图像特征提取,包括边缘、小波变换;
一查找表[11],用于完成非线性运算;
一PCI总线接口[12],用于PCI总线和地址总线、数据总线和控制总线之间的连接;
一带有异步串行通讯接口[14]的计算机[13],用于***的驱动、图像处理、目标识别的控制;
所述图像处理包括图像预处理、特征抽取和分割;图像预处理对摄像机输入的图像进行灰度校正、噪声过滤和畸变校正;特征抽取和分割完成边缘检测与连接、纹理分析、区域分割;目标识别用于实现运动目标检测、模板匹配、部分遮挡情况下的工件识别;
多路模拟视频通道开关[1]分别与第一低通滤波器[2]、第一A/D量化、解码模块[3]和第二低通滤波器[4]、第二A/D量化、解码模块[5]连通,构成主、副高速图像输入通道;主通道完成边缘检测、滤波、二维卷积运算;副通道可作为实时数字视频处理的图像输入通道;
第一A/D量化、解码模块[3]与一总线控制器[9]相连接;并与视频总线扩展接口[8]互连;第二A/D量化、解码模块[5]和数据总线、控制总线连通;
数字信号处理***[6]与帧存储器[7]和视频总线扩展接口[8]互连;帧存储器[7]还与图像预处理模块[10]互通;
总线控制器[9]和一图像预处理模块[10]连通,并各自与地址总线、数据总线和控制总线连通;
地址总线、数据总线和控制总线分别与查找表[11]和PCI总线接口[12]、总线控制器[9]连接;PCI总线与计算机[13]连通,能同时用于局部阈值和局部阈值的非线性处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021394709A CN1170232C (zh) | 2002-10-16 | 2002-10-16 | 基于pci和视觉总线的可重构机器视觉*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021394709A CN1170232C (zh) | 2002-10-16 | 2002-10-16 | 基于pci和视觉总线的可重构机器视觉*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1403932A CN1403932A (zh) | 2003-03-19 |
CN1170232C true CN1170232C (zh) | 2004-10-06 |
Family
ID=4750098
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021394709A Expired - Fee Related CN1170232C (zh) | 2002-10-16 | 2002-10-16 | 基于pci和视觉总线的可重构机器视觉*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1170232C (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100550817C (zh) * | 2004-02-15 | 2009-10-14 | 华为技术有限公司 | 实现组播带宽扩展的数字用户线接入复用器及其数据传输方法 |
CN100414249C (zh) * | 2005-05-26 | 2008-08-27 | 上海交通大学 | 料场测量的计算机自动测量的视觉*** |
CN100427876C (zh) * | 2005-05-26 | 2008-10-22 | 上海交通大学 | 料场测量的计算机视觉***自动测量的方法 |
US7412554B2 (en) * | 2006-06-15 | 2008-08-12 | Nvidia Corporation | Bus interface controller for cost-effective high performance graphics system with two or more graphics processing units |
CN101308543B (zh) * | 2008-07-04 | 2010-08-25 | 刘显福 | 一种数据流图像帧的分割识别方法及其装置 |
CN101567078B (zh) * | 2009-03-27 | 2011-06-22 | 西安交通大学 | 一种双总线的视觉处理芯片架构 |
CN101510295B (zh) * | 2009-04-01 | 2013-01-23 | 苏州有色金属研究院有限公司 | 基于PCIe和Vision Assistant的机器视觉***的设计方法 |
JP5513490B2 (ja) | 2009-04-10 | 2014-06-04 | パナソニック株式会社 | 物体検出装置、物体検出システム、物体検出用集積回路、物体検出機能付きカメラおよび物体検出方法 |
CN101930073A (zh) * | 2010-03-30 | 2010-12-29 | 成都市猎户座科技有限责任公司 | 防空武器反隐身空间调制干涉成像光谱目标识别*** |
CN102004919A (zh) * | 2010-11-03 | 2011-04-06 | 天津工业大学 | 一种目标检测与定位方法 |
US20140320608A1 (en) | 2010-12-13 | 2014-10-30 | Nokia Corporation | Method and Apparatus for 3D Capture Synchronization |
CN103716691B (zh) * | 2012-09-29 | 2017-10-27 | 腾讯科技(深圳)有限公司 | 一种视频采集方法和装置 |
US9898657B2 (en) * | 2014-10-30 | 2018-02-20 | Ming Cui | Four-dimensional code, image identification system and image identification method based on the four-dimensional code, and retrieval system and retrieval method |
CN104954760B (zh) * | 2015-06-30 | 2017-12-05 | 西安中飞航空测试技术发展有限公司 | 机载通用视频采集*** |
CN106445878A (zh) * | 2016-11-10 | 2017-02-22 | 成都旋极历通信息技术有限公司 | 一种在线可重构pci接口板卡平台 |
CN109598718B (zh) * | 2018-12-06 | 2020-12-04 | 安徽省华腾农业科技有限公司经开区分公司 | 设备更换需求分析机构 |
CN111241669B (zh) * | 2020-01-07 | 2021-05-11 | 上海索辰信息科技股份有限公司 | 基于遗传优化算法的光学产品模型优化方法及*** |
-
2002
- 2002-10-16 CN CNB021394709A patent/CN1170232C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1403932A (zh) | 2003-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1170232C (zh) | 基于pci和视觉总线的可重构机器视觉*** | |
CN100350429C (zh) | 图像处理装置、方法 | |
CN1194318C (zh) | 物体区域信息记述方法和物体区域信息生成装置 | |
CN1292383C (zh) | 视觉装置 | |
CN100343873C (zh) | 图像处理装置、方法 | |
CN1208970C (zh) | 图像处理装置 | |
CN1747559A (zh) | 三维几何建模***和方法 | |
CN1191536C (zh) | 手形手势识别装置及识别方法 | |
CN1213592C (zh) | 采用自适应二值化的图象处理方法和设备 | |
CN1271568C (zh) | 信息变换*** | |
CN1816825A (zh) | 信号处理设备和信号处理方法、以及程序和记录介质 | |
CN101064039A (zh) | 图像处理装置和方法、记录介质及程序 | |
CN1607551A (zh) | 基于图像的超现实主义三维脸部建模的方法和设备 | |
CN1178460C (zh) | 图象编码方法和图象编码装置 | |
CN1754384A (zh) | 图像处理装置和方法、学习装置和方法、记录介质以及程序 | |
CN1190963C (zh) | 数据处理装置和方法,学习装置和方法 | |
CN1627315A (zh) | 目标检测 | |
CN1610412A (zh) | 图像处理装置和图像处理方法以及程序 | |
CN1940965A (zh) | 信息处理设备及其控制方法 | |
CN1947152A (zh) | 图像处理方法和设备、记录介质、及程序 | |
CN100348050C (zh) | 目标检测 | |
CN1678056A (zh) | 图像处理装置与方法、记录介质以及程序 | |
CN1729485A (zh) | 图像中的移动物体的跟踪方法及装置 | |
CN1839410A (zh) | 图像处理设备、摄像设备、图像处理方法 | |
CN1645241A (zh) | 摄影装置、图像处理装置、摄影装置的图像处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20041006 Termination date: 20111016 |