一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

Eagle视觉应用中保障主线程性能的方法、存储介质与流程

2021-10-24 05:39:00 来源:中国专利 TAG:主线 视觉 性能 保障 方法

eagle视觉应用中保障主线程性能的方法、存储介质
技术领域
1.本发明涉及影像处理技术领域,特别涉及一种eagle视觉应用中保障相机端主线程性能的方法、存储介质。


背景技术:

2.linux是嵌入式产品中常用的操作系统,可编写多任务、逻辑复杂的上层应用程序。但在实现对实时性和性能有要求的功能所出现的问题时就需要厂家提出具体的解决措施。具体而言,linux是多任务处理系统,在同一个进程内可采用多线程技术分别处理不同任务,但linux同时又是非实时系统,各个线程间由于抢占cpu资源导致相互影响。
3.在eagle视觉项目中,相机端需要根据电眼或软触发信号抓拍图片,然对抓拍到的图片进行ocr(光学字符识别)或者条码、二维码识别。这两个不同的任务由不同的线程分别执行,目前基本能做到耗时较长的识别处理过程尽量不影响抓拍线程的性能,但是在高速抓拍时(如一秒20张),该影响就无法克服了,以至于抓拍线程会漏掉一两个电眼或软触发信号,也就是说漏拍一两张图片。图片漏抓拍可能导致识别准确率的降低。
4.因此,有必要让受保护主线程的处理时间变得可控,以避免遗漏触发信息,影响识别准确率。


技术实现要素:

5.本发明旨在至少在一定程度上解决上述技术中的技术问题之一。为此,本发明的一个目的在于提出一种eagle视觉应用中保障相机端主线程性能的方法,能够保护主线程的cpu资源,避免对其性能造成影响。第二个目的在于提出计算机可读存储介质,其上存储的程序能够用于实现上述eagle视觉应用中保障相机端主线程性能的方法。
6.为达到上述目的,本发明第一方面实施例提出了一种eagle视觉应用中保障相机端主线程性能的方法,包括以下步骤:
7.将相机端主线程绑定于使用linux操作系统的嵌入式产品的多核cpu中的一核上运行;
8.将其他线程绑定于除所述一核以外的其他核上运行。
9.根据本发明实施例的eagle视觉应用中保障相机端主线程性能的方法,通过将相机端主线程绑定于多核cpu中的一核上运行,其他线程分配至其他核上运行,以此保证主线程不被其他线程干扰,其处理函数的执行时间可以被限定在某个限值上,从而满足产品的性能要求。
10.另外,根据本发明上述实施例提出的一种eagle视觉应用中保障相机端主线程性能的方法,还可以具有如下附加的技术特征:
11.可选地,所述主线程为抓拍线程;所述其他线程为3个以上的识别线程。
12.可选地,所述抓拍线程执行包括:
13.依据预设值控制电眼触发信号的触发频率;接收到电眼触发信号后进行图片拍
摄;
14.将拍摄到的图片转换为opencv格式;
15.将转换后的图片插入所述识别线程的任务队列中。
16.可选地,所述识别线程执行包括:
17.识别线程中的一处理线程从任务队列中抽取一图片;
18.将所述一图片进行二值化处理,得到预处理后的图片;
19.识别预处理后的图片中的条码、二维码或文字,并将识别结果发送至客户端。
20.为达到上述目的,本发明第二方面实施例提出了一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述eagle视觉应用中保障相机端主线程性能的方法。
21.根据本发明实施例一种计算机可读存储介质,其上的程序在运行后能够实现eagle视觉应用中保障相机端主线程性能,获取保证相机端主线程不被其他线程干扰,其处理函数的执行时间可以被限定在某个限值内,从而满足产品的性能要求。
附图说明
22.图1为根据本发明实施例的eagle视觉应用中保障相机端主线程性能的方法的流程示意图;
23.图2为根据本发明实施例的eagle视觉应用中保障相机端主线程性能的方法的线程分布示意图。
具体实施方式
24.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
25.本发明能够解决基于linux操作系统的嵌入式产品在执行eagle视觉应用时,相机端主线程与其他线程间由于抢占cpu资源而导致相互影响的问题;能够保障相机端主线程在执行时不被其他线程打扰,从而确保其执行时间满足产品的性能要求。
26.实验表明,eagle视觉应用中的抓拍线程中每个抓拍动作的耗时都是在15ms~20ms,而识别的操作在其他线程中完成,设定的指标是一秒钟触发二十次,也就是说每次抓拍动作的耗时如果稳定在50ms以内,原则上就不会漏掉触发信号,也就是不会漏掉抓拍图片。但测试发现就是会漏掉,这说明识别线程对抓拍线程有影响。
27.为了更好的理解上述技术方案,下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
28.为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
29.图1为一种eagle视觉应用中保障相机端主线程性能的方法的流程示意图。
30.如图1所示,本发明实施例的eagle视觉应用中保障相机端主线程性能的方法,可
以通过以下步骤实现:
31.s1:将相机端主线程绑定于使用linux操作系统的嵌入式产品的多核cpu中的一核上运行。
32.s2:将其他线程绑定于除所述一核以外的其他核上运行。
33.linux操作系统开发的嵌入式产品其主芯片一般都是多核cpu(一般是4核),利用这个特点,本实施例将具有性能要求的主线程绑定在其中一个核上运行,而将其他线程绑定到其他核上运行。这样,主线程在执行时便不会被其他线程打扰,不在担心抢占cpu资源的问题。因此主线程处理函数的执行时间便可以被限定在某个上限值之内,以此很好地满足产品对主线程的性能要求。
34.具体而言,在eagle视觉应用中,相机端的主线程为抓拍线程,其他线程为3个以上的识别线程。在一具体实例中,相机端程序由2种共4个线程组成:一种为抓拍线程(主线程),线程个数为一个;另一种为识别线程(其他线程),线程个数通常为3个。
35.在一具体实例中,主线程,即抓拍线程,执行包括:
36.首先,主线程依据预设值控制电眼触发信号的触发频率(通常情况下,在1秒内至少发出20个电眼触发信号);在接收到电眼触发信号后进行图片拍摄(抓拍);然后,将拍摄到的图片转换为opencv类格式;然后将转换后的图片插入所述识别线程的任务队列中。
37.在另一具体实例中,其他线程,即识别线程,执行包括:
38.首先,识别线程中的处理线程从任务队列中抽取一图片(任务);然后,将所述一图片进行二值化等基础图片处理,得到预处理后的图片,以此提高图片清晰度,凸显目标轮廓,同时减少图像数据;再然后,识别预处理后的图片中可能存在的如条码和/或二维码等的识别码,以及可能存在的文字(ocr);并将识别结果发送至客户端程序。
39.由上述可知,虽然负责抓拍的主线程功能单一,但处理函数的执行实现通常具有明确限定,以满足明确的性能要求,如一秒钟要抓拍至少20张图片。
40.在现有技术中,经常发现电眼信号明明1秒钟给了20个,却只执行了17~18次抓拍,因此会漏掉2~3张图片。经过分析研究,判定是linux操作系统中多线程互相干扰,从而导致主线程的处理函数的执行时间偶尔会突然提高,以至于漏掉了电眼触发信号。
41.通过本实施例提供的方法,将抓拍线程(主线程)单独绑定到cpu的一核上后,便可将抓拍线程(主线程)每次执行处理函数的时间固定在特定值(如20ms)以内(也可以是15ms~20ms之间,通过调整预设值灵活配置),从而保证了电眼信号不被漏掉(1秒触发20次,也就是电眼信号每50ms来一次),从而解决了图片漏抓拍的问题,进而确保eagle视觉应用中相机端的主线程的执行不被影响,以此稳定相机端主线程的性能。
42.另外,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现如上述eagle视觉应用中保障相机端主线程性能的方法。
43.在一具体实施例中,上述计算机程序具体可以包括:
[0044][0045][0046]
上述函数的功用是将不同线程绑定到具体的cpu核上运行(或者说给线程运行设置运行边界、让它不影响需要保证性能的线程)。eagle视觉项目采用的相机cpu有4个核。因此上述程序设计是4个线程,其中main函数执行完所有初始化动作后开始运行的while循环作为主线程,即抓拍线程,在这之前开辟3个线程作为识别线程以对抓拍下来的图片进行处理然后识别。
[0047]
如图2所示,在主线程中while循环开始之前,调用上述函数,并且输入参数1,可将该主线程(图中的抓拍线程)绑定在多核cpu中的第0核上运行,然后运行usleep或者sleep函数,完成cpu的切换,while循环就只在第0号cpu核上运行了。在开辟的3个识别线程(图中
的识别线程1、识别线程2以及识别线程3)处理函数中,一样调用此函数,但输入的参数为0,表明将识别线程限定在核1至核3上面运行,同样运行usleep或者sleep函数完成cpu的切换。
[0048]
经过这些操作后进行测试,发现抓拍线程在高达一秒钟20次的触发下,都能稳定抓拍下每一张图片。抓拍下的图片内容塞到队列中,由3个识别线程读取出来并处理。
[0049]
抓拍线程每次抓拍的耗时都稳定在20ms以内,理论上讲运行该计算机程序的产品可以完成一秒钟50次的抓拍。图片处理并识别的耗时根据抓拍到的内容而不同,一般是在15ms~50ms之间,ocr会长一些,普通长度的文本识别是在50ms左右。项目要求是每秒钟完成20张图片的抓拍并识别,因此抓拍动作和识别动作加起来必须是在50ms以内。项目刚开始时由于没有采用多线程技术,因此能否达到这个指标完全取决于要识别的条码或二维码具体是什么,大部分是可满足,但是碰到一张图片多个条码或者如pdf(识别耗时500ms)等特殊条码时,就不能满足要求了,只能是以漏掉抓拍信号为代价。在采用了多线程技术以及本实施例提供的eagle视觉应用中保障相机端主线程性能的方法将之后,不但实现了稳定抓拍,并且以逐步占用内存的方式,延后识别动作,完美运用了以空间换时间的原则。从而在整体上满足了一秒钟抓拍并识别20张图片的技术指标。即使增大压力,让触发信号一秒钟发生50次,抓拍依然没问题,只是会增大内存消耗的速度,优选设置合理的阈值以避免程序无节制占用内存以至最后被操作系统强制终止。
[0050]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0051]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0052]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0053]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0054]
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的
硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0055]
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0056]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
[0057]
在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0058]
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0059]
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
[0060]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不应理解为必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0061]
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜