Chinaunix首页 | 论坛 | 博客
  • 博客访问: 485384
  • 博文数量: 120
  • 博客积分: 3052
  • 博客等级: 中校
  • 技术积分: 1755
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-01 09:43
文章分类

全部博文(120)

文章存档

2011年(20)

2010年(3)

2009年(52)

2008年(45)

我的朋友

分类: C/C++

2008-07-02 16:43:27

学完了《数字图像处理》。
老师让写一个变换,什么变换随便,自己选。
我不喜欢处理复数,就写了一个DCT。
可是单单一个DCT也没有什么用,就利用 libjpeg 和 低通滤波原理,写了一个可以去除噪声的程序,经实验,还是有一定用处的(详见我上传的文件)。

程序和说明(这个说明其实是作业)放在了下面。
filter 是我编译的程序。
dct.c 是源代码。
note.pdf 是说明(不全面)。
与其它我的程序一样,这个也用 GPL,只是空间不多了,就不放相关说明了。
------------------------------------------------------------------------
2008.7.3 增加如下说明:
程序其实写得远不够完美,但是我会继续努力的。
note.pdf 写了一部分说明,但是不够全面,我就把想到的一些再写一些:
1, 重要:所有的矩阵都是用一维来模拟的。
    既然 C 本身就是这样做的,我也就直接这样做了,因为我发现在指针作参数传递时,这样是不可避免的。
2, 只用了一个文件来写所有的源代码,以后会做一个我自己的库,把自己觉得有用的函数都放进去,避免重复劳动。
3, libjpeg 其实有专门的函数可以直接从文件得到 DCT 变换后的结果,应该更快一些。
4, 主程序没有写 helper() 函数,没有说明这个程序怎么使用。以后的程序一定都要有这个函数的。
5, 代码重用还不是很好,有些函数中有大量相同的部分,看来是抽象作得还不够好。
6, 函数的注释还是不够,下一步考虑一致化和格式化一下,正在写一些相关的 emacs lisp 函数,应该能帮上忙。
7, main 函数写得有些臃肿,其实可以再提出一个函数的。
8, 出错处理方面做得也不够。
9, magic number 问题还是解决得不够彻底,以后一定注意。
10, 数组真是个好东西,能减少 if, 有些时候,好的数组能处理 hash 才能处理的问题,不过,因为 perl 的影响,我对 hash 还是情有独钟的,应该找一个 C 的实现,没有的话,就自己写一个。
11, 函数指针和宏的应用,应该还能让代码更简洁一些,我还没有用到。
暂时想到这些,以后想到再加。

文件:filter.tar.gz
大小:4140KB
下载:下载

阅读(2351) | 评论(0) | 转发(0) |
0

上一篇:叹红楼

下一篇:两天

给主人留下些什么吧!~~