做网站价格多少,英文版wordpress,百度推广费用一天多少钱,专做装修的网站...快速中值滤波及c语言实现学生姓名#xff1a; 刘 勇 学 号#xff1a; 6100410218 专业班级#xff1a; 数媒101【摘要】本文讨论了用c语言在微机上实现中值滤波及快速算法#xff0c;在程序设计的过程中充分考虑到程序运行的时间复杂度和空间复杂度的问题#xff0e;解…...快速中值滤波及c语言实现学生姓名 刘 勇 学 号 6100410218 专业班级 数媒101【摘要】本文讨论了用c语言在微机上实现中值滤波及快速算法在程序设计的过程中充分考虑到程序运行的时间复杂度和空间复杂度的问题解决了由于图像太大而内存不够的问题运用对程序运行时的方法得出在PENTIUM-S100MHz上中值滤渡的一般算法运行423秒而快速算法运行2 58秒。【关键词】c语言中值滤波快速算法1 引言中值滤波是涂基发明的一种非线性信号处理技术对抑制图像的噪声非常有效在二维形式下中值滤渡器是一个古有奇数个像素的滑动窗口窗口正中的象素的灰度值用窗口内各个象素的中值代替窗口的中值为窗口中象素按大小顺序排列后处于中间位置的象素本文讨论中值滤的一般算法并比较其运算速度。2 用C语言实现算法的若干问题在设计算法编制程序的时候我们充分考虑到程序运行的时间复杂度和空间复杂度问题在解决问题的前提下使算法尽量简单使程序运行占有的空间尽量的小这样来减少不必要的时问浪费和空间浪费从而太大的提高程序执行的效率。首先考虑到的内存问题。由于在本文算法中用的图像是512512 8bit这就存在一个内存不够大一整幅图像不能一次性调入的问题。为了解受此问题可以只开辟一个3512的缓冲区n将原图像采用分批调入缓冲区使内存不够的问题得到了圆满的解决。另外为了对中值滤波的快速算法和普通算法进行精确的比较采用对程序运行计时的方法并精确计算每个算法运行的时间使得出的结论更可靠。3 中值滤波算法的C语言程序实现本算法采用对开辟的3*512的缓冲区从左到右依次形成一个3*3的窗口然后将此3*3的窗口放人一个一维数组中调用求中值子函数通过排序得出中值当此中值不等于窗口中间位置的象素时用此中值来代替窗VI中间位置的象素灰度值若此缓冲区处理完毕后将缓冲区的第一行存入新建的文件中将第二、第三行分别向上移动一行若存人新建的文件中的行数小于或等于511(即这样处理的行数小于或等于511)则从原文件中调入一行作为缓冲区第三行按上述方法进行直到处理的总行数等于511为止最后将缓冲区的第二、三行存人新建的文件程序流程框图如图14 中值滤波快速算法的C语言程序实现本算法充分利用了上一次处理的结果采用迭代逐次逼近的方法得到本次的中值在一行处理完毕后转人下一行也采用走S型的方法这样除第一个窗口采用了一伏排序得到中值外其它的窗口都利用上伏的窗口的象素删除无用的3个象素后再加人新的3个象素利用迭代的方法得到本次窗口的中值这样太大地提高了程序执行的效率。41算法的解释首先是开辟一个3*512的缓冲区a在初始化缓冲区时考虑到时间复杂度的问题所以只初始化了第二、三行而对第一行只初始化了前三个象素这样便在缓冲区中可以得到一个3*3的窗口对此窗口进行排序求中值后得出第一个窗口的中间象素的值将文件指针定位在2*512处。然后开始循环当处理的行数小于或等于511时将缓冲区a中的第二、三行分别向上移动一行变为第一、二行从文件中读人512个字节作为缓冲区的第三行并用行数模2的方法设置方向标志k当k为0时从左向右移动窗口当k为1时从右向左移动窗口而每一窗口都利用上次的窗口的像素删除无用的3个象素后再加入新的3个象素利用迭代的方法从上次的中值得到本次的中值。当处理完一行后将缓冲区的第一行存入新建的文件中最后将缓冲区的第二、三行存入文件中。42 算法代码// ImageProcessingDoc.cpp : implementation of the CImageProcessingDoc class//#include stdafx.h#include ImageProcessing.h#include ImageProcessingDoc.h#include GreyRatio.h#include #define PI (acos(0.0) * 2)#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] __FILE__;#endif/// CImageProcessingDocIMPLEMENT_DYNCREATE(CImageProcessingDoc, CD