半年多没有来网站了,现在已经完成了自己的项目,上来分享下自己的经验。最开始研究EMD的时候,振动联盟给了我很大帮助,多谢各位,尤其是版主陈露(:lol不知道名字是不是这么写)。 去年6月份之前一直是用matlab研究emd和bemd,论坛上都可以找到程序。遇到问题,耐心的版主和热心朋友也会帮忙解答:handshake。下面讲讲自己写程序的经历。 网上关于bemd的程序只能处理最大30000个像素,而导师要求做实验时需要处理256*256的图像,这个期间又有很多朋友说matlab毕业之后几乎没什么用,想找到工作还是需要C语言,导师这个时候也建议我用C语言自己写程序,脑袋一热,果断转移到C语言。 不夸张的说,我当时的C语言基础基本为0,大学学过一点数据结构,也过了计算机等级考试二级C,不过还从来没有独立编写过一个像样的程序,顶多也就是一些1+1=2这样的。开始写程序的时候豪情壮志,过了一个星期就不知所措了,因为一个星期的时间都没有搞清楚用C语言还是C++,根本无从下手。又过了一个星期,偶然在网上看到了一段关于读取和存储图像的程序,突然有了灵感,BEMD毕竟只是算法,并且也不能说特别的复杂,只要提取了像素点,后面的处理不就有方向了吗? 带着这样的思路,开始了对程序的探索。先是成功读取像素点,然后尝试着对像素点做一些简单的线性变换,最后在7月底成功读取了图像的极大值和极小值点,算是一个阶段性的胜利。 接下来是关于径向基函数插值。这个函数之前一点都不了解,网上搜集了几篇关于RBF的论文,仔细研究了一个星期,决定用MQ函数,继续写程序。现在看来,径向基函数也很简单,只需要解一个方程组就可以了,网上有现成关于解方程组的程序。在8月中旬程序整体的框架已经出来了。这个时候出现了每个程序新手都会出现的问题。 我处理的是256*256的图像,数据量很庞大,用到了很多指针,再加上图像在内存中是倒置的,所以在接下来的半个月,几乎每天都是在找bug,掉入指针一个又一个的陷阱。这段时间需要足够的耐心。很庆幸,坚持了下来,8月底,总算把程序完成了,自己都感觉有点难以置信。 下面是处理的图像结果,256*256lena图像,只分解了三个图像,时间在5分钟左右。 [attach]55036[/attach] [attach]55037[/attach] [attach]55038[/attach] [attach]55039[/attach] 写这个帖子,不是炫耀什么。看到论坛上有很多朋友在找程序,也是想借自己的经历,建议大家,如果有时间,最好自己去写。基础差没关系,只要够耐心,够努力,有坚定的信心就一切没问题。欢迎大家跟我讨论有关程序的任何事情,只是不共享程序。 |
GMT+8, 2024-11-24 18:59 , Processed in 0.033094 second(s), 15 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.