也许你仍然希望能得到咨询专家的帮助,不过紧缩包裹型(Shrink-Wrapped)开发工具包现在已经使得缺乏专业经验的开发者也能够照样承担更多基于视觉的项目。
要点
● 与视觉相关的项目并非全都需要咨询专家的服务;在硬件供应商和开发工具供应商的帮助下,缺乏视觉系统开发经验的开发者通常也可以完成大部分(即使不是全部)开发工作,并且为他们的公司节省费用。
● 在开始视觉系统开发之前,你必须回答大约五六个问题;你的答案将基本决定系统的硬件成本。
● 你只要选择能够在菜单驱动环境中能使你开始设备开发工作,然后通过图形编程或语法编程来完善程序,就可大大提高效率。
● 习惯于视觉系统在安装之后需要悉心呵护的观念;你常常无法预见在系统运行一段时间之后可能有必要调整算法的各种理由。
成功地开发一种基于视觉的设备可能需要很多专业知识,以致许多打算这样做的开发者都不愿意尝试这种任务,而转向求助于那些通过掌握技术的方方面面细微差别建立自己职业生涯的咨询专家。通常,一位咨询专家不仅可以为你节省数倍咨询费的费用,而且还可以节省大量宝贵的时间。即使这样,有些适用于基于视觉的系统开发的紧缩包裹型软件包却使那些没有机器视觉或图像分析经验的人能泰然承担的项目数量不断增加。
如果你缺乏适当的经验,则要走好的第一步是设法确定哪些任务需要外界帮助,哪些任务是你有可能用预包装软件自己迅速完成的。提供开发工具和硬件的厂商通常可以帮助你做出这种判断。在很多情况下,这些厂商的网站都有帮助做出这种决定的工具。给一个这样的厂商打个电话,你通常就可以与一位能搜集有关你设备信息的应用工程师取得联系。在适当的时候,大多数厂商会向你推荐他们熟悉其工作情况的咨询专家。通常,最经济的办法就是,某个项目中仅仅某些部分使用咨询帮助,例如照明部分。
图像分析和机器视觉是相关而又不同的两个领域。从某种意义上说,图像分析是机器视觉的一部分。然而,从另一种意义上说,图像分析是一门更广的学科。实际上,这两领域的分界线常常是模糊不清的。
机器视觉应用通常具有商业味道。例如,机器视觉是许多制造过程的关键部分。另一方面,“图像分析”--按多数人的理解--更可能应用于科学研究实验室。一些专家说,图像分析常常处理的操作不及机器视觉处理的操作明确。对未知物体,例如学术实验室中(图1)或者甚至临床病理学实验室中的动物组织细胞的图像进行表征或分类就是一例。
图1 冷泉港(纽约)实验室霍华德休斯医学院的一个研究小组利用Matlab及其图像捕获和图像处理工具箱来研究哺乳动物的大脑如何运作。利用图像捕获工具箱,研究人员就可将显微镜图像从摄像机直接流式传输到Matlab,并可利用图像处理工具箱功能来分析一段时间内的图像。为了一按按钮就能进行捕获和分析,研究人员在Matlab中创造了生动的图形用户界面。
在机器视觉中,你通常对照相机或图像传感器所观察的物体有一般的了解,但你需要获得更具体的信息。产品检测设备属于机器视觉这一类。例如,你知道一幅图像描绘的是哪种印制电路板模型,但是你必须确定所有元件的类型是否正确以及位置是否得当。确定元件是否正确和位置是否适合当然要涉及到图像分析,但是这种分析比临床实验室中的那种分析更为直观。
机器视觉任务的分类
几位专家将主要机器视觉任务分为以下几类:
● 对诸如垫圈、螺母和螺栓等元件进行计数,并从噪声背景中提取可视信息。
● 测量 (也称为测定) 角度、尺寸以及相关位置。
● 读出,包括诸如从条形码中获取信息、对蚀刻在半导体芯片上的字符的OCR(光学字符识别)以及读出二维DataMatrix码等操作。
● 对物体进行比较,例如,将生产线上的单元与同样类型的KGU(已知优质单元)进行比较,找出诸如缺少元件或标签等的制造缺陷。这种比较可能是简单的图样相减,也可能涉及到几何或矢量图形匹配算法。如果被比较物体的尺寸或方向各不相同的话,就必须采用后者。比较的类型包括检测物体的有无、匹配色彩和比较印刷质量。被检查的物体可能与阿司匹林药片一样简单,其正确标记需在包装之前加以验证。
上述列表由于很具体,所以可能意味着你可以利用菜单驱动的基于图形的开发工具来创建机器视觉设备,而不是使用如C++这样的基于文本的语言来编写代码。尽管具有长期用基于文本的语言对机器视觉设备进行编程的开发者通常更愿意坚持使用他们多年来成功运用的工具,但你的确可以使用多种菜单驱动的图形化应用开发软件包之一。虽然业界中的一些人对这种不愿改变的倾向颇有微词,但要问一问自己,如果你聘请来处理某种设备的咨询专家第一次尝试使用新软件包来完成你的工作的话,你的感受如何呢?
即使在各种基于图形的工具当中,供应商们也把那些真正提供可编程能力的和那些仅允许用户配置设备的区分开来。这种可配置的方法能让你更快捷地使设备运行,并能提供许多开发者所需的灵活性。编程功能可为开发者提供更大的灵活性,但却会延长开发时间-特别是对于那些第一次使用一种工具的人来说更是如此。在某些情况下,可配置的方法和可编程的方法都以同样的语言产生输出,从而使你能利用编程功能来修改或提高你用可配置的方法创建的设备(图2)。这样的灵活性的潜在好处是巨大的:你可以使用更强大的工具来完善某种设备,并可借助基本的工具,迅速使之在原始级工作。这种方法可降低在完善方法上浪费时间的可能性,而你后来发现这些方法存在根本缺陷。
图2 利用Data Translation公司的Vision Foundry进行设备开发的主要替代技术例证了工具箱的优越性,工具箱使你可以利用可配置的基于菜单的交互式工具快速验证概念,然后再通过编程功能改进其设备。在Vision Foundry中,你可以通过编写直观的脚本来完成大部分编程任务。
正在发生的调整
也许更重要的是如何利用两种方法的轻松互换使用来简化许多机器视觉设备中正在进行的不可避免的调整。例如,在AOI (自动光学检验)中,你或许希望剔除任何与KGU不同的UUT (被测单元)。唉,如果采用这种策略,检验过程大概会剔除你生产的大部分单元,即使其中大多数单元具有可以接受的性能。说明由于次要差别而导致AOI系统剔除一个优质部件的简单例子就是UUT使用的某个元件的日期代码与KGU上的等效元件的日期代码不同。
此时,你可在设备的设计期间预见到数据代码问题,并确保系统忽略包含日期代码的区域内的图像差别。遗憾的是,尽管如此,其它次要差别更难预料,你必须预计到你发现这些次要差别时需要修改设备。实际上,一些AOI系统的软件几乎能自动地进行这样的修改;如果你告知系统它剔除了优质单元,则软件就会将单元的图像与原始KGU进行比较,并在有差别的区域内不再对随后的单元进行检验。
不过,这样的方法有时候会产生并不令人满意的结果。假设检验系统安装在一间有外部光线可以从窗户进入的房间内,从而使UUT的照度发生变化。虽然检查员可以不假思索地适应这种变化,但是这样的变化会导致视觉系统将相同物体的图像分为不同物体的图像,从而引起不可预料的检验失败。尽管遮住窗户可以防止外部光线进入,但是调整测试程序使KGU在各种照明极端情况下都能通过也许更加经济合算。
即使如此,这个例子也指出了照明在机器视觉和图像分析中的重要性。照明本身就是一门科学或艺术。各种各样的照明技术具有不同的优点和弱点,而对UUT的照明方法可以解决或改进普通的机器视觉问题。
项目成本及时间期限
机器视觉项目的成本相差很大。有几个这样的项目的成本不超过5000美元,其中包括硬件、预包装软件开发工具以及设备开发者的工时成本。不过,如此低廉的项目成本很可能不包括为了达到满意性能而对设备进行调整和调试的成本。在成本范围的另一端,项目成本超过一百万美元。这类项目中最常见的可能就是在汽车和航空工业中对自动生产线的重大改进。根据一些供应商说,最常见的项目成本通常从数万美元到略高于十万美元不等。从管理层批准项目启动到视觉系统在生产中正常使用的项目期限通常不到六个月,而且常常只有一两个月。
并不令人惊讶的是,几乎所有视觉项目都从获得基本问题的答案开始。这些问题的答案充分地确定了视觉系统硬件的成本:需要多少台摄像机?必须具有多高的图像分辨率?彩色成像是否必要?每秒必须采集多少帧?用不用产生模拟输出的摄像机?如果这样,就需要选择一个帧接收板来将模拟信号转换成数字形式,在必要时还要图像帧的采集与外部触发事件同步(参考文献2)。
尽管一些用于模拟摄像机的帧接收器可以同时接收来自多个摄像机的输入,但是一次为一台摄像机提供一个接口的电路板更为常见。如果你选择具有数字接口的摄像机,你会使用能够进行图像处理和图像采集的“智能”摄像机吗?还是由摄像机将原始(未处理的)图像数据发送到主机PC进行处理?还有,数字摄像机采用哪种接口标准或总线与主机PC通信呢?适用于某些总线的数字摄像机需要帧接收器。但是,与用于模拟摄像机的帧接收器不同,用于数字摄像机的帧接收器不进行模/数转换。
与硬件相关的考虑因素可能会超越这些问题。而且,一些问题采用了通常正确的默认假设,即视觉系统的主计算机是一台运行标准版本Windows (www.microsoft.com)的PC。机器视觉系统有时候在实时操作系统下运行,而图像分析软件则经常在Unix或Linux下运行。此外,与其它实时系统一样,许多实时视觉系统采用与Pentium (www.intel.com)或Athlon (www.amd.com)器件不同的CPU。
摄像机接口
使摄像机与主机计算机接口仍然是视觉系统设计的一个关键问题。尽管出现了数字化接口的摄像机,尽管成像系统采用IEEE 1394 (也称为FireWire和i-Link)来与摄像机接口,但摄像机接口的选择仍值得仔细考虑。(正在迅速成为主流高速PC外设接口的USB 2.0并不是工业成像领域的一个要素,这主要是因为,虽然其480 Mbps的数据传输速率名义上比最初版本的FireWire更高,但USB 2.0的以主机为中心的协议对于成像来说却比FireWire更慢。)
FireWire是消费类视频系统和家庭娱乐系统中流行的高速串行总线。这种即插即用的总线采用多点体系结构和对等层通信协议。该标准的最初具体化包括速率高达400 Mbps的数据传输。数据传输速率最终将达到3.2 Gbps。2003年1月,IEEE发布了1394b,而且其拥护者们期望不久就可以在视觉硬件中看到800Mbps的版本。不过,尽管工业FireWire摄像机具有合理的成本,但它在消费类设备中的可用性在不断增加(在消费类设备中,所需的分辨率--有时候还有帧频--均比工业设备中所要求的更为适度),其纤细而柔软的串行电缆用起来很方便,其总线数字技术具有抗扰性,但选用这类摄像机仍然受到限制。
成本可能会限制FireWire在工业成像领域中的普及。工业FireWire摄像机的成本要比具有相同帧频和分辨率的工业模拟输出摄像机高。另一方面,FireWire摄像机与模拟摄像机的成本比较有时候可能会产生误导。在具有内置FireWire端口的系统中,摄像机通常不需要额外的接口硬件。这种摄像机包括一个ADC(模/数转换器),而模拟摄像机则需要帧接收器来完成必要的ADC功能(图3)。
图3 National Instruments公司的基于Celeron的CVS-1454型小巧视觉系统(Compact Vision System)例证了为工厂环境设计的机器视觉硬件。虽然这一系统(右上)并非一个标准的办公室PC,但它包含三个FireWire端口从而不需要特殊的摄像机接口硬件。该系统与National Instruments公司的LabView图形化开发环境配套使用,而这个开发环境能通过交互式图形化工具快速开发程序,如果有必要,随后再使用完整的图形化编程功能调试设备。
FireWire摄像机采用IEEE 1394的同步协议,这就能保证带宽并确保数据包按照它们的发送顺序到达(如果他们全部到达的话)。该标准的其它协议(异步的)保证消息传递但不确保数据包按照它们的发送顺序到达。每个同步设备可以每隔125μs--也就是以8kHz的最大速率--发出一个带宽请求。起总线管理器作用的设备赋予每个发出请求的设备在随后125μs内发送预定数目数据包的权力。
总线上的同步设备越多,每个设备可得到的带宽就越少。当FireWire总线上仅有一台摄像机时,一台1280×960像素黑白摄像机差不多可以每秒发送15帧。一台640×480像素的FireWire彩色摄像机大约可以每秒发送30帧。尽管这两个例子中的任一个似乎都不会使用总线的全部可用数据传输容量,但每个像素的比特数以及摄像机使数据格式化的方法却会对最大帧速率产生影响。附带说明一下,分辨率越高并不总是越好。分辨率较高的摄像机不仅价格更贵,帧速率通常比分辨率较低的摄像机更慢,而且还更容易揭示UUT和KGU之间微不足道的差别,从而提高AOI系统错误地检测故障的速率。
更多摄像机接口
除了FireWire之外,数字输出摄像机的接口选件还包括RS 422并行接口和Camera Link(表1)。RS 422摄像机接口还没有完全标准化,所以通常需要摄像机专用接口卡。从用于模拟输出摄像机的接口卡的意义上来说,这些卡并不是帧接收器,但它们通常同样可插入主PC的PCI总线。由于有时候需要50多根连线,并行接口被证明并不适用。不过,RS 422数字摄像机仍然受欢迎,并且继续用得广泛。
AIA的Camera Link是性能最高的数字输出摄像机接口标准。与FireWire不同,Camera Link允许每条总线上只有一台摄像机,但许多PC可以容纳多条Camera Link总线。Camera Link可在并行组合的单向链路、串行链路和点对点链路上,利用SERDES(串行化/解串行化)技术以高达4.8 Gbps的速度发送数据。每条链路可传送来自7个通道的数据,并使用每条链路需要两根导线的LVDS (低电压差分信号传输) 技术。通道的数目决定了Camera Link总线的最大数据速率。一条配置齐全的总线可以有76个通道,其中包括11条链路和22根导线,不过该标准考虑到具有28个通道和56个通道的总线 (4和8条链路及8和16根连线)。每条Camera Link总线通常需要PC中的一个独立接口卡。
选用Camera Link总线目前还涉及到编写额外的软件。由于在PC中生成Camera Link总线的卡既稀少又没有完全标准化,所以紧缩包裹型应用程序开发软件包通常缺乏Camera Link启动程序。尽管如此,如果需要Camera Link的引人注目的速度,那你就没有多少选择余地。
某些时候,你可利用智能摄像机来减少视觉系统必须处理的数据量,因为智能摄像机可以先对其采集的数据进行处理或压缩,然后再将数据发送给主机PC。这样的摄像机有时候既可降低摄像机与主机之间的数据速率又可降低主机与主机中负载之间的数据速率,但成本较高。然而,你必须保证数据压缩要么是真正无损的,要么是不需要压缩中损失的数据。
评论
查看更多