研究数字荧光算法有一阵子了,当然只是隔三差五的利用业余时间研究,也并不是工作多忙,只是有些技术一旦自己实现就没多大兴趣了,当然在一般MCU、MPU等非并发性处理器上实现这个算法没什么技术含量也做不了太高的捕获率,处理速度和内存带宽有限,而用FPGA来实现的话我的实验平台内存大小和带宽都小了,所以趁现在ZYNQ芯片便宜脑子一发热就弄了几十片来学习学习。托矿机的福。 来说说感悟吧,好多算法只有你真正使用你才能了解其优越和局限性,像这个数字荧光算法还有我之前用过的示波器第一算法都一样,用过才知道问题,有些问题还不好解决。 先说第一个,频次配色问题,像市面上很多示波器都说自己的荧光达到了多少多少级,这个他们并没吹,但问题就是高速刷新下你肉眼根本分辨不过来,能分辨出十级算不错了,好像大厂也没有特别好的解决方案,对动辄几十几百万的捕获率来说实现几十几百甚至几千级的荧光技术上没任何区别,无非是多占一点内存,而且多占的也很少。 第二就是波形最少停留时间,太长了的话拖影严重影响观测,太短了的话你又看不过来。但这个问题大厂都还是解决的比较好,我这里由于捕获率低所以就设定了最少停留1秒,留出充足的观察时间,但也会造成拖影严重。像我实验平台捕获率最高一百三四十帧/S,所以每屏波形上最高有一百三四十帧波形混叠,相较于余辉算法,数字荧光带有频次信息更好观测。 第三就是数据处理量是真大,以我安卓手机为例,每屏波形显示像素是横轴16格*25点纵轴是840点,我是用的12位的ADC纵轴根据手机屏幕拟合成840个点。所以处理一屏数据消隐就要执行336K的加减法,即使按1GHZ的处理器单时钟加减法速度也只有3000帧,而且你还要处理显示、配色、收发数据。实际上如果用上GHZ的MPU来处理远达不到3000帧,按我实验结果,即使是手机MPU多核加几G的主频,处理个几百帧都困难。 下面上最终效果
|