灰度图像中值滤波

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

中值滤波是一个比较耗时的算法,为了提高速度,在程序设计时,并不需要对领域内所有点排序,只需要找到中值即可,因此这里只对前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. 关于加载Fashion MNIST数据集时可能会出现的问题
  2. 分布式技术追踪 2017年第十五期
  3. 3、Python字典集合
  4. matlab中怎么求矩阵的特征值和特征向量
  5. 如何快速在oracle内生成数据,[Oracle]快速生成大量模拟数据的方法
  6. 走进webpack(1)--环境拆分及模块化
  7. composer 路径_深入学习Composer原理(三)
  8. 【C语言】用指针作为形参完成数据的升序排列
  9. 写在这一年实习的总结
  10. BZOJ 1597 [Usaco2008 Mar] 土地购买
  11. 毕设题目:Matlab图像评价
  12. Windows系统如何远程桌面连接
  13. 如何规范地编写一个MATLAB函数文件
  14. 赶路人-----李小晓
  15. 域控制器组策略:域用户加入域,默认加入本地管理员组
  16. azkaban 调度任务一直处于preparing状态
  17. 单缓冲、双缓冲、循环缓冲
  18. 服务器双机热备软件是什么?有什么作用?有哪些?
  19. 三亚将建智慧旅游大数据应用平台
  20. 泰拉瑞亚显示已连接服务器失败,打开泰拉瑞亚提示网络异常或者连接不上

热门文章

  1. 知云文献翻译阅读软件-跨页内容选中翻译操作
  2. PHONEGAP BUILD
  3. 知道一点怎么设直线方程_知道两个点的坐标怎么快速求出直线的方程
  4. 全国285个地级市平均房价数据(2000-2021年)
  5. php平台cdn搭建,PHP 搭建一个网站配置CDN产品?
  6. 2021年计算机学硕考研c9,【JRs观点】学姐3000字记录考研8个月心得及作息时间表,献给2021考研同学,从二本到C9...
  7. PStools工具执行本地/远程PC管理任务
  8. 基于STM32F103ZET6的(单/三)路HC-SR04超声波测距+TFTLCD实时显示+距离报警
  9. Kotlin中String的常用方法
  10. getvod.php_PHPvod模板开发手册PHPvod模板开发手册.pdf