2017年11月19日实验感想

来源:互联网 发布:小程序第三方平台源码 编辑:程序博客网 时间:2024/06/04 23:31

写点啥呢

在一个用资本获取财富的年代,作为一名党员,我秉持着不忘初心,继续前行的思想,坚持技术工人底线不动摇,天天写点自己也不知道能干啥的代码,每天也在不停地推翻前日的想法中度过。周日继续到实验室刷脸,泡一壶茶,耳边响着某宝老总的歌声,简单地写点最近的感受:

(一)有关实验

最近两个多月的活是写个能识别并追踪磁珠的算法。一开始,我误解了任务的含义,手动调个参数,用连通域的方法实现两副图片的追踪就可以了,事实证明,我还是太小了,不懂社会的复杂,原来那玩意是个视频,得一帧帧地扫过去追踪。
磁珠这玩意做过生物实验的应该明白的,学名beads,吸在细胞上,可以看细胞的动态。在一个视频里,磁珠移动的距离一般不是很大,但是有的会黏在一起,或者一个在上面,一个在下面,二维图像产生重叠,这时候呢,因为不太好确定哪个是哪个,再加上实验中普遍磁珠很多,不差这一两个,所以很多时候就是将其视为无效磁珠,当其不存在即可。
目前这个任务本质上可以算作是多目标跟踪的问题。目标追踪(Object Tracking)的算法基本包括均值漂移(Meanshift),光流(Lucas-Kanade)之类的,机器学习的浪潮之下一个非常热门的领域。 这个磁珠视频帧是一个灰度图像,并且每个磁珠的模样基本类似,我们看磁珠的感觉应该就跟我们看哪个黑人都是Kobe,哪个白人都是Paker差不多,很难辨别,特征提取似乎不是一件很容易的事,那就先二值化图像看看。二值化这真的是一件不忍卒提的事啊,我写了两个月的代码,视频追踪到倒数第5帧的时候,我打开原图像矩阵,才发现部分点的灰度值超过了28,果然是显微镜下的图像啊,岂是iphone渣渣相机可以相提并论的。
居然还有这种操作
原图像矩阵是uint16型,也就是我的二值化阈值得重新调整。图像归一化的方式一种是简单的对各像素点的灰度值做下列调整28(graylevelmin(image))max(image)min(image),或者用28(graylevelavg(image))std(image),前者的效果更接近真实,后者可以去除图像的伪影,二值化的阈值需要结合OTSU方法进行细微调整。可以再进行二值图像的开闭运算让边缘平滑一些,并且前者可以断开狭窄连接,后者恰好相反,接下来,我暂时还没想到啥好办法能一次性追踪成功的。。。。暂时先用着此前不靠谱的方案吧,如果成功了再聊聊。

(二)有关代码

由于我现在并不会使用OpenCV,所以只能在Matlab上先跑一跑,等方法有点眉目之后再考虑解决算法的复杂度与运行时间问题。当然,虽然Matlab的速度不敢恭维,但是有些时候确实也是因为自身的技术原因,程序运行的速度较慢。这里有几个注意事项,可以参考:http://blog.csdn.net/aisikaov5/article/details/50499645?ticket=ST-89975-K5hUIAbev0qqEFhJAA1h-passport.csdn.net

(三)有关机器学习

本周开始系统地接触一些机器学习的基本理论,暂时还限于最小均方误差(LMS)算法的入门级别,水平有限,先不拿出来献丑。

(四)总结

最近似乎是诸事不顺,唯一一件成功的事似乎是证明了此前两个月的工作大部分是不靠谱的。。。。
本来想说我讨厌Markdown的,现在看貌似用起来有着不错的感觉。。。。

2017年11月19日于D200

原创粉丝点击