.

..

快速中值滤波及c语言实现

学生姓名: 刘 勇 学 号: 6100410218 专业班级: 数媒101

【摘要】本文讨论了用c语言在微机上实现中值滤波及快速算法,在程序设计的过程中充分考虑到程序运行的时间复杂度和空间复杂度的问题.解决了由于图像太大而内存不够的问题,运用对程序运行时的方法,得出在PENTIUM-S100MHz上中值滤渡的一般算法运行4.23秒.而快速算法运行2 58秒。

【关键词】c语言;中值滤波;快速算法

1 引言

中值滤波是涂基发明的一种非线性信号处理技术,对抑制图像的噪声非常有效,在二维形式下,中值滤渡器是一个古有奇数个像素的滑动窗口,窗口正中的象素的灰度值用窗口内各个象素的中值代替窗口的中值为窗口中象素按大小顺序排列后处于中间位置的象素;本文讨论中值滤的一般算法并比较其运算速度。

2 用C语言实现算法的若干问题

在设计算法编制程序的时候,我们充分考虑到程序运行的时间复杂度和空间复杂度问题,在解决问

题的前提下,使算法尽量简单,使程序运行占有的空间尽量的小,这样来减少不必要的时问浪费和空间浪费,从而太大的提高程序执行的效率。

首先考虑到的内存问题。由于在本文算法中用的图像是512+512 8bit,这就存在一个内存不够大一整幅图像不能一次性调入的问题。为了解受此问题,可以只开辟一个3"512的缓冲区n,将原图像采用分批调入缓冲区,使内存不够的问题得到了圆满的解决。

另外为了对中值滤波的快速算法和普通算法进行精确的比较,采用对程序运行计时的方法,并精确计算每个算法运行的时间,使得出的结论更可靠。

3 中值滤波算法的C语言程序实现

本算法采用对开辟的3*512的缓冲区从左到右依次形成一个3*3的窗口.然后将此3*3的窗口放

人一个一维数组中,调用求中值子函数.通过排序得出中值,当此中值不等于窗口中间位置的象素时.用此中值来代替窗VI中间位置的象素灰度值.若此缓冲区处理完毕后,将缓冲区的第一行存入新建的文件中,将第二、第三行分别向上移动一行,若存人新建的文件中的行数小于或等于511(即这样处理的行

数小于或等于511),则从原文件中调入一行作为缓冲区第三行,按上述方法进行直到处理的总行数等于511为止,最后,将缓冲区的第二、三行存人新建的文件,程序流程框图如图1

4 中值滤波快速算法的C语言程序实现

本算法充分利用了上一次处理的结果.采用迭代,逐次逼近的方法得到本次的中值,在一行处理完毕后转人下一行也采用走S型的方法.这样除第一个窗口采用了一伏排序得到中值外,其它的窗口都利

用上伏的窗口的象素删除无用的3个象素后再加人新的3个象素,利用迭代的方法得到本次窗口的中值.这样太大地提高了程序执行的效率。

4.1算法的解释

首先是开辟一个3*512的缓冲区a,在初始化缓冲区时考虑到时间复杂度的问题,所以只初始化了第二、三行,而对第一行只初始化了前三个象素,这样便在缓冲区中可以得到一个3*3的窗口,对此窗口进行排序求中值后得出第一个窗口的中间象素的值.将文件指针定位在2*512处。然后开始循环,当处理的行数小于或等于511时,将缓冲区a中的第二、三行分别向上移动一行变为第一、二行,从文件中读人512个字节作为缓冲区的第三行,并用行数模2的方法设置方向标志k.当k为0时,从左向右移动窗口.当k为1时.从右向左移动窗口.而每一窗口都利用上次的窗口的像素删除无用的3个象素后再加入新的3个象素.利用迭代的方法从上次的中值得到本次的中值。当处理完一行后将缓冲区的第一行存入新建的文件中,最后将缓冲区的第二、三行存入文件中。

4.2 算法代码

// 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_FILE

static char THIS_FILE[] = __FILE__;

#endif

/

// CImageProcessingDoc

IMPLEMENT_DYNCREATE(CImageProcessingDoc, CD

高效快速中值滤波算法c语言,快速中值滤波及c语言实现.docx相关推荐

  1. matlab中基于十字形窗口的滤波算法,#215;字形滤波窗口在Matlab自适应中值滤波算法中的应用 - 21ic中国电子网...

    由于种种原因,图像在生成.传输.变换等过程中往往会受到各种噪声的污染,从而导致图像质量退化.噪声信号的滤波是图像处理的基本任务之一,主要有线性滤波和非线性滤波两种方法.线性滤波方法一般具有低通特性,而 ...

  2. 滑动窗口滤波 c语言,关于中值滤波算法,以及C语言实现(转)

    1.什么是中值滤波? 中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心象素的原来灰度值,它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护 ...

  3. c语言用一维数组做中值滤波,快速中值滤波及c语言实现

    快速中值滤波及c语言实现 学生姓名:刘勇学号: 6100410218 专业班级:数媒101 [摘要]本文讨论了用c语言在微机上实现中值滤波及快速算法,在程序设计的过程中充分考虑到程序运行的时间复杂度和 ...

  4. 关于中值滤波算法,以及C语言实现(转)

    源:关于中值滤波算法,以及C语言实现 1.什么是中值滤波? 中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心象素的原来灰度值,它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制 ...

  5. OpenCV图像处理专栏九 | 基于直方图的快速中值滤波算法

    转载自:https://zhuanlan.zhihu.com/p/98092747  侵删 前言 这是OpenCV图像处理专栏的第9篇文章,主要介绍一个基于直方图的快速中值滤波算法,希望对大家有帮助. ...

  6. 滑动窗口滤波 c语言,关于中值滤波算法 以及C语言实现

    1.什么是中值滤波? 中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心象素的原来灰度值,它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护 ...

  7. 滑动窗口滤波 c语言,关于中值滤波算法,以及C语言实现

    1.什么是中值滤波? 中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心象素的原来灰度值,它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护 ...

  8. c语言均值滤波步骤,关于中值滤波算法,以及C语言实现

    中值滤波是一种非线性的图像平滑方法,与均值滤波器以及其他线性滤波器相比,它能够很好地滤除脉冲噪声,同时又能够保护目标图像边缘.它是一种邻域运算, 类似于卷积,但计算的不是加权求和,而是把邻域中的像素按 ...

  9. 实时高速实现改进型中值滤波算法_爱学术_免费下载

    [摘要]在图像采集和处理过程中会引入噪声,必须先对图像进行预处理.本文介绍一种快速中值滤波算法,该算法在硬件平台上实现实时处理功能.综合考虑,选择现场可编程门阵列(FPGA)作为硬件平台,采用硬件描述 ...

最新文章

  1. pythongui界面实例带注释_python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例...
  2. 在Ubuntu 14.04上设置生产环境可用的Node.js
  3. for循环的执行顺序
  4. 什么数据库比mysql效率高_牛x!一款比传统数据库快 100-1000 倍的数据库,来认识一下?...
  5. SAP中手工配置Delivery打印message
  6. 一文剖析区块链现状:丛林法则下的胜者
  7. BSOJ 2423 -- 【PA2014】Final Zarowki
  8. 小米、360之后,货拉拉被曝已启动造车项目!官方回应
  9. LeetCode 340. 至多包含 K 个不同字符的最长子串
  10. python创意实用案例-python实用案例
  11. MFC视类(view)、框架类(MainFrame)关系梳理
  12. linux mysql 密码策略_Linux Ubuntu 14 MySQL 密码策略(复杂度)和审计插件
  13. phpword生成图表
  14. 61850协议服务器端开发,IEC61850中报告服务端开发
  15. Django思维导图-模板
  16. Java 反射到底慢在哪?
  17. 云空间插html音乐,【详细教程】如何在空间中引用网易云音乐
  18. kali linux查询自己的ip,Kali Linux常用服务配置教程获取IP地址
  19. 这套摄像头方案太适合监控院子了!(附:安装方法+物联卡推荐)
  20. qt 添加Q_OBJECT报错

热门文章

  1. python requests编码的问题_python requests 编码问题
  2. 接口返回的类型是html页面_1.10 PhalApi 2.x 接口文档
  3. 一键复制android代码,兼容安卓和ios实现一键复制内容到剪切板
  4. linux防火墙配置说明,Linux防火墙配置命令参数说明
  5. java bits_一段关于JAVA程序升级的问题(Changing bits)
  6. 某个元素的距离页面的左边距_在机检测圆心距
  7. 2020年前端招聘技术概览
  8. 无法获取签名信息,请上传有效包(110506)
  9. 查看目标主机安装的杀毒软件
  10. mysql keepalived双主双活_mysql高可用架构方案之中的一个(keepalived+主主双活)