对噪点进行抑制的关键在于对偶尔出现的噪点进行识别,从而通过程序将其抹去,本文中提出的抑噪算法采用了阀值的思想,对标签的每次上报出现都赋予一定的权值,没出现的标签则减少其权值. 当该标签权值高于或低于某个阀值的时候,触发相应的标签事件,本算法具体描述为:
1 ) 定义标签每次出现后累加的权值valueStep.
2) 定义触发标签出现事件的阀值fapp.
3) 定义触发标签消失事件的阀值fd is.
4) 定义标签状态字段detectS tatus.
5) 如果标签出现,则其权值加valueStep.
6) 如果标签未出现,其权值减1.
7) 标签权值大于等于fapp,且detectS tatus =false,则触发标签出现事件, 产生一条标签出现的记录. 然后将detectS tatus置为true.
8) 标签权值小于等于fdis,且detectS tatus =true,则触发标签消失事件, 产生一条标签消失的记录. 然后将detectS tatus置为false.
在该算法中,不管是0噪点还是1噪点,由于其出现的次数很少,则其标签权值很难高于fapp或低于fdis, 就无法触发标签事件, 从而有效地抑制了噪点数据. 而正常标签不管被读写器上报了多少次,其只有在权值大于等于fapp时才会触发一条标签出现记录, 而标签状态字段detect Status则保证了当标签权值在阀值上下波动时不会对事件重复触发,所以该算法也有效解决了标签数据冗余的问题。在经过处理后,标签的报告情况由多个离散点变成了较为连续的权值变化, 如图3所示。
算法中的出现阀值fapp 与权值value Step 之比fapp / valueS tep越大,则对1噪点的过滤情况越好;消失阀值fdis越低,则对0噪点的过滤更加有效。当fapp / valueS tep小于等于1的时候, 该过滤算法将不对1噪点进行过滤处理, 而仅保留去除冗余数据的功能. 所以, 根据客观使用环境的需求, 对value Step, fapp, fdisp3个参数进行合理调整和搭配,可以使本算法有效适应不同过滤目标的需求。
3 算法实现与验证
3. 1 算法实现
笔者对该算法设计思想进行了实现,以验证其在不同应用场景下的适应性和有效性. 实验平台使用RS232接口的单天线读写器,该读写器报告周期为1 s,每次报告标签数为1个. 算法实现采用java 语言, 通过comm. jar 开发包进行串口通讯。