灰度图像中值滤波

中值滤波是一种非线性型号处理方法,将每个像素的灰度值用其领域的中值代替。中值是指领域内奇数个数据按大小排序后处于中心位置的那个数。中值滤波能够在去除椒盐噪声的同时保持边缘清晰。

中值滤波是一个比较耗时的算法,为了提高速度,在程序设计时,并不需要对领域内所有点排序,只需要找到中值即可,因此这里只对前5个点进行了排序。

// 中值滤波

// 1. pImageData 图像数据

// 2. nWidth 图像宽度

// 3. nHeight 图像高度

// 4. nWidthStep 图像行大小

bool SmoothMedian(unsigned char *pImageData, int nWidth, int nHeight, int nWidthStep)

{

int i = 0;

int j = 0;

int m = 0;

int n = 0;

int nValue = 0;

unsigned char *pLine[3] = { NULL, NULL, NULL };

unsigned char chTempValue = 0;

unsigned char chTempArray[9];

for (j = 1; j < nHeight - 1; j++)

{

pLine[0] = pImageData + nWidthStep * (j - 1);

pLine[1] = pImageData + nWidthStep * j;

pLine[2] = pImageData + nWidthStep * (j + 1);

for (i = 1; i < nWidth - 1; i++)

{

chTempArray[0] = pLine[0][i-1];

chTempArray[1] = pLine[0][i];

chTempArray[2] = pLine[0][i+1];

chTempArray[3] = pLine[1][i-1];

chTempArray[4] = pLine[1][i];

chTempArray[5] = pLine[1][i+1];

chTempArray[6] = pLine[2][i-1];

chTempArray[7] = pLine[2][i];

chTempArray[8] = pLine[2][i+1];

// 取中值

for (m = 0; m < 5; m++)

{

for (n = m + 1; n < 9; n++)

{

if (chTempArray[m] > chTempArray[n])

{

chTempValue = chTempArray[m];

chTempArray[m] = chTempArray[n];

chTempArray[n] = chTempValue;

}

}

}

pLine[0][i-1] = chTempArray[4];

}

}

return true;

}

灰度图像中值滤波c语言编程,灰度图像中值滤波相关推荐

  1. c语言 编程 函数声明,C语言编程开发中的函数声明与定义

    函数功能的使用在许多编程开发语言中都是有不同的使用方法的,而今天我们就一起来了解一下,在C语言编程开发中的函数功能使用与定义. 对函数的"定义"和"声明"不是一 ...

  2. 梯形图 c语言代码生成,PLC梯形图中内嵌C语言编程的实现

    针对现有梯形图语言适合实现逻辑控制而不适合实现复杂算法这一问题,从基于构件技术的梯形图实现原理出发,对构件的属性定义以及编译方法进行了分析,提出了一种PLC梯形图内嵌C语言实现混合编程的方法,并在CA ...

  3. c语言错误出在花括号上,初学者在学习c语言编程过程中常出现的错误分析

    在高校经常中开设的第一科关于程序设计的语言就是C语言,这种语言有很多优势,比如说使用比较灵活,功能比较强大,可以用于编写程序.软件,但是对于初学者来说, 1 0 8 应用方法论 22第霸 0赫 6乱 ...

  4. c语言中错误executing,C语言编程中常见问题解读.doc

    C语言编程中常见问题解读 为什么vc6打开的文件却不能编译1 为什么一个vc6工程中有两个main函数不能编译成功?我想写两个程序怎么办?2 为什么v6不能编译程序,生成信息说compile和link ...

  5. c语言编程单片机中的sbit,单片机sfr和sbit的用法

    描述 单片机sfr和sbit详解 sfr用于将一个单片机的特殊功能寄存器(special function register)赋值给一个变量,这样在后面的程序中就可以中这个变量指引(refer to) ...

  6. c语言编程单片机中的sbit,单片机c语言的sbit和sfr

    bit和int char之类的差不多,只不过char=8位, bit=1位而已.都是变量,编译器在编译过程中分配地址.除非你指定,否则这个地址是随机的.这个地址是整个可寻址空间,RAM+FLASH+扩 ...

  7. c语言中回显,C语言编程中实现输入密码回显星号

    C语言编程中实现输入密码回显星号 众所周知,一个良好的密码输入程序是在用户输入密码时不显示密码本身,只回显星号. 或者,在安全性要求更高的某些程序中,什么都不显示.那么,在C语言中如何实现它呢? ge ...

  8. PHP代码中的情话,php语言编程情话

    为什么PHP是最好的编程语言呢 没有最好只有最合适. 无故比较语言的优劣是没有意义的. PHP是目前最先进的编程语言吗 Java和PHP语言两者各有千秋,都有自己独有的特点和应用场景,两者的对比. 1 ...

  9. n个数中找最大数c语言,N个数中找到第K大的数值(C语实现)

    N个数中找到第K大的数值(C语实现) N个数中找到第K大的数值(C语实现) 研究生了,选了计算机算法这门课程,这周布置了一个作业,在OJ上做:**N个数中找到第K大的数值**.大一简单学过C语言基础, ...

最新文章

  1. 1.Jenkins 在windows下的安装与配置
  2. python egg
  3. 海龟交易法则15_万事俱备
  4. python骗局-代购被骗?Python带你征服骗子!直接干掉他的网站!亲身经历!
  5. 排序算法之四 归并排序(C++版本)
  6. C++中方法的(值参数、ref、out、params)详解
  7. 常见的下载工具有哪些?BT下载软件哪个好
  8. 微信小程序tabbar消失_微信小程序tabBar底部导航 不显示问题解析
  9. 祛痘收缩毛孔的简单方法 - 生活至上,美容至尚!
  10. 微众银行贯彻普惠金融 探索金融扶贫新模式
  11. 2022考研笔记-英语(五种记忆单词的方法)
  12. 01:高斯噪声和椒盐噪声
  13. Failed to push the item
  14. 不动产纠纷包括房屋买卖合同吗
  15. 谷歌联合印企狙击华为鸿蒙OS:推出轻量版安卓系统打造智能手机
  16. STM32+W5500以太网模块
  17. 软件测试的分类(脑图)
  18. android资源文件转bitmap,Android 之 Bitmap 和 File 相互转换
  19. 电子代工和模具选择注意点
  20. OpenGL—直线与圆的绘制

热门文章

  1. 浅谈智能问答系统发展及在高校中需求现状
  2. Tushare原学习文档(二投资参考数据)
  3. 织梦 plus/download.php,织梦DedeCMS 5.7SP1 /plus/download.php url重定向漏洞的解决方法
  4. Java对接微信公众号模板消息推送
  5. Java获取IP地址的多种方法
  6. 关于黑苹果 的安装方法
  7. python获取dos窗口/cmd/pycharm Terminal命令返回详情
  8. 2万字Linux实用常用命令总结,收藏不吃灰~
  9. PID最通俗的理解和参数设置口诀
  10. Java8 StreamFilter