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

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

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

//code written by Kay(zhang_xiaoli@163.com) 2011/03/17
BOOL WienerFilter(WORD *pData, int iWid, int iHgh, int ihoodW, int ihoodH)
{
 if (pData == NULL)
 {
  return FALSE;
 }
 int iSize = iWid*iHgh;
 float *pKernel=new float[ihoodW*ihoodH];
 for ( int i = 0 ; i < ihoodW*ihoodH ; i ++ ) { pKernel[i] = (float)1/(ihoodW*ihoodH);}

 float *pMean=new float[iSize];
 float *pVal =new float[iSize];
 for ( i = 0 ; i < iSize ; i ++ )
 { pMean[i] = (float)(pData[i]*pData[i]);}
 Filter2(pVal,pMean,iWid,iHgh,pKernel,ihoodW,ihoodH);
 Filter2(pMean,pData,iWid,iHgh,pKernel,ihoodW,ihoodH);
 for ( i = 0 ; i < iSize ; i ++ )
 { pVal[i] = pVal[i]-(pMean[i]*pMean[i]);}

 //temp for mean
 double dMean=0;
 for ( i = 0 ; i < iSize ; i ++ )
 {
  dMean+=(double)pVal[i]/iHgh;
 }
 dMean=dMean/iWid;
 
 for ( i = 0 ; i < iSize ; i ++ )
 {
  pVal[i]=(pVal[i]-(float)dMean)>0?(pVal[i]-(float)dMean):0;
  float ftemp = (pData[i]-pMean[i])*pVal[i]/(pVal[i]+(float)dMean)+pMean[i];
  if (ftemp<0)    {ftemp = 0; }
  if (ftemp > (GRAYLEVEL-1)) {ftemp = GRAYLEVEL-1;}
  pData[i] = (WORD)ftemp;
 }

 delete pKernel;
 delete pMean;
 delete pVal;
 return TRUE;
}

void Filter2(float *pRes,WORD *pData, int iWid, int iHgh, float *pKernel, int iKWid, int iKHgh)
{
 float ftemp=0;
 for ( int j = 0 ; j < iHgh ; j ++ )
 {
  for ( int i = 0 ; i < iWid ; i ++ )
  {
   ftemp=0;
   for ( int x = 0 ; x < iKWid ; x ++ )
   {
    for ( int y = 0 ; y < iKHgh ; y ++ )
    {
     int ix=(x-iKWid/2+i)<0?0:(x-iKWid/2+i);
     int iy=(y-iKHgh/2+j)<0?0:(y-iKHgh/2+j);
     if ((ix+1)>iWid) {ix=iWid-1;}
     if ((iy+1)>iHgh) {iy=iHgh-1;}
     ftemp+=pData[ix+iy*iWid]*pKernel[x+y*iKWid];
    }
   }
   pRes[j*iWid+i] = ftemp;
  }
 }
}
void Filter2(float *pRes,float *pData, int iWid, int iHgh, float *pKernel, int iKWid, int iKHgh)
{
 float ftemp=0;
 for ( int j = 0 ; j < iHgh ; j ++ )
 {
  for ( int i = 0 ; i < iWid ; i ++ )
  {
   ftemp=0;
   for ( int x = 0 ; x < iKWid ; x ++ )
   {
    for ( int y = 0 ; y < iKHgh ; y ++ )
    {
     int ix=(x-iKWid/2+i)<0?0:(x-iKWid/2+i);
     int iy=(y-iKHgh/2+j)<0?0:(y-iKHgh/2+j);
     if ((ix+1)>iWid) {ix=iWid-1;}
     if ((iy+1)>iHgh) {iy=iHgh-1;}
     ftemp+=pData[ix+iy*iWid]*pKernel[x+y*iKWid];
    }
   }
   pRes[j*iWid+i] = ftemp;
  }
 }
}

Related posts:

  1. 常用的数字图像去噪典型算法及matlab实现
  2. 数字图像处理(一)——椒盐噪声
  3. 数字图像处理(二)——中值滤波
  4. ZBar – 用电脑摄像头扫描条形码/二维码
  5. C#图片处理基本应用(裁剪,缩放,清晰度,水印)[zz]
  6. SIFT特征匹配算法简介
固定链接: Wiener2滤波C++代码 | 达卡人技术博客 +复制链接

作者: dakaren

该日志由 dakaren 于2011年06月02日发表在图像处理分类下,
原创文章转载请注明: Wiener2滤波C++代码 | 达卡人技术博客
关键字: VC, 图像处理, 椒盐噪声, 滤波
【上篇】字符串处理两例,面试中好像经常会考这样的题目
【下篇】常用的数字图像去噪典型算法及matlab实现

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

  1. C++开源库详细介绍
  2. 统计程序运行时间的C++源代码
  3. CvChina计算机视觉论坛代找图像视觉方面兼职
  4. 常用的数字图像去噪典型算法及matlab实现
  5. 排序概述及常用排序算法
  6. c++操作符优先级表【基础知识】
  7. C++类型转换总结
  8. Visual Studio + Visual Assist 常用快捷键
    Scribble2
    两种方法使用VC遍历文件夹下所有文件和文件夹
    vs插件
    排序概述及常用排序算法

报歉!评论已关闭.

  • 最新文章
        程序版本管理: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网站用户个性图像设置技巧
  • 随机文章
        • vc6/vs2003转到vs2005 2008出现的错
        • 数字图像处理(三)——高斯噪声
        • 神奇的C语言位运算教程
        • ZBar – 用电脑摄像头扫描条形码
        • SVM学习之四——支持向量机的原
        • Chih-Jen Lin's Home Page
        • 统计程序运行时间的C++源代码
        • 两种方法使用VC遍历文件夹下所有
        • 一种基于OpenCV的运动目标检测跟
        • 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个
    网站运行:1152天
最后更新:2011年11月17日
  • 关于我们
  • 作品展示
  • 校园信息
  • 留下足迹

返回首页

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