Example #1
0
void addNoise(InputArray src_, OutputArray dest_, const double sigma, const double sprate, const int seed)
{
	if(seed!=0) cv::theRNG().state = seed;
	if (dest_.empty() || dest_.size() != src_.size() || dest_.type() != src_.type()) dest_.create(src_.size(), src_.type());
	Mat src = src_.getMat();
	Mat dest = dest_.getMat();
	if (src.channels() == 1)
	{
		addNoiseMono(src, dest, sigma);
		if (sprate != 0)addNoiseSoltPepperMono(dest, dest, sprate, seed);
		return;
	}
	else
	{
		vector<Mat> s(src.channels());
		vector<Mat> d(src.channels());
		split(src, s);
		for (int i = 0; i < src.channels(); i++)
		{
			addNoiseMono(s[i], d[i], sigma);
			if (sprate != 0)addNoiseSoltPepperMono(d[i], d[i], sprate, seed);
		}
		cv::merge(d, dest);
	}
	if (seed != 0) cv::theRNG().state = cv::getTickCount();
}
Example #2
0
void addNoise(Mat&src, Mat& dest, double sigma, double sprate)
{
    if(src.channels()==1)
    {
        addNoiseMono(src,dest,sigma);
        if(sprate!=0)addNoiseSoltPepperMono(dest,dest,sprate);
        return;
    }
    else
    {
        vector<Mat> s(src.channels());
        vector<Mat> d(src.channels());
        split(src,s);
        for(int i=0;i<src.channels();i++)
        {
            addNoiseMono(s[i],d[i],sigma);
            if(sprate!=0)addNoiseSoltPepperMono(d[i],d[i],sprate);
        }
        cv::merge(d,dest);
    }
}