| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4711 人关注过本帖
标题:求助:如何用C语言编写将高斯噪声,均匀分布噪声,椒盐噪声加入图像
只看楼主 加入收藏
memoryangle
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2011-3-17
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:8 
求助:如何用C语言编写将高斯噪声,均匀分布噪声,椒盐噪声加入图像
希望哪位高手帮我分析一下,有一小段的代码,但是不知道问题在哪,无法正常运行,说是无法读入程序。很是纠结。有没有哪位有完整的源代码,不胜感激!
搜索更多相关主题的帖子: 不胜感激 源代码 C语言 
2011-03-17 19:54
njkido
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:224
专家分:1184
注 册:2011-3-8
收藏
得分:20 
程序代码:
/***************************************************************

 函数:            gaussmooth

 描述:            实现图像的高斯平滑滤波(模板取σ=2和n=5)

 输入参数说明:          
                  w——图像矩阵的宽(int)
                  h——图像矩阵的高(int)
                  gray——指向图像矩阵的指针(int*)
***************************************************************/
void gaussmooth(int *gray,int w, int h)
{
    //generate gauss model
    int maxtry[]={1,2,3,2,1,
                  2,4,6,4,2,
                  3,6,7,6,3,
                  2,4,6,4,2,
                  1,2,3,2,1};//sigma^2=2,n=5 gauss model
    int *Gauss=new int[25];
    Gauss=maxtry;

    long *grtemp;//the gray vaule after smoothing
    grtemp=new long[w*h];
    for(long j=0;j<h;j++)
    {
      for(long i=0;i<w;i++)
      {
          grtemp[j*w+i]=0;
          for(int countj=j-2;countj<j+3;countj++)
          {      
              if(countj>=0 && countj<h)
              { 
                for(int counti=i-2;counti<i+3;counti++)
                {    if (counti>=0 && counti<w)
                    grtemp[j*w+i]+=Gauss[(countj-(j-2))*5+(counti-(i-2))]*gray[countj*w+counti];
                }  
              }

          }
      }
    }
   
    //normalization
    int sumgauss=0;
    for(int m=0;m<25;m++)
        sumgauss+=Gauss[m];
    for(j=0; j<h;j++)
    {
        for (long i=0;i<w;i++)
        {
            grtemp[j*w+i]=grtemp[j*w+i]/sumgauss;
        }
    
    }
   
    for(j=0; j<h;j++)
    {
        for (long i=0;i<w;i++)
        {
            gray[j*w+i]=grtemp[j*w+i];
        }
    }

    delete[] grtemp;
}

2011-03-18 10:00
memoryangle
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2011-3-17
收藏
得分:0 
不过貌似楼上的回答不全,是实现图像的平滑滤波,而且缺少将均匀分布噪声,椒盐噪声如何导入图像的程序。但是很感激了,起码有些眉目,我还需要将高斯噪声,均匀分布噪声,椒盐噪声这三种噪声滤除的相关程序,楼上的知道的话也告诉我吧。。目前我知道了如何将高斯噪声加入图像的了。。。
2011-03-23 17:17
njkido
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:224
专家分:1184
注 册:2011-3-8
收藏
得分:0 
matlab的源码

《vc++数字图像处理》
2011-03-23 17:37
memoryangle
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2011-3-17
收藏
得分:0 
需要用C语言仿真,所以只能用C语言了。。。
2011-03-23 20:38
suiyuanhxp
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-6-29
收藏
得分:0 
lz 我也在做加噪声的程序 如何加噪声 告诉一声呗
2012-06-29 10:41
et272
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-12-20
收藏
得分:0 
回复 楼主 memoryangle
楼主,求高斯加噪,均匀分布加噪
我有C++椒盐噪声程序
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <cstdlib>
void salt(cv::Mat&, int n=3000);
int main(){   
 cv::Mat image = cv::imread("E:/Image/Lena.jpg");
   salt(image, 10000);   
  cv::namedWindow("image");   
 cv::imshow("image",image);   
 cv::waitKey(0);}
void salt(cv::Mat& image, int n)
{    for(int k=0; k<n; k++)
{        int i = rand()%image.cols;  
      int j = rand()%image.rows;      
          if(image.channels() == 1){            image.at<uchar>(j,i) = 255;        }
else{            
image.at<cv::Vec3b>(j,i)[0] = 255;            image.at<cv::Vec3b>(j,i)[1] = 255;            image.at<cv::Vec3b>(j,i)[2] = 255;        }    }}
2012-12-20 10:53
memoryangle
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2011-3-17
收藏
得分:0 
回复 7楼 et272
谢谢你啦,不过我不用C++,问题已经解决了,感谢你的回复,呵呵~
2012-12-26 10:38
tianjun2
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-4-23
收藏
得分:0 
回复 8楼 memoryangle
能给我把高斯噪声和椒盐噪声的代码发给我吗?我很着急啊!谢谢
2013-04-23 09:58
快速回复:求助:如何用C语言编写将高斯噪声,均匀分布噪声,椒盐噪声加入图像
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017768 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved