tag 标签: 视觉系统

相关博文
  • 热度 2
    2022-10-12 18:03
    1112 次阅读|
    0 个评论
    数字化转型近期已成为一个热门词汇,尤其是对于拥有高价值制成品和高度管制行业的市场。但是,究竟数字化转型的哪个方面真正引起了人们的关注?它仅仅涉及数字化所有基于流程的想法,还是人们渴望得到更深层次的东西? 数字化可追溯性是数字化转型( DX)愿望清单上的首个要求 可追溯性在生产过程中起到关键作用。如果你需要追溯一项客户投诉以确定根源分析,你需要花时间追溯到流程中的每一个点,以确定错误逃逸所在的位置。也许你需要追溯来查明导致市场召回产品的具体原因。使用纸质程序人工启动追溯步骤,可能既费时又费钱。 将可追溯性程序转化为数字过程可以显著地影响效率,并提供更多数据来进一步改善基于纸件的过程。据统计,利用数字工具的公司在表现上往往优于数字化之前。这是因为他们更具备利用相关工具处理追溯性投诉的能力,这些工具为他们提供了相关数据,防止今后再次发生已经发生的错误。 我们在近期对各大制造商进行的一项调查惊讶地得知,仍有大量的关键流程仍由人工操作。然而,消费者已经开始期望在产品和品牌责任方面达到更高的质量标准,充分理解制造商有了较为先进的机器和技术,因此他们的期望可以(而且应该)得到满足。 消费者已经在他们的日常生活中使用并依赖可追溯性服务,期望在包裹通知邮件中收到一张包含日期、时间和地址等附带信息的照片,以此证明交付成功。这种日益增长的期望只会给制造业带来了进一步的压力,尤其是在质量控制和改善可追溯性方面。 幸运的是,这并不复杂 机器视觉项目专用高质量相机的成本实质上已成为重点。多亏规模庞大的智能手机产业,高质量的小型相机无处不在,而且不断改进,这使得计算机视觉和人工智能比以往任何时候都更轻松地被整合到工厂自动化应用中。 通过四个步骤即可建立专属于你的数字化追溯视觉系统 1. 首先,你需要一台相机 当今相机选择诸多,无论是智能手机、网络摄像头、数码单反相机还是工业级机器视觉相机。在挑选相机时,你希望收获能自动对焦的相机。这部相机需要能够清楚地检测并聚焦于目标,因此无需花费额外时间来调整焦点。从图像质量的角度来看,你也想确保你能够在各种照明条件下捕捉到你所寻找的细节水平。 使用诸如 GigE Vision和USB3 Vision符合机器视觉标准的相机,或支持UVC的网络摄像头相机,为使用标准协议的软件提供了一种简单的接口方式。这将使软件集成变得更轻松,省去了手动移动文件或使用SD存储卡的步骤,这些步骤可能极为耗费时间。 你可能认为选择智能手机更为方便,但有些厂区不允许设备进入生产车间,你仍然会面临将照片传输到你的数据库 /存储库的挑战,拖慢了进程,因此它们被持续使用的可能性极小。 2. 接着,你需要一台主机 你需要一台能够连接到相机以检索图像的个人计算机。你可能希望在工厂的成品品质管制区指定一台专用个人计算机作为扫描工作站。专用站允许任何人员随时收集图像,或按批号或条形码访问存储的图像。该独立运作的站点的另一个优势是尽职 , 可以在多名操作人员之间共享,而不是依靠个别操作员和他们的工作站个人计算机来拍摄快照。 3. 然后,插入条形码扫描仪 条形码在工厂里随处可见,因此在该过程中,我们将假设你已经有了条形码。如果你没有条形码,请记住,插在个人计算机上的条形码扫描器将会用得着,以避免键入(或错误键入)产品信息。无论你是对你生产的各个产品进行序列化,还是按工单进行序列化,将代码与图像的文件名一起保存,都可以省下大量的追溯时间。图像在几分钟内可以根据产品条形码进行全面搜索,为今后省时省力。 4. 最后选择一个存储库,无论是内部存储还是基于云的存储 你希望能够压缩照片,并调整压缩等级至一个合适的水平,以便你能在不损失太多细节的情况下缩小照片的文件大小。亲自建立一个系统可能涉及调整和测试。如果没有压缩数据,你会发现你的存储空间相当快地被用尽。正如我们上面所讨论的那样,因此你将根据产品的序列号将你的照片整理到文件夹里。许多云 存储 服务允许你为文件添加标签或标记,以实现高效的搜索功能。 你也可能认定,云存储不是你数据存储的正确方法。虽然其优势是不必担心建立服务器和应用程序,或支持整个基础设施,但视你的产品政策(即高度敏感的数据)而定,你可能认定内部部署是最适合你的方法。 如果你更喜欢云存储库的优势,但又不想从事任何 IT 基础设施的建设,诸如 Microsoft SharePoint、OneDrive、Google Drive 和 Dropbox 等基于云存储的解决方案会很合适。 如果安全和数据隐私是重中之重,那么你可以选择内部存储解决方案,这可能是一个简单的网络驱动器或上述存储解决方案的内部版本。内部部署的优势包括你可以更好地控制您的数据以及数据的安全性,但要承担更多的内部 IT 成本来建立和维护基础设施。 寻找立即可用的产品 构建可追溯性摄像系统的所有部件在市场上都是现成的,但是整合所需的时间,甚至是使用定制软件开发应用程序,可能会因为其他正在进行的项目和日常工作而无法承担。 我们成套的立即可用解决方案是复杂定制摄像系统的替代方案,预装了可定制的无代码应用程序,包括一个专门为数字化追溯开发的应用程序。关注以下产品及应用,深入了解视觉检测专用 AI解决方案和数字化转型工具。 虹科产品:虹科 -AI网关 关键特点: l 与现有的检测硬件、软件和终端用户流程配合 l 支持的 GigEVision、USB3 Vision、CameraLink或MIPI等多种接口协议 l 强大的 NVIDIA GPU可以部署开源或自定义算法,包括预先训练好的TensorFlow深度学习模型和使用OpenCV等开源库开发的Python plug-ins 虹科产品: AI软件平台 关键特点: 直观的、基于 web的eBUS AI Studio平台允许任何用户(从非程序员到高级开发人员)设计、培训、测试和部署自己的AI和计算机视觉插件
  • 热度 24
    2015-3-24 13:43
    1042 次阅读|
    0 个评论
      目前,关于 视觉系统 的研究已经成为热点,也有开发出的系统可供参考。但这些系统大多是基于PC机的,由于算法和硬件结构的复杂性而使其在小型 嵌入式 系统中的应用受到了,限制。上述系统将图像数据采集后,视觉处理算法是在PC机上实现的。随着嵌入式微处理器技术的进步,32位 ARM 处理器系统拥有很高的运算速度和很强的信号处理能力,可以作为视觉系统的处理器,代替PC机来实现简单的视觉处理算法。下面介绍一种基于ARM和 CPLD 的嵌入式视觉系统,希望能分享嵌入式视觉开发过程中的一些经验。    1 系统方案与原理   在嵌入式视觉的设计中,目前主流的有以下2种方案:   方案1 图像传感器 +微处理器(ARM或DSP)+SRAM   方案2图像传感器+CPLD/FPGA+微处理器+SRAM   方案1系统结构紧凑,功耗低。在图像采集时,图像传感器输出的同步时序信号的识别需要借助ARM的中断,而中断处理时,微处理器需要完成程序跳转、保存上下文等工作,降低了图像采集的速度,适合对采集速度要求不高、功耗低的场合。   方案2借助CPLD来识别图像传感器的同步时序信号,不必经过微处理器的中断,因而系统的采集速度提高,但CPLD的介入会使系统的功耗提高。   为了综合以上2种方案的优势,在硬件上采用“ARM+CPLD+图像传感器+SRAM”。该方案充分利用了CPLD的可编程性,通过软件编程来兼有方案1的优势,具体体现在以下方面:   ①功耗的高低可以控制。对于功耗有严格要求的场合,通过CPLD的可编程性将时序部分的接口与ARM的中断端口相连,仅仅是组合逻辑的总线相连,可以降低CPLD的功耗从而达到方案1的效果;对于采集速度要求高而功耗要求不高的情况,可以充分发挥CPLD的优势,利用组合与时序逻辑来实现图像传感器输出同步信号的识别,并将图像数据写入SRAM中。   ②器件的选择可以多样。在硬件设计上,所有总线均与CPLD相连;在软件设计上,不同的模块单独按功能封装。这样以CPLD为中心,系统的其他器件均可更换而无需对CPLD部分程序进行改动,有利于系统的功能升级。作为本系统的一种应用,开发了视觉跟踪的程序,可以在目标和背景颜色对比强烈的情况下对物体进行跟踪。通过对CMOS摄像头采集来的数据进行实时处理,根据物体的颜色计算出被追踪物体的质心坐标。下面分别描述系统各部分的功能。    2 系统硬件   2.1 硬件组成及连接   系统的硬件主要有4部分:CMOS图像传感器OV6620、可编程器件CPLD、512 KB的SRAM和32位微处理器LPC2214。   OV6620是美国OmniVision公司生产的CMOS图像传感器,以其高性能、低功耗适合应用在嵌入式图像采集系统中,本系统图像数据的输入都是通过OV6620采集进来的;可编程器件CPLD采用Altera公司的EPM7128S,用Verilog硬件编程语言在QuartusII下编写程序;作为系统的数据缓冲,SRAM选用的是IS61LV5128,其随机访问的特性为图像处理程序提供了便利;而LPC2214在PLL(锁相环)的支持下最高可以运行在60 MHz的频率下,为图像的快速处理提供了硬件支持。   0V6620集成在一个板卡上,有独立的17 MHz晶振。输出3个图像同步的时序信号:像素时钟PCLK、帧同步VSYNC和行同步HREF。同时,还可以通过8位或16位的数据总线输出RGB或YCrCb格式的图像数据。   在硬件设计上,有2个问题需要解决:   ①图像采集的严格时序同步;   ②双CPU共享SRAM的总线仲裁。   解决第一个问题的关键在于如何实时、准确地读取OV6620的时序输出信号,据此将图像数据写入SRAM中。这里采用的解决方案是用CPLD来实现时序信号的识别以及图像数据的写入。CPLD在硬件上可以识别信号的边沿,速度更快,通过Verilog语言编写Mealy状态机来实现图像数据的SRAM写入,更加稳定。   对于双CPU共享SRAM,可以通过合理的连接方式来解决。考虑到CPLD的可编程性,将OV6620的数据总线,LPC2214的地址、数据总线以及SRAM的总线都连接到CPLD上。通过编程来控制总线之间的连接,只要在软件上保证总线的互斥性,即在同一时刻有且仅有一个控制器(CPLD或者LPC2214)来操作SRAM的总线,就可以有效地避免总线冲突。这样,硬件上的仲裁就可以通过软件来保证,该过程可以通过在CPLD中编写多路数据选择器来实现。   各器件之间的连接关系如图1所示。 点击看原图   由图1可见,微处理器的总线接在CPLD上,在对功耗有严格要求的场合中,只需要在CPLD中,将OV6620的同步时序信号所对应的引脚与LPC2214连接在CPLD上的中断引脚相连,系统就可以转换成方案1的形式。对CPLD而言,引脚相连的仅仅是组合逻辑,降低了功耗。方案1的具体工作过程可见参考文献。而对于采集速度要求较高的场合,CPLD部分的程序源代码见本刊网站www.mesnet.com.cn——编者注。下面重点介绍这种情况下的应用。    2.2 工作过程   系统上电后,首先由LPC2214通过I2C总线配置摄像头的工作状态,需要配置的主要有输出图像的数据格式、速率、是否白平衡,以及自动增益是否打开。配置完成后,LPC2214发出图像采集的信号给CPLD,此时CPlD操作SRAM的总线,并通过对OV6620输出时序的检测将图像数据写入SRAM。当然,写入SRAM需要严格符合SRAM的操作时序。一帧图像采集完成后,CPLD置位标志位来通知LPC2214,如果LPC2214处于空闲状态,则通知CPLD将总线使用权切换至LPC2214,由LPC2214读取SRAM中的数据并进行图像处理。同时,发送信号给CPLD进行数据采集,图像的采集和处理将并行执行,提高了系统的工作效率。当再次采集完一帧数据后,重复上述过程。    2.3 硬件方案的特点   LPC2214负责图像处理,CPLD负责图像数据的采集,很好地实现了功能上的封装。可以看到,CPLD将与硬件时序相关的程序封装,与外界的接口仅为标志状态线以及数据采集总线,极大地方便了系统的升级而无需改动图像采集部分的硬件和软件。甚至更换为其他型号功能更为强大的微处理器,只要按照上述标志状态线的约定来操作,系统仍然可以正常工作,增强了系统的兼容性和可移植性。    3 系统软件   系统软件主要由ARM微处理器和CPLD两部分程序构成。ARM部分的代码使用C语言在ADSl.2环境下开发,而CPLD部分则使用Verilog硬件语言在QuartusII下开发。    3.1 CPLD部分程序设计   CPLD的程序主要分为2部分:组合逻辑和时序逻辑。组合逻辑主要完成总线仲裁,程序并不依赖CPLD的全局时钟;时序逻辑完成对信号的检测,根据SRAM的操作时序将图像数据写入。   在总线仲裁部分,需要注意的是:对CPLD而言,不同的时刻同一总线的数据流人方向是不同的。因而在Verilog中,需要声明总线为双向端口。具体的总线仲裁程序如下: 点击看原图   对双向端口的总线操作总结如下:   ①需要控制信号指明端口在某一时刻的方向;   ②输出高阻即代表该双向端口是输入状态,此时可以作为普通的输入端口来使用。   时序逻辑部分主要完成对 图像传感器 时序信号的识别。如图2所示, CPLD 需要首先检测VSYNc的下降沿,接着检测HREF信号的上升沿,然后在PCLK信号的上升沿将图像数据读入。 点击看原图   在Verilog语言中,对上升沿的检测是通过always语句来实现的。例如检测时钟信号cam_pclk的上升沿: always@(posedge cam_pclk)。但从上面的分析中可以看出,需要检测的信号沿有3个,可以都用always来检测,但在Verilog的语法中always语句是不可以嵌套的。为了解决这个问题,本系统中采用了如下方式:整个模块只有一个时序逻辑的always块,其他的信号沿检测用与al—ways等价的方式实现。例如对于cam_vsyn信号,设置2个临时信号vsyn_0和vsyn_1,在每个时钟信号的上升沿,进行如下赋值: 点击看原图   这样,当每个时钟沿到来时都会更新vsyn_0和vsyn_1的值。当vsyn_O的值为O且vsyn_1的值为1时,认为是上升沿到来,同理也可以检测下降沿。需要注意的是:这种方式下,时钟信号的周期要远远小于被检测信号的高电平和低电平的持续时间。如果信号脉冲过窄,在整个脉冲期间vsyn_O和vsyn_l的值都没有更新,就会丢失边沿的检测。   数据写入SRAM的过程是用Mealy状态机来实现的,程序具有通用性。若使用其他型号的SRAM,只需要根据器件的读写时序在相应的状态中修改高低电平。状态机使程序的结构清晰,调试方便。    3.2 ARM 部分程序设计   目前,基于PC机的视觉处理算法有很多,但在基于微处理器的 嵌入式 视觉系统 中,系统在硬件资源和处理速度上都无法与PC机相比。特别是在有实时性要求的情况下,需要编写适合嵌入式系统特点的快速有效的算法。下面编写的算法都是根据这个思想来编写的。   颜色跟踪:颜色跟踪的任务可以分解为颜色标定和颜色分割两个步骤。颜色标定的任务是通过一个已知的颜色,找出其在颜色空间内与之对应的一个封闭区域。颜色分割则是通过比较器判断图像中像素点在颜色空间中是否落在标定的空间内,若在已标定的空间内,则认为其颜色与已标定的颜色一样,这样就可以根据标定的封闭区域识别出图像中具有与标定颜色相同的物体。为了满足不同情况下应用的需求,颜色跟踪设置了2种模式。    (1)帧处理模式   该模式需要用户输入要跟踪的R、G、B三个颜色边界,构成一个RGB跟踪的颜色空间。然后处理器从图像的左上角开始,顺序逐行逐点的检查每一个像素。如果被检查的像素正好落入用户定义的颜色范围,就将这个像素标记为跟踪的;同时,需要记录被跟踪点中的最高点、最低点、最左点和最右点。如果检测到的像素位置在当前跟踪区域的标记框外,则需要增大标记框来包含该像素;同时,需要记录符合要求的像素的数量,当一帧图像扫描完成后,可以分别用符合要求的点的横纵坐标和除以符合要求的像素点数,得出被追踪物体的中心坐标。   这样在对一帧图像的一次扫描后,就可以得到被跟踪物体的中心坐标,同时处理器只需记录较少的全局变量,在时间复杂度和空间复杂度上都适合嵌入式系统。   上述方法中,只有一个跟踪点就可以改变标记框,因此如果在跟踪过程中出现噪声点,就会对标记框产生影响。去噪的思想是:如果一个像素点周围的其他点也落在用户输入的RGB范围内,那么这个点就被认为是符合要求的。    (2)行处理模式   与帧处理模式不同的是,行处理模式在扫描完一行数据后就记录下所在行中符合要求的连续点的最左端坐标和最右端坐标,不妨分别记为(XnL,YnL)和(XnR,YnR)。在一帧图像处理完成后,会得到图3所示的图形。 点击看原图   根据得到的结果,可以计算出更多关于跟踪物体的信息:   ①计算区域面积。计算每条线段的长度l(n),然后将l(n)进行累积叠加,即可获得跟踪区域面积值S。 点击看原图   ④识别物体的形状。根据得到的每行跟踪点的长度,以及同一行中有几段符合要求的连续跟踪点,可以得知物体从摄像头角度看到的形状。特别是在检测平面上线条时,可以识别是否有分支,这一点是帧处理模式无法做到的。   需要指出的是,行处理模式虽然会得到关于跟踪目标的更多信息,但是每行处理的方式增大了处理器的负担,处理速度也没有帧处理快。    4 提高系统的工作速率   目前,系统工作在帧处理模式下的工作速率是25帧/s,作为系统功能的验证,这里采用的算法是颜色跟踪。如果仅做纯粹的图像采集,而不做图像处理,那么系统可以达到OV6620的最高工作速率,即60帧/s。而在图像处理方面,不同的图像处理程序效率对系统的工作频率有较大的影响。下面给出在通用ARM处理器下提高程序效率的几个建议:   ①内嵌(inline)可通过删除子函数调用的开销来提高性能。如果函数在别的模块中不被调用,一个好的建议是用static标识函数;否则,编译器将在内嵌译码里把该函数编译成非内嵌的。   ②在ARM系统中,函数调用过程中参数个数≤4时,通过R0~R3传递;参数个数4时,通过压栈方式传递(需要额外的指令和慢速的存储器操作)。通常限制参数的个数,使它为4或更少。如果不可避免,则把常用的前4个参数放在R0~R3中。   第1种方式比较需要2条指令ADD和CMP,而第2种方式只需一条指令SUBS。 点击看原图   ④ARM核不含除法硬件,除法通常用一个运行库函数来实现,运行需要很多个周期。一些除法操作在编译时作为特例来处理,例如除以2的操作用左移代替余数的操作符“%”,通常使用模算法。如果这个值的模不是2的n次幂,则将花费大量的时间和代码空间避免这种情况的发生。具体办法是使用if()作状态检查。   比如,count的范围是0~59;   count=(count+1)%60;   用下面语句代替:   if(++count=60)    count="0";   ⑤避免使用大的局部结构体或数组,可以考虑用malloc/free代替。   ⑥避免使用递归。    结 语   本文介绍了一种基于ARM和CPLD的嵌入式视觉系统,可以实现颜色跟踪。在硬件设计上,图像采集和图像处理分离,更利于系统功能的升级。而视觉处理算法更注重处理的效率和实时性,同时根据不同的需要有两种模式可供选择。最后给出了提高程序效率的一些建议和方法。与基于PC机的视觉系统相比,该系统功耗低、体积小,适合应用于移动机器人等领域。
相关资源