Dakaren.COM: Stay hungry, stay foolish~ 设为首页 | 加入收藏 |注册管理

达卡人技术博客™
        dakaren技术博客,博广天下–源码算法|图像增强|经验总结|设计方案|学习教程! >>> 本站作为一个技术站点,并不是简单复制转载一些文章而已,所以不可能每天都更新,也没有那么多精力,希望体谅,但我们会努力和大家交流最有用的东西。也欢迎您来稿来信,共同进步。谢谢dajia's支持! 给大家推荐一个不错的CV网站>>计算机视觉论坛:http://cvchina.net

  • 编程开发
  • 图像处理
  • 算法源码
  • C++技术
  • 经验总结
  • 数据库经
现在的位置: 首页 >图像处理>正文
RSS
上一篇 下一篇
imageps category
数字图像处理(二)——中值滤波
发表于523 天前 ⁄ 图像处理 ⁄ 评论关闭 ⁄ 被围观 319 views+

中值滤波(median filter)是一种有效消除椒盐噪声的算法。
基本原理是,对图像中所有点进行遍历,对于每个点,取以其为中心的 n * n 的矩形区域,对矩形区域中点的灰度值进行排序,取其中间值替换当前点。
这样,如果这个点灰度值与周围点相差较大的话,就可以将其平滑化。
当然,这里要求 n 是个大于 1 的奇数。

在这里,我对算法进行了优化,使只有当前点是矩形区域灰度值的最大或者最小值的时候才进行替换,这样效果好了很多。
原始图像:

lena.jpg

椒盐噪声:

output.jpg

中值滤波后:

output2.jpg

可以看到,图像损失很小,只有边缘处有小的细节损失。同时,由于所加的噪点比较密集,少数地方仍然有噪点,这是因为矩形区域噪点太多,以至于中值本身也是个噪点了。

源代码:

    BmpPixmap &
BmpPixmap::median_filter (int n)
{
    assert (n >= 3 && n % 2);

    int ii, jj, nn;
    Byte model [3][n * n];
    BmpPixmap *temp = new BmpPixmap (*this);
    for (i = n / 2; i < height - n / 2; i++) {
        for (j = n / 2; j < width - n / 2; j++) {
            /*-----------------------------------------------------------------------------
             *  Put n*n pixels around current pixels to the model.
             *-----------------------------------------------------------------------------*/
            for (ii = i - n / 2, nn = 0; ii <= i + n / 2; ii++) {
                for (jj = j - n / 2; jj <= j + n / 2; jj++, nn++) {
                    model [0][nn] = pdata [ii][jj]->get_blue ();
                    model [1][nn] = pdata [ii][jj]->get_green ();
                    model [2][nn] = pdata [ii][jj]->get_red ();
                }
            }
            /*-----------------------------------------------------------------------------
             *  Sort the model.
             *-----------------------------------------------------------------------------*/
            qsort (model [0], nn, sizeof (Byte), cmp_Byte);
            qsort (model [1], nn, sizeof (Byte), cmp_Byte);
            qsort (model [2], nn, sizeof (Byte), cmp_Byte);

            if (pdata [i][j]->get_blue () == model [0][nn - 1] ||
                    pdata [i][j]->get_blue () == model [0][0] ||
                    pdata [i][j]->get_green () == model [1][nn - 1] ||
                    pdata [i][j]->get_green () == model [1][0] ||
                    pdata [i][j]->get_red () == model [2][nn - 1] ||
                    pdata [i][j]->get_red () == model [2][0])
            {
                temp->pdata [i][j]->set (model [0][nn / 2], model [1][nn / 2], model [2][nn / 2]);
            }
        }
    }
    return *temp;
}  /* -----  end of method BmpPixmap::median_filter  ----- */

转载请注明:转自K.I.S.S. – 简单哲学 – 数字图像处理(二)——中值滤波

Related posts:

  1. 数字图像处理(四)——均值滤波
  2. Wiener2滤波C++代码
  3. 常用的数字图像去噪典型算法及matlab实现
固定链接: 数字图像处理(二)——中值滤波 | 达卡人技术博客 +复制链接

作者: dakaren

该日志由 dakaren 于2010年09月01日发表在图像处理分类下,
原创文章转载请注明: 数字图像处理(二)——中值滤波 | 达卡人技术博客
关键字: 滤波
【上篇】数字图像处理(一)——椒盐噪声
【下篇】数字图像处理(三)——高斯噪声

您可能还会对这些文章感兴趣!

  1. 常用的数字图像去噪典型算法及matlab实现
  2. Wiener2滤波C++代码
  3. 数字图像处理(四)——均值滤波
    Wiener2滤波C++代码
    常用的数字图像去噪典型算法及matlab实现
    数字图像处理(四)——均值滤波

报歉!评论已关闭.

  • 最新文章
        程序版本管理:Windows下SVN S C++开源库详细介绍 C++ string 详解 统计程序运行时间的C++源代码 利用GPU实时绘制水墨画效果 转载 算法的力量 李开复__转自李开复网 CvChina计算机视觉论坛代找图像视 超酷iPhone增强现实软件:实时翻译 常用的数字图像去噪典型算法及matl Wiener2滤波C++代码
  • 热门文章
        统计程序运行时间的C++源代码 去除MFC中"Untitled-MyApp" 利用GPU实时绘制水墨画效果 转载 两种方法使用VC遍历文件夹下所有 新东方密传的高效背单词方法。这样 粒子滤波简介以及相关技术探讨 VC中利用多线程技术实现线程之间 ADO中_variant_t变量的使用与转 msvcr80d.dll--处未处理的异常: 0x wordpress网站用户个性图像设置技巧
  • 随机文章
        • SVM学习之五——SMO算法分析
        • 数据库相关:远程连接SQLServe
        • 【转】C/C++:程序的内存分配方式
        • ADO中_variant_t变量的使用与转
        • 常用的数字图像去噪典型算法及matl
        • Linux 和UNIX 的新手培训教程
        • 老手是这样教新手编程的
        • SVM学习之二——简单世界和复杂
        • 毕业论文答辩之PPT制作注意要领
        • C++开源库详细介绍

推荐栏目

    jottings category
    情感随笔

    简单记录生活的点点滴滴,很随意,随心而动……

    cpp category
    C++技术

    C/C++技术信息,相关技术,该语言的学习资料及文档,以及学习编程经验分享

博文分类

标签

.NET ARM C cvchina GSL lib Linux OpenCV SVM Unix VC Web Windows 二值化 关键字 卡尔曼滤波 压力测试 名师介绍 噪声 图像变换 图像增强 图像处理 多线程 学习 嵌入式 开源 插值 数据库 数据挖掘 文件 机器学习 椒盐噪声 源码 滤波 界面美化 算法 粒子滤波 经验 调试 远程连接 通信 随感 随笔 面试经验 高斯

 

2012 二月
一 二 三 四 五 六 日
« 十一    
 12345
6789101112
13141516171819
20212223242526
272829  

分类目录

  • C++技术
  • 名人名站
  • 图像处理
  • 情感随笔
  • 技术资讯
  • 数据库经
  • 算法源码
  • 经验总结
  • 编程开发
  • 网络技术

最新评论

  • 又快又好的减肥方法:
    博客不错 加油
  • e路航:
    学习LZ好榜样哟
  • 好买吧:
    如果再给我一次机会我会说我爱
  • 肤美灵洗面奶:
    过来学习下·······
  • 随风飘荡:
    博主的文章很棒,支持! ht
  • 靓邦素:
    文章很不错 值得学习 呵呵
  • lexia 3:
    好文章!值得一看
  • 购物吧:
  • 伊丽莎白雅顿香水:
    很不错的,顶一下下
  • 什么减肥药最有效果:
    很少关注

网站统计

    日志总数:134篇
    评论总数:389条
    分类总数:10个
    标签总数:63个
    友情链接:23个
    网站运行:1135天
最后更新:2011年11月17日
  • 关于我们
  • 作品展示
  • 校园信息
  • 留下足迹

返回首页

Copyright © 2010-2011 达卡人技术博客  保留所有权利.  Theme by Robin   基于 WordPress 技术创建   84次查询   鄂ICP备09014346号 
不想听你唠叨×
  • 我同学说﹕我搁的洗衣粉太多了。另外一个问﹕什么?你哥的媳妇儿太多了? No related posts.
  • 站点搬入新空间,欢迎来访 No related posts.
  • 我有个同学黑了些,她bf又太白了些,有天宿舍里得毒舌天后突然对她冒出一句﹕”你们这样不行,你们会...