之前一直是做静态图片分析的,机器视觉项目如果想要在线分析,必然需要进行动态分析。前一段时间,我阅读了一些书籍,介绍了一种通过机器视觉的单向信息传输系统。主要在内外网隔离的情况下进行数据单向传输。
这样的系统,必然是真正的“机器视觉”系统,不仅包括图像算法的处理,而且需要包括设备的架设,并且结合多种技术(OCR,二维码),具有一定挑战意义和现实意义。这里做简单实现。
一、基于OCR的单向信息传输系统。
所谓单项数据传输,书中提到的方法是采用ASCII码进行分析。但是我认为采用OCR识别的话,如果能够很好地控制住传输的信息,成功率就会很高。
什么信息需要单项传输?就是那些实时更新的数据,数据量不是很大但是时效性很大:比如天气、比如温度、比如时间等信息。这个信息量一旦变得很大,那么采用机器视觉的方法解决单向传输问题,就显得不是那么恰当。根据一些经验,设计这样的草图:
数据不需要太多或者变化太快,只要采样的频率比变化的频率更快就可以。采用csharp
1)数据获取,这里基于之前介绍过的GOPre程序获得摄像头的数据
2)数据进行校正,修改成这样的结果
3)参考答题卡程序,对图像进行修正
做到这一步,相关的内容信息可以获取。下一步就是OCR的问题,可以参考我之前发的相关资料。
需要注意,在这种情况下进行OCR识别,对于图像的问题的要求很高,由于里面涉及到模板识别的代码,如果输入有问题,程序可能会报错。这是在实际项目中需要注意的地方。
二、基于二维码的单向信息传输系统。
这个时候我在设想,如果采用了直接字符OCR的方法,这种方法的优点是思路清晰、可以处理大量信息;相比较而言,许多解决方案可能会采用一维码或者是二维码的方法。这种方法,带有冗余校验信息,数据传播的鲁棒性大大增强,但是复杂度也增强了,可以说互有利弊。
二维码可以说是今日这个时代里面发展比较迅速的一个技术。既然前面已经将ocr做到了一定的程度,这里,我转变思路,而是用二维码来所谓“单向传输问题”
1)基于ZXING,编写二维码编码解码器。这个库比较优秀,对于二维码的输入也有一些预先的处理,不是很挑。而且是开源代码库,有时间值得研究一下。
2)采集图片
经过一定的测试,发现将分辨率设定在640*480的时候,无论是
还是
都是可以被识别的,即使倾斜也没有问题。但是识别是需要一定的时间的。本来以为可能需要Opecv做需要预处理的,结果也不需要进行预先处理。这种思路经过多次测量,结果是可行的。
3)选择实现模式
因为在这个解决方案中,主要是利用zxing的接口来实现的,而其中图像处理的东西并不多,但是涉及到了摄像头的图像获取,所以选择合适的实现模式。
emgucv例程序提供了cameracapture的效果,借用过来
4)选择实现模式
具体的代码就是柔和了二维码生成和解码;以及emgucv的摄像头操作。难度不是很大。
三、小结
当程序变成动态的时候,遇到了更多的挑战,你必须要编写相关的界面程序、必须处理摄像头的问题:往往是需要将几件事情一起来做,有的时候还要涉及到多线程。
但是从另一个方面来说,动态的才能够是实时的,实时的才能够是在线的。这是从“图像识别”向“机器视觉”的概念的改变。
越是复杂的构造需要考虑的问题越多,越难以保持系统的鲁棒。但是,越是复杂的事情,越是值得去探索、实现。我相信能够获得的价值也就越高。
这里展示了两个想法的原型,关键是思路,希望能够对所需之人有所帮助。