单向信息传输系统设计实现

之前一直是做静态图片分析的,机器视觉项目如果想要在线分析,必然需要进行动态分析。前一段时间,我阅读了一些书籍,介绍了一种通过机器视觉的单向信息传输系统。主要在内外网隔离的情况下进行数据单向传输。

这样的系统,必然是真正的“机器视觉”系统,不仅包括图像算法的处理,而且需要包括设备的架设,并且结合多种技术(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的摄像头操作。难度不是很大。

、小结

当程序变成动态的时候,遇到了更多的挑战,你必须要编写相关的界面程序、必须处理摄像头的问题:往往是需要将几件事情一起来做,有的时候还要涉及到多线程。

但是从另一个方面来说,动态的才能够是实时的,实时的才能够是在线的。这是从“图像识别”向“机器视觉”的概念的改变。

越是复杂的构造需要考虑的问题越多,越难以保持系统的鲁棒。但是,越是复杂的事情,越是值得去探索、实现。我相信能够获得的价值也就越高。

这里展示了两个想法的原型,关键是思路,希望能够对所需之人有所帮助。

时间: 2024-10-24 19:54:20

单向信息传输系统设计实现的相关文章

分布式系统设计系列 -- 基本原理及高可用策略

转自:http://blog.csdn.net/gugemichael/article/details/36688043 ==> 分布式系统中的概念==> 分布式系统与单节点的不同==> 分布式系统特性==> 分布式系统设计策略==> 分布式系统设计实践 [分布式系统中的概念] 三元组 其实,分布式系统说白了,就是很多机器组成的集群,靠彼此之间的网络通信,担当的角色可能不同,共同完成同一个事情的系统.如果按"实体"来划分的话,就是如下这几种:       

常用加密算法的Java实现(一)——单向加密算法MD5和SHA

1.Java的安全体系架构 1.1           Java的安全体系架构介绍 Java中为安全框架提供类和接口.JDK 安全 API 是 Java 编程语言的核心 API,位于 java.security包(及其子包),以及sun.securityAPI包(及其子包)中.设计用于帮助开发人员在程序中同时使用低级和高级安全功能. JDK 1.1 中第一次发布的 JDK 安全中引入了“Java 加密体系结构”(JCA),指的是用于访问和开发 Java平台密码功能的构架.在 JDK 1.1 中,

20155212 2017-2018-1 《信息安全系统设计》第10周学习总结

20155212 2017-2018-1 <信息安全系统设计>第10周学习总结 stat命令的实现-mysate 要求:学习使用stat(1),并用C语言实现 学习stat(1) 功能:显示文件或者文件系统信息 语法:stat [选项] 文件 选项参数: null:显示详细信息 -l:链接 -f:不显示文件的信息,而显示其所在文件系统的信息 -t:显示简洁的信息 -c:以指定格式输出 man 1 stat查看stat命令 使用stat命令 使用man -k stat | grep 2函数找到如

系统设计原则

以技术先进.系统实用.结构合理.产品主流.低成本.低维护量作为基本建设原则,规划系统的整体构架. 先进性: 在产品设计上,整个系统软硬件设备的设计符合高新技术的潮流,媒体数字化.压缩.解压.传输等关键设备均处于国际领先的技术水平.在满足现期功能的前提下,系统设计具有前瞻性,在今后较长时间内保持一定的技术先进性. 安全性: 系统采取全面的安全保护措施,具有防病毒感染.防黑客攻击措施,同时在防雷击.过载.断电和人为破坏方面进行加强,具有高度的安全性和保密性.对接入系统的设备和用户,进行严格的接入认证

面向数据可靠性存储系统设计思想探讨

存储系统的设计门槛是比较高的,和计算系统存在的最大区别在于存储系统所承载的是数据,一旦系统出现故障,不仅业务的连续性得不到保障,更为重要的是用户数据将会造成丢失.计算节点发生故障,最多造成业务连续性中断,这是与存储系统相比在可靠性要求方面最大的区别. 十几年前刚刚接触存储系统的研发,当时没有觉得存储有多复杂,不就是把数据按照一定规则存放在磁盘中,并且实现一定的功能,例如数据保护RAID.数据复制Replication.数据快照Snapshot以及文件系统嘛.感觉存储系统中最复杂的是各种功能,设计

c语言:写一个函数建立一个有3名学生数据的单向动态链表

写一个函数建立一个有3名学生数据的单向动态链表. 解:程序: #include<stdio.h> #include<stdlib.h> #define LEN sizeof(struct Student) struct Student { long num; float score; struct Student *next; }; int n; struct Student *creat(void)//定义函数返回一个指向链表头的指针 { struct Student *head

hibernate 单向 n-n

域模型: 关系数据模型 n-n 的关联必须使用连接表 与 1-n 映射类似,必须为 set 集合元素添加 key 子元素,指定 CATEGORIES_ITEMS 表中参照 CATEGORIES 表的外键为 CATEGORIY_ID. 与 1-n 关联映射不同的是,建立 n-n 关联时, 集合中的元素使用 many-to-many. many-to-many 子元素的 class 属性指定 items 集合中存放的是 Item 对象, column 属性指定 CATEGORIES_ITEMS 表中

数据结构与算法学习-单向链表的实现

链表(Chain本文所说链表均为单向链表,以下均简称单向链表)实际上是由节点(Node)组成的,一个链表拥有不定数量的节点.而向外暴露的只有一个头节点(Head),我们对链表的所有操作,都是直接或者间接地通过其头节点来进行的. 节点(Node)是由一个需要储存的对象及对下一个节点的引用组成的.也就是说,节点拥有两个成员:储存的对象.对下一个节点的引用. 这样说可能大家不是很明白,我贴一张图大家可能更容易理解. package LinkedList; /** * <p><strong>

系统设计的三员管理

一.“三员”职责 系统管理员:主要负责系统的日常运行维护工作.包括网络设备.安全保密产品.服务器和用户终端.操作系统数据库.涉密业务系统的安装.配置.升级.维护.运行管理:网络和系统的用户增加或删除:网络和系统的数据备份.运行日志审查和运行情况监控:应急条件下的安全恢复. 安全保密管理员:主要负责系统的日常安全保密管理工作.包括网络和系统用户权限的授予与撤销:用户操作行为的安全设计:安全保密设备管理:系统安全事件的审计.分析和处理:应急条件下的安全恢复. 安全审计员:主要负责对系统管理员和安全保